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