001package com.box.sdkgen.schemas.legalholdpolicyassignmentbase;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.serialization.json.EnumWrapper;
006import com.fasterxml.jackson.annotation.JsonFilter;
007import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
008import com.fasterxml.jackson.databind.annotation.JsonSerialize;
009import java.util.Objects;
010
011/**
012 * Legal Hold Assignments are used to assign Legal Hold Policies to Users, Folders, Files, or File
013 * Versions.
014 *
015 * <p>Creating a Legal Hold Assignment puts a hold on the File-Versions that belong to the
016 * Assignment's 'apply-to' entity.
017 */
018@JsonFilter("nullablePropertyFilter")
019public class LegalHoldPolicyAssignmentBase extends SerializableObject {
020
021  /** The unique identifier for this legal hold assignment. */
022  protected String id;
023
024  /** The value will always be `legal_hold_policy_assignment`. */
025  @JsonDeserialize(
026      using =
027          LegalHoldPolicyAssignmentBaseTypeField.LegalHoldPolicyAssignmentBaseTypeFieldDeserializer
028              .class)
029  @JsonSerialize(
030      using =
031          LegalHoldPolicyAssignmentBaseTypeField.LegalHoldPolicyAssignmentBaseTypeFieldSerializer
032              .class)
033  protected EnumWrapper<LegalHoldPolicyAssignmentBaseTypeField> type;
034
035  public LegalHoldPolicyAssignmentBase() {
036    super();
037  }
038
039  protected LegalHoldPolicyAssignmentBase(Builder builder) {
040    super();
041    this.id = builder.id;
042    this.type = builder.type;
043    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
044  }
045
046  public String getId() {
047    return id;
048  }
049
050  public EnumWrapper<LegalHoldPolicyAssignmentBaseTypeField> getType() {
051    return type;
052  }
053
054  @Override
055  public boolean equals(Object o) {
056    if (this == o) {
057      return true;
058    }
059    if (o == null || getClass() != o.getClass()) {
060      return false;
061    }
062    LegalHoldPolicyAssignmentBase casted = (LegalHoldPolicyAssignmentBase) o;
063    return Objects.equals(id, casted.id) && Objects.equals(type, casted.type);
064  }
065
066  @Override
067  public int hashCode() {
068    return Objects.hash(id, type);
069  }
070
071  @Override
072  public String toString() {
073    return "LegalHoldPolicyAssignmentBase{"
074        + "id='"
075        + id
076        + '\''
077        + ", "
078        + "type='"
079        + type
080        + '\''
081        + "}";
082  }
083
084  public static class Builder extends NullableFieldTracker {
085
086    protected String id;
087
088    protected EnumWrapper<LegalHoldPolicyAssignmentBaseTypeField> type;
089
090    public Builder id(String id) {
091      this.id = id;
092      return this;
093    }
094
095    public Builder type(LegalHoldPolicyAssignmentBaseTypeField type) {
096      this.type = new EnumWrapper<LegalHoldPolicyAssignmentBaseTypeField>(type);
097      return this;
098    }
099
100    public Builder type(EnumWrapper<LegalHoldPolicyAssignmentBaseTypeField> type) {
101      this.type = type;
102      return this;
103    }
104
105    public LegalHoldPolicyAssignmentBase build() {
106      return new LegalHoldPolicyAssignmentBase(this);
107    }
108  }
109}