001package com.box.sdkgen.schemas.termsofserviceuserstatus; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.internal.utils.DateTimeUtils; 006import com.box.sdkgen.schemas.termsofservicebase.TermsOfServiceBase; 007import com.box.sdkgen.schemas.usermini.UserMini; 008import com.box.sdkgen.serialization.json.EnumWrapper; 009import com.fasterxml.jackson.annotation.JsonFilter; 010import com.fasterxml.jackson.annotation.JsonProperty; 011import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 012import com.fasterxml.jackson.databind.annotation.JsonSerialize; 013import java.time.OffsetDateTime; 014import java.util.Objects; 015 016/** The association between a Terms of Service and a user. */ 017@JsonFilter("nullablePropertyFilter") 018public class TermsOfServiceUserStatus extends SerializableObject { 019 020 /** The unique identifier for this terms of service user status. */ 021 protected final String id; 022 023 /** The value will always be `terms_of_service_user_status`. */ 024 @JsonDeserialize( 025 using = TermsOfServiceUserStatusTypeField.TermsOfServiceUserStatusTypeFieldDeserializer.class) 026 @JsonSerialize( 027 using = TermsOfServiceUserStatusTypeField.TermsOfServiceUserStatusTypeFieldSerializer.class) 028 protected EnumWrapper<TermsOfServiceUserStatusTypeField> type; 029 030 protected TermsOfServiceBase tos; 031 032 protected UserMini user; 033 034 /** If the user has accepted the terms of services. */ 035 @JsonProperty("is_accepted") 036 protected Boolean isAccepted; 037 038 /** When the legal item was created. */ 039 @JsonProperty("created_at") 040 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 041 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 042 protected OffsetDateTime createdAt; 043 044 /** When the legal item was modified. */ 045 @JsonProperty("modified_at") 046 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 047 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 048 protected OffsetDateTime modifiedAt; 049 050 public TermsOfServiceUserStatus(@JsonProperty("id") String id) { 051 super(); 052 this.id = id; 053 this.type = 054 new EnumWrapper<TermsOfServiceUserStatusTypeField>( 055 TermsOfServiceUserStatusTypeField.TERMS_OF_SERVICE_USER_STATUS); 056 } 057 058 protected TermsOfServiceUserStatus(Builder builder) { 059 super(); 060 this.id = builder.id; 061 this.type = builder.type; 062 this.tos = builder.tos; 063 this.user = builder.user; 064 this.isAccepted = builder.isAccepted; 065 this.createdAt = builder.createdAt; 066 this.modifiedAt = builder.modifiedAt; 067 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 068 } 069 070 public String getId() { 071 return id; 072 } 073 074 public EnumWrapper<TermsOfServiceUserStatusTypeField> getType() { 075 return type; 076 } 077 078 public TermsOfServiceBase getTos() { 079 return tos; 080 } 081 082 public UserMini getUser() { 083 return user; 084 } 085 086 public Boolean getIsAccepted() { 087 return isAccepted; 088 } 089 090 public OffsetDateTime getCreatedAt() { 091 return createdAt; 092 } 093 094 public OffsetDateTime getModifiedAt() { 095 return modifiedAt; 096 } 097 098 @Override 099 public boolean equals(Object o) { 100 if (this == o) { 101 return true; 102 } 103 if (o == null || getClass() != o.getClass()) { 104 return false; 105 } 106 TermsOfServiceUserStatus casted = (TermsOfServiceUserStatus) o; 107 return Objects.equals(id, casted.id) 108 && Objects.equals(type, casted.type) 109 && Objects.equals(tos, casted.tos) 110 && Objects.equals(user, casted.user) 111 && Objects.equals(isAccepted, casted.isAccepted) 112 && Objects.equals(createdAt, casted.createdAt) 113 && Objects.equals(modifiedAt, casted.modifiedAt); 114 } 115 116 @Override 117 public int hashCode() { 118 return Objects.hash(id, type, tos, user, isAccepted, createdAt, modifiedAt); 119 } 120 121 @Override 122 public String toString() { 123 return "TermsOfServiceUserStatus{" 124 + "id='" 125 + id 126 + '\'' 127 + ", " 128 + "type='" 129 + type 130 + '\'' 131 + ", " 132 + "tos='" 133 + tos 134 + '\'' 135 + ", " 136 + "user='" 137 + user 138 + '\'' 139 + ", " 140 + "isAccepted='" 141 + isAccepted 142 + '\'' 143 + ", " 144 + "createdAt='" 145 + createdAt 146 + '\'' 147 + ", " 148 + "modifiedAt='" 149 + modifiedAt 150 + '\'' 151 + "}"; 152 } 153 154 public static class Builder extends NullableFieldTracker { 155 156 protected final String id; 157 158 protected EnumWrapper<TermsOfServiceUserStatusTypeField> type; 159 160 protected TermsOfServiceBase tos; 161 162 protected UserMini user; 163 164 protected Boolean isAccepted; 165 166 protected OffsetDateTime createdAt; 167 168 protected OffsetDateTime modifiedAt; 169 170 public Builder(String id) { 171 super(); 172 this.id = id; 173 } 174 175 public Builder type(TermsOfServiceUserStatusTypeField type) { 176 this.type = new EnumWrapper<TermsOfServiceUserStatusTypeField>(type); 177 return this; 178 } 179 180 public Builder type(EnumWrapper<TermsOfServiceUserStatusTypeField> type) { 181 this.type = type; 182 return this; 183 } 184 185 public Builder tos(TermsOfServiceBase tos) { 186 this.tos = tos; 187 return this; 188 } 189 190 public Builder user(UserMini user) { 191 this.user = user; 192 return this; 193 } 194 195 public Builder isAccepted(Boolean isAccepted) { 196 this.isAccepted = isAccepted; 197 return this; 198 } 199 200 public Builder createdAt(OffsetDateTime createdAt) { 201 this.createdAt = createdAt; 202 return this; 203 } 204 205 public Builder modifiedAt(OffsetDateTime modifiedAt) { 206 this.modifiedAt = modifiedAt; 207 return this; 208 } 209 210 public TermsOfServiceUserStatus build() { 211 if (this.type == null) { 212 this.type = 213 new EnumWrapper<TermsOfServiceUserStatusTypeField>( 214 TermsOfServiceUserStatusTypeField.TERMS_OF_SERVICE_USER_STATUS); 215 } 216 return new TermsOfServiceUserStatus(this); 217 } 218 } 219}