001package com.box.sdkgen.schemas.retentionpolicyassignment;
002
003import com.box.sdkgen.internal.Nullable;
004import com.box.sdkgen.internal.NullableFieldTracker;
005import com.box.sdkgen.internal.SerializableObject;
006import com.box.sdkgen.serialization.json.EnumWrapper;
007import com.fasterxml.jackson.annotation.JsonFilter;
008import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
009import com.fasterxml.jackson.databind.annotation.JsonSerialize;
010import java.util.Objects;
011
012@JsonFilter("nullablePropertyFilter")
013public class RetentionPolicyAssignmentAssignedToField extends SerializableObject {
014
015  /**
016   * The ID of the folder, enterprise, or metadata template the policy is assigned to. Set to null
017   * or omit when type is set to enterprise.
018   */
019  @Nullable protected String id;
020
021  /** The type of resource the policy is assigned to. */
022  @JsonDeserialize(
023      using =
024          RetentionPolicyAssignmentAssignedToTypeField
025              .RetentionPolicyAssignmentAssignedToTypeFieldDeserializer.class)
026  @JsonSerialize(
027      using =
028          RetentionPolicyAssignmentAssignedToTypeField
029              .RetentionPolicyAssignmentAssignedToTypeFieldSerializer.class)
030  protected EnumWrapper<RetentionPolicyAssignmentAssignedToTypeField> type;
031
032  public RetentionPolicyAssignmentAssignedToField() {
033    super();
034  }
035
036  protected RetentionPolicyAssignmentAssignedToField(Builder builder) {
037    super();
038    this.id = builder.id;
039    this.type = builder.type;
040    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
041  }
042
043  public String getId() {
044    return id;
045  }
046
047  public EnumWrapper<RetentionPolicyAssignmentAssignedToTypeField> getType() {
048    return type;
049  }
050
051  @Override
052  public boolean equals(Object o) {
053    if (this == o) {
054      return true;
055    }
056    if (o == null || getClass() != o.getClass()) {
057      return false;
058    }
059    RetentionPolicyAssignmentAssignedToField casted = (RetentionPolicyAssignmentAssignedToField) o;
060    return Objects.equals(id, casted.id) && Objects.equals(type, casted.type);
061  }
062
063  @Override
064  public int hashCode() {
065    return Objects.hash(id, type);
066  }
067
068  @Override
069  public String toString() {
070    return "RetentionPolicyAssignmentAssignedToField{"
071        + "id='"
072        + id
073        + '\''
074        + ", "
075        + "type='"
076        + type
077        + '\''
078        + "}";
079  }
080
081  public static class Builder extends NullableFieldTracker {
082
083    protected String id;
084
085    protected EnumWrapper<RetentionPolicyAssignmentAssignedToTypeField> type;
086
087    public Builder id(String id) {
088      this.id = id;
089      this.markNullableFieldAsSet("id");
090      return this;
091    }
092
093    public Builder type(RetentionPolicyAssignmentAssignedToTypeField type) {
094      this.type = new EnumWrapper<RetentionPolicyAssignmentAssignedToTypeField>(type);
095      return this;
096    }
097
098    public Builder type(EnumWrapper<RetentionPolicyAssignmentAssignedToTypeField> type) {
099      this.type = type;
100      return this;
101    }
102
103    public RetentionPolicyAssignmentAssignedToField build() {
104      return new RetentionPolicyAssignmentAssignedToField(this);
105    }
106  }
107}