001package com.box.sdkgen.managers.retentionpolicyassignments;
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.annotation.JsonProperty;
009import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
010import com.fasterxml.jackson.databind.annotation.JsonSerialize;
011import java.util.Objects;
012
013@JsonFilter("nullablePropertyFilter")
014public class CreateRetentionPolicyAssignmentRequestBodyAssignToField extends SerializableObject {
015
016  /** The type of item to assign the policy to. */
017  @JsonDeserialize(
018      using =
019          CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField
020              .CreateRetentionPolicyAssignmentRequestBodyAssignToTypeFieldDeserializer.class)
021  @JsonSerialize(
022      using =
023          CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField
024              .CreateRetentionPolicyAssignmentRequestBodyAssignToTypeFieldSerializer.class)
025  protected final EnumWrapper<CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField> type;
026
027  /**
028   * The ID of item to assign the policy to. Set to `null` or omit when `type` is set to
029   * `enterprise`.
030   */
031  @Nullable protected String id;
032
033  public CreateRetentionPolicyAssignmentRequestBodyAssignToField(
034      CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField type) {
035    super();
036    this.type = new EnumWrapper<CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField>(type);
037  }
038
039  public CreateRetentionPolicyAssignmentRequestBodyAssignToField(
040      @JsonProperty("type")
041          EnumWrapper<CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField> type) {
042    super();
043    this.type = type;
044  }
045
046  protected CreateRetentionPolicyAssignmentRequestBodyAssignToField(Builder builder) {
047    super();
048    this.type = builder.type;
049    this.id = builder.id;
050    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
051  }
052
053  public EnumWrapper<CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField> getType() {
054    return type;
055  }
056
057  public String getId() {
058    return id;
059  }
060
061  @Override
062  public boolean equals(Object o) {
063    if (this == o) {
064      return true;
065    }
066    if (o == null || getClass() != o.getClass()) {
067      return false;
068    }
069    CreateRetentionPolicyAssignmentRequestBodyAssignToField casted =
070        (CreateRetentionPolicyAssignmentRequestBodyAssignToField) o;
071    return Objects.equals(type, casted.type) && Objects.equals(id, casted.id);
072  }
073
074  @Override
075  public int hashCode() {
076    return Objects.hash(type, id);
077  }
078
079  @Override
080  public String toString() {
081    return "CreateRetentionPolicyAssignmentRequestBodyAssignToField{"
082        + "type='"
083        + type
084        + '\''
085        + ", "
086        + "id='"
087        + id
088        + '\''
089        + "}";
090  }
091
092  public static class Builder extends NullableFieldTracker {
093
094    protected final EnumWrapper<CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField> type;
095
096    protected String id;
097
098    public Builder(CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField type) {
099      super();
100      this.type =
101          new EnumWrapper<CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField>(type);
102    }
103
104    public Builder(EnumWrapper<CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField> type) {
105      super();
106      this.type = type;
107    }
108
109    public Builder id(String id) {
110      this.id = id;
111      this.markNullableFieldAsSet("id");
112      return this;
113    }
114
115    public CreateRetentionPolicyAssignmentRequestBodyAssignToField build() {
116      return new CreateRetentionPolicyAssignmentRequestBodyAssignToField(this);
117    }
118  }
119}