001package com.box.sdkgen.schemas.fileversionlegalhold;
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.filemini.FileMini;
007import com.box.sdkgen.schemas.fileversionmini.FileVersionMini;
008import com.box.sdkgen.schemas.legalholdpolicyassignment.LegalHoldPolicyAssignment;
009import com.box.sdkgen.serialization.json.EnumWrapper;
010import com.fasterxml.jackson.annotation.JsonFilter;
011import com.fasterxml.jackson.annotation.JsonProperty;
012import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
013import com.fasterxml.jackson.databind.annotation.JsonSerialize;
014import java.time.OffsetDateTime;
015import java.util.List;
016import java.util.Objects;
017
018/** File version legal hold is an entity representing all holds on a File Version. */
019@JsonFilter("nullablePropertyFilter")
020public class FileVersionLegalHold extends SerializableObject {
021
022  /** The unique identifier for this file version legal hold. */
023  protected String id;
024
025  /** The value will always be `file_version_legal_hold`. */
026  @JsonDeserialize(
027      using = FileVersionLegalHoldTypeField.FileVersionLegalHoldTypeFieldDeserializer.class)
028  @JsonSerialize(
029      using = FileVersionLegalHoldTypeField.FileVersionLegalHoldTypeFieldSerializer.class)
030  protected EnumWrapper<FileVersionLegalHoldTypeField> type;
031
032  @JsonProperty("file_version")
033  protected FileVersionMini fileVersion;
034
035  protected FileMini file;
036
037  /** List of assignments contributing to this Hold. */
038  @JsonProperty("legal_hold_policy_assignments")
039  protected List<LegalHoldPolicyAssignment> legalHoldPolicyAssignments;
040
041  /** Time that this File-Version-Legal-Hold was deleted. */
042  @JsonProperty("deleted_at")
043  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
044  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
045  protected OffsetDateTime deletedAt;
046
047  public FileVersionLegalHold() {
048    super();
049  }
050
051  protected FileVersionLegalHold(Builder builder) {
052    super();
053    this.id = builder.id;
054    this.type = builder.type;
055    this.fileVersion = builder.fileVersion;
056    this.file = builder.file;
057    this.legalHoldPolicyAssignments = builder.legalHoldPolicyAssignments;
058    this.deletedAt = builder.deletedAt;
059    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
060  }
061
062  public String getId() {
063    return id;
064  }
065
066  public EnumWrapper<FileVersionLegalHoldTypeField> getType() {
067    return type;
068  }
069
070  public FileVersionMini getFileVersion() {
071    return fileVersion;
072  }
073
074  public FileMini getFile() {
075    return file;
076  }
077
078  public List<LegalHoldPolicyAssignment> getLegalHoldPolicyAssignments() {
079    return legalHoldPolicyAssignments;
080  }
081
082  public OffsetDateTime getDeletedAt() {
083    return deletedAt;
084  }
085
086  @Override
087  public boolean equals(Object o) {
088    if (this == o) {
089      return true;
090    }
091    if (o == null || getClass() != o.getClass()) {
092      return false;
093    }
094    FileVersionLegalHold casted = (FileVersionLegalHold) o;
095    return Objects.equals(id, casted.id)
096        && Objects.equals(type, casted.type)
097        && Objects.equals(fileVersion, casted.fileVersion)
098        && Objects.equals(file, casted.file)
099        && Objects.equals(legalHoldPolicyAssignments, casted.legalHoldPolicyAssignments)
100        && Objects.equals(deletedAt, casted.deletedAt);
101  }
102
103  @Override
104  public int hashCode() {
105    return Objects.hash(id, type, fileVersion, file, legalHoldPolicyAssignments, deletedAt);
106  }
107
108  @Override
109  public String toString() {
110    return "FileVersionLegalHold{"
111        + "id='"
112        + id
113        + '\''
114        + ", "
115        + "type='"
116        + type
117        + '\''
118        + ", "
119        + "fileVersion='"
120        + fileVersion
121        + '\''
122        + ", "
123        + "file='"
124        + file
125        + '\''
126        + ", "
127        + "legalHoldPolicyAssignments='"
128        + legalHoldPolicyAssignments
129        + '\''
130        + ", "
131        + "deletedAt='"
132        + deletedAt
133        + '\''
134        + "}";
135  }
136
137  public static class Builder extends NullableFieldTracker {
138
139    protected String id;
140
141    protected EnumWrapper<FileVersionLegalHoldTypeField> type;
142
143    protected FileVersionMini fileVersion;
144
145    protected FileMini file;
146
147    protected List<LegalHoldPolicyAssignment> legalHoldPolicyAssignments;
148
149    protected OffsetDateTime deletedAt;
150
151    public Builder id(String id) {
152      this.id = id;
153      return this;
154    }
155
156    public Builder type(FileVersionLegalHoldTypeField type) {
157      this.type = new EnumWrapper<FileVersionLegalHoldTypeField>(type);
158      return this;
159    }
160
161    public Builder type(EnumWrapper<FileVersionLegalHoldTypeField> type) {
162      this.type = type;
163      return this;
164    }
165
166    public Builder fileVersion(FileVersionMini fileVersion) {
167      this.fileVersion = fileVersion;
168      return this;
169    }
170
171    public Builder file(FileMini file) {
172      this.file = file;
173      return this;
174    }
175
176    public Builder legalHoldPolicyAssignments(
177        List<LegalHoldPolicyAssignment> legalHoldPolicyAssignments) {
178      this.legalHoldPolicyAssignments = legalHoldPolicyAssignments;
179      return this;
180    }
181
182    public Builder deletedAt(OffsetDateTime deletedAt) {
183      this.deletedAt = deletedAt;
184      return this;
185    }
186
187    public FileVersionLegalHold build() {
188      return new FileVersionLegalHold(this);
189    }
190  }
191}