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}