001package com.box.sdkgen.schemas.fileversion; 002 003import com.box.sdkgen.internal.Nullable; 004import com.box.sdkgen.internal.utils.DateTimeUtils; 005import com.box.sdkgen.schemas.fileversionbase.FileVersionBaseTypeField; 006import com.box.sdkgen.schemas.fileversionmini.FileVersionMini; 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/** A standard representation of a file version. */ 017@JsonFilter("nullablePropertyFilter") 018public class FileVersion extends FileVersionMini { 019 020 /** The name of the file version. */ 021 protected String name; 022 023 /** Size of the file version in bytes. */ 024 protected Long size; 025 026 /** When the file version object was created. */ 027 @JsonProperty("created_at") 028 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 029 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 030 protected OffsetDateTime createdAt; 031 032 /** When the file version object was last updated. */ 033 @JsonProperty("modified_at") 034 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 035 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 036 protected OffsetDateTime modifiedAt; 037 038 @JsonProperty("modified_by") 039 protected UserMini modifiedBy; 040 041 /** When the file version object was trashed. */ 042 @JsonProperty("trashed_at") 043 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 044 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 045 @Nullable 046 protected OffsetDateTime trashedAt; 047 048 @JsonProperty("trashed_by") 049 protected UserMini trashedBy; 050 051 /** When the file version was restored from the trash. */ 052 @JsonProperty("restored_at") 053 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 054 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 055 @Nullable 056 protected OffsetDateTime restoredAt; 057 058 @JsonProperty("restored_by") 059 protected UserMini restoredBy; 060 061 /** When the file version object will be permanently deleted. */ 062 @JsonProperty("purged_at") 063 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 064 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 065 @Nullable 066 protected OffsetDateTime purgedAt; 067 068 @JsonProperty("uploader_display_name") 069 protected String uploaderDisplayName; 070 071 public FileVersion(@JsonProperty("id") String id) { 072 super(id); 073 } 074 075 protected FileVersion(Builder builder) { 076 super(builder); 077 this.name = builder.name; 078 this.size = builder.size; 079 this.createdAt = builder.createdAt; 080 this.modifiedAt = builder.modifiedAt; 081 this.modifiedBy = builder.modifiedBy; 082 this.trashedAt = builder.trashedAt; 083 this.trashedBy = builder.trashedBy; 084 this.restoredAt = builder.restoredAt; 085 this.restoredBy = builder.restoredBy; 086 this.purgedAt = builder.purgedAt; 087 this.uploaderDisplayName = builder.uploaderDisplayName; 088 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 089 } 090 091 public String getName() { 092 return name; 093 } 094 095 public Long getSize() { 096 return size; 097 } 098 099 public OffsetDateTime getCreatedAt() { 100 return createdAt; 101 } 102 103 public OffsetDateTime getModifiedAt() { 104 return modifiedAt; 105 } 106 107 public UserMini getModifiedBy() { 108 return modifiedBy; 109 } 110 111 public OffsetDateTime getTrashedAt() { 112 return trashedAt; 113 } 114 115 public UserMini getTrashedBy() { 116 return trashedBy; 117 } 118 119 public OffsetDateTime getRestoredAt() { 120 return restoredAt; 121 } 122 123 public UserMini getRestoredBy() { 124 return restoredBy; 125 } 126 127 public OffsetDateTime getPurgedAt() { 128 return purgedAt; 129 } 130 131 public String getUploaderDisplayName() { 132 return uploaderDisplayName; 133 } 134 135 @Override 136 public boolean equals(Object o) { 137 if (this == o) { 138 return true; 139 } 140 if (o == null || getClass() != o.getClass()) { 141 return false; 142 } 143 FileVersion casted = (FileVersion) o; 144 return Objects.equals(id, casted.id) 145 && Objects.equals(type, casted.type) 146 && Objects.equals(sha1, casted.sha1) 147 && Objects.equals(name, casted.name) 148 && Objects.equals(size, casted.size) 149 && Objects.equals(createdAt, casted.createdAt) 150 && Objects.equals(modifiedAt, casted.modifiedAt) 151 && Objects.equals(modifiedBy, casted.modifiedBy) 152 && Objects.equals(trashedAt, casted.trashedAt) 153 && Objects.equals(trashedBy, casted.trashedBy) 154 && Objects.equals(restoredAt, casted.restoredAt) 155 && Objects.equals(restoredBy, casted.restoredBy) 156 && Objects.equals(purgedAt, casted.purgedAt) 157 && Objects.equals(uploaderDisplayName, casted.uploaderDisplayName); 158 } 159 160 @Override 161 public int hashCode() { 162 return Objects.hash( 163 id, 164 type, 165 sha1, 166 name, 167 size, 168 createdAt, 169 modifiedAt, 170 modifiedBy, 171 trashedAt, 172 trashedBy, 173 restoredAt, 174 restoredBy, 175 purgedAt, 176 uploaderDisplayName); 177 } 178 179 @Override 180 public String toString() { 181 return "FileVersion{" 182 + "id='" 183 + id 184 + '\'' 185 + ", " 186 + "type='" 187 + type 188 + '\'' 189 + ", " 190 + "sha1='" 191 + sha1 192 + '\'' 193 + ", " 194 + "name='" 195 + name 196 + '\'' 197 + ", " 198 + "size='" 199 + size 200 + '\'' 201 + ", " 202 + "createdAt='" 203 + createdAt 204 + '\'' 205 + ", " 206 + "modifiedAt='" 207 + modifiedAt 208 + '\'' 209 + ", " 210 + "modifiedBy='" 211 + modifiedBy 212 + '\'' 213 + ", " 214 + "trashedAt='" 215 + trashedAt 216 + '\'' 217 + ", " 218 + "trashedBy='" 219 + trashedBy 220 + '\'' 221 + ", " 222 + "restoredAt='" 223 + restoredAt 224 + '\'' 225 + ", " 226 + "restoredBy='" 227 + restoredBy 228 + '\'' 229 + ", " 230 + "purgedAt='" 231 + purgedAt 232 + '\'' 233 + ", " 234 + "uploaderDisplayName='" 235 + uploaderDisplayName 236 + '\'' 237 + "}"; 238 } 239 240 public static class Builder extends FileVersionMini.Builder { 241 242 protected String name; 243 244 protected Long size; 245 246 protected OffsetDateTime createdAt; 247 248 protected OffsetDateTime modifiedAt; 249 250 protected UserMini modifiedBy; 251 252 protected OffsetDateTime trashedAt; 253 254 protected UserMini trashedBy; 255 256 protected OffsetDateTime restoredAt; 257 258 protected UserMini restoredBy; 259 260 protected OffsetDateTime purgedAt; 261 262 protected String uploaderDisplayName; 263 264 public Builder(String id) { 265 super(id); 266 } 267 268 public Builder name(String name) { 269 this.name = name; 270 return this; 271 } 272 273 public Builder size(Long size) { 274 this.size = size; 275 return this; 276 } 277 278 public Builder createdAt(OffsetDateTime createdAt) { 279 this.createdAt = createdAt; 280 return this; 281 } 282 283 public Builder modifiedAt(OffsetDateTime modifiedAt) { 284 this.modifiedAt = modifiedAt; 285 return this; 286 } 287 288 public Builder modifiedBy(UserMini modifiedBy) { 289 this.modifiedBy = modifiedBy; 290 return this; 291 } 292 293 public Builder trashedAt(OffsetDateTime trashedAt) { 294 this.trashedAt = trashedAt; 295 this.markNullableFieldAsSet("trashed_at"); 296 return this; 297 } 298 299 public Builder trashedBy(UserMini trashedBy) { 300 this.trashedBy = trashedBy; 301 return this; 302 } 303 304 public Builder restoredAt(OffsetDateTime restoredAt) { 305 this.restoredAt = restoredAt; 306 this.markNullableFieldAsSet("restored_at"); 307 return this; 308 } 309 310 public Builder restoredBy(UserMini restoredBy) { 311 this.restoredBy = restoredBy; 312 return this; 313 } 314 315 public Builder purgedAt(OffsetDateTime purgedAt) { 316 this.purgedAt = purgedAt; 317 this.markNullableFieldAsSet("purged_at"); 318 return this; 319 } 320 321 public Builder uploaderDisplayName(String uploaderDisplayName) { 322 this.uploaderDisplayName = uploaderDisplayName; 323 return this; 324 } 325 326 @Override 327 public Builder type(FileVersionBaseTypeField type) { 328 this.type = new EnumWrapper<FileVersionBaseTypeField>(type); 329 return this; 330 } 331 332 @Override 333 public Builder type(EnumWrapper<FileVersionBaseTypeField> type) { 334 this.type = type; 335 return this; 336 } 337 338 @Override 339 public Builder sha1(String sha1) { 340 this.sha1 = sha1; 341 return this; 342 } 343 344 public FileVersion build() { 345 if (this.type == null) { 346 this.type = 347 new EnumWrapper<FileVersionBaseTypeField>(FileVersionBaseTypeField.FILE_VERSION); 348 } 349 return new FileVersion(this); 350 } 351 } 352}