001package com.box.sdkgen.schemas.fileversionfull;
002
003import com.box.sdkgen.schemas.fileversion.FileVersion;
004import com.box.sdkgen.schemas.fileversionbase.FileVersionBaseTypeField;
005import com.box.sdkgen.schemas.usermini.UserMini;
006import com.box.sdkgen.serialization.json.EnumWrapper;
007import com.fasterxml.jackson.annotation.JsonFilter;
008import com.fasterxml.jackson.annotation.JsonProperty;
009import java.time.OffsetDateTime;
010import java.util.Objects;
011
012/**
013 * A full representation of a file version, as can be returned from any file version API endpoints
014 * by default.
015 */
016@JsonFilter("nullablePropertyFilter")
017public class FileVersionFull extends FileVersion {
018
019  /** The version number of this file version. */
020  @JsonProperty("version_number")
021  protected String versionNumber;
022
023  public FileVersionFull(@JsonProperty("id") String id) {
024    super(id);
025  }
026
027  protected FileVersionFull(Builder builder) {
028    super(builder);
029    this.versionNumber = builder.versionNumber;
030    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
031  }
032
033  public String getVersionNumber() {
034    return versionNumber;
035  }
036
037  @Override
038  public boolean equals(Object o) {
039    if (this == o) {
040      return true;
041    }
042    if (o == null || getClass() != o.getClass()) {
043      return false;
044    }
045    FileVersionFull casted = (FileVersionFull) o;
046    return Objects.equals(id, casted.id)
047        && Objects.equals(type, casted.type)
048        && Objects.equals(sha1, casted.sha1)
049        && Objects.equals(name, casted.name)
050        && Objects.equals(size, casted.size)
051        && Objects.equals(createdAt, casted.createdAt)
052        && Objects.equals(modifiedAt, casted.modifiedAt)
053        && Objects.equals(modifiedBy, casted.modifiedBy)
054        && Objects.equals(trashedAt, casted.trashedAt)
055        && Objects.equals(trashedBy, casted.trashedBy)
056        && Objects.equals(restoredAt, casted.restoredAt)
057        && Objects.equals(restoredBy, casted.restoredBy)
058        && Objects.equals(purgedAt, casted.purgedAt)
059        && Objects.equals(uploaderDisplayName, casted.uploaderDisplayName)
060        && Objects.equals(versionNumber, casted.versionNumber);
061  }
062
063  @Override
064  public int hashCode() {
065    return Objects.hash(
066        id,
067        type,
068        sha1,
069        name,
070        size,
071        createdAt,
072        modifiedAt,
073        modifiedBy,
074        trashedAt,
075        trashedBy,
076        restoredAt,
077        restoredBy,
078        purgedAt,
079        uploaderDisplayName,
080        versionNumber);
081  }
082
083  @Override
084  public String toString() {
085    return "FileVersionFull{"
086        + "id='"
087        + id
088        + '\''
089        + ", "
090        + "type='"
091        + type
092        + '\''
093        + ", "
094        + "sha1='"
095        + sha1
096        + '\''
097        + ", "
098        + "name='"
099        + name
100        + '\''
101        + ", "
102        + "size='"
103        + size
104        + '\''
105        + ", "
106        + "createdAt='"
107        + createdAt
108        + '\''
109        + ", "
110        + "modifiedAt='"
111        + modifiedAt
112        + '\''
113        + ", "
114        + "modifiedBy='"
115        + modifiedBy
116        + '\''
117        + ", "
118        + "trashedAt='"
119        + trashedAt
120        + '\''
121        + ", "
122        + "trashedBy='"
123        + trashedBy
124        + '\''
125        + ", "
126        + "restoredAt='"
127        + restoredAt
128        + '\''
129        + ", "
130        + "restoredBy='"
131        + restoredBy
132        + '\''
133        + ", "
134        + "purgedAt='"
135        + purgedAt
136        + '\''
137        + ", "
138        + "uploaderDisplayName='"
139        + uploaderDisplayName
140        + '\''
141        + ", "
142        + "versionNumber='"
143        + versionNumber
144        + '\''
145        + "}";
146  }
147
148  public static class Builder extends FileVersion.Builder {
149
150    protected String versionNumber;
151
152    public Builder(String id) {
153      super(id);
154    }
155
156    public Builder versionNumber(String versionNumber) {
157      this.versionNumber = versionNumber;
158      return this;
159    }
160
161    @Override
162    public Builder type(FileVersionBaseTypeField type) {
163      this.type = new EnumWrapper<FileVersionBaseTypeField>(type);
164      return this;
165    }
166
167    @Override
168    public Builder type(EnumWrapper<FileVersionBaseTypeField> type) {
169      this.type = type;
170      return this;
171    }
172
173    @Override
174    public Builder sha1(String sha1) {
175      this.sha1 = sha1;
176      return this;
177    }
178
179    @Override
180    public Builder name(String name) {
181      this.name = name;
182      return this;
183    }
184
185    @Override
186    public Builder size(Long size) {
187      this.size = size;
188      return this;
189    }
190
191    @Override
192    public Builder createdAt(OffsetDateTime createdAt) {
193      this.createdAt = createdAt;
194      return this;
195    }
196
197    @Override
198    public Builder modifiedAt(OffsetDateTime modifiedAt) {
199      this.modifiedAt = modifiedAt;
200      return this;
201    }
202
203    @Override
204    public Builder modifiedBy(UserMini modifiedBy) {
205      this.modifiedBy = modifiedBy;
206      return this;
207    }
208
209    @Override
210    public Builder trashedAt(OffsetDateTime trashedAt) {
211      this.trashedAt = trashedAt;
212      this.markNullableFieldAsSet("trashed_at");
213      return this;
214    }
215
216    @Override
217    public Builder trashedBy(UserMini trashedBy) {
218      this.trashedBy = trashedBy;
219      return this;
220    }
221
222    @Override
223    public Builder restoredAt(OffsetDateTime restoredAt) {
224      this.restoredAt = restoredAt;
225      this.markNullableFieldAsSet("restored_at");
226      return this;
227    }
228
229    @Override
230    public Builder restoredBy(UserMini restoredBy) {
231      this.restoredBy = restoredBy;
232      return this;
233    }
234
235    @Override
236    public Builder purgedAt(OffsetDateTime purgedAt) {
237      this.purgedAt = purgedAt;
238      this.markNullableFieldAsSet("purged_at");
239      return this;
240    }
241
242    @Override
243    public Builder uploaderDisplayName(String uploaderDisplayName) {
244      this.uploaderDisplayName = uploaderDisplayName;
245      return this;
246    }
247
248    public FileVersionFull build() {
249      if (this.type == null) {
250        this.type =
251            new EnumWrapper<FileVersionBaseTypeField>(FileVersionBaseTypeField.FILE_VERSION);
252      }
253      return new FileVersionFull(this);
254    }
255  }
256}