001package com.box.sdkgen.managers.classifications;
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 UpdateClassificationRequestBody extends SerializableObject {
014
015  /** The type of change to perform on the classification object. */
016  @JsonDeserialize(
017      using =
018          UpdateClassificationRequestBodyOpField.UpdateClassificationRequestBodyOpFieldDeserializer
019              .class)
020  @JsonSerialize(
021      using =
022          UpdateClassificationRequestBodyOpField.UpdateClassificationRequestBodyOpFieldSerializer
023              .class)
024  protected EnumWrapper<UpdateClassificationRequestBodyOpField> op;
025
026  /** Defines classifications available in the enterprise. */
027  @JsonDeserialize(
028      using =
029          UpdateClassificationRequestBodyFieldKeyField
030              .UpdateClassificationRequestBodyFieldKeyFieldDeserializer.class)
031  @JsonSerialize(
032      using =
033          UpdateClassificationRequestBodyFieldKeyField
034              .UpdateClassificationRequestBodyFieldKeyFieldSerializer.class)
035  protected EnumWrapper<UpdateClassificationRequestBodyFieldKeyField> fieldKey;
036
037  /** The original label of the classification to change. */
038  protected final String enumOptionKey;
039
040  /** The details of the updated classification. */
041  protected final UpdateClassificationRequestBodyDataField data;
042
043  public UpdateClassificationRequestBody(
044      @JsonProperty("enumOptionKey") String enumOptionKey,
045      @JsonProperty("data") UpdateClassificationRequestBodyDataField data) {
046    super();
047    this.enumOptionKey = enumOptionKey;
048    this.data = data;
049    this.op =
050        new EnumWrapper<UpdateClassificationRequestBodyOpField>(
051            UpdateClassificationRequestBodyOpField.EDITENUMOPTION);
052    this.fieldKey =
053        new EnumWrapper<UpdateClassificationRequestBodyFieldKeyField>(
054            UpdateClassificationRequestBodyFieldKeyField.BOX__SECURITY__CLASSIFICATION__KEY);
055  }
056
057  protected UpdateClassificationRequestBody(Builder builder) {
058    super();
059    this.op = builder.op;
060    this.fieldKey = builder.fieldKey;
061    this.enumOptionKey = builder.enumOptionKey;
062    this.data = builder.data;
063    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
064  }
065
066  public EnumWrapper<UpdateClassificationRequestBodyOpField> getOp() {
067    return op;
068  }
069
070  public EnumWrapper<UpdateClassificationRequestBodyFieldKeyField> getFieldKey() {
071    return fieldKey;
072  }
073
074  public String getEnumOptionKey() {
075    return enumOptionKey;
076  }
077
078  public UpdateClassificationRequestBodyDataField getData() {
079    return data;
080  }
081
082  @Override
083  public boolean equals(Object o) {
084    if (this == o) {
085      return true;
086    }
087    if (o == null || getClass() != o.getClass()) {
088      return false;
089    }
090    UpdateClassificationRequestBody casted = (UpdateClassificationRequestBody) o;
091    return Objects.equals(op, casted.op)
092        && Objects.equals(fieldKey, casted.fieldKey)
093        && Objects.equals(enumOptionKey, casted.enumOptionKey)
094        && Objects.equals(data, casted.data);
095  }
096
097  @Override
098  public int hashCode() {
099    return Objects.hash(op, fieldKey, enumOptionKey, data);
100  }
101
102  @Override
103  public String toString() {
104    return "UpdateClassificationRequestBody{"
105        + "op='"
106        + op
107        + '\''
108        + ", "
109        + "fieldKey='"
110        + fieldKey
111        + '\''
112        + ", "
113        + "enumOptionKey='"
114        + enumOptionKey
115        + '\''
116        + ", "
117        + "data='"
118        + data
119        + '\''
120        + "}";
121  }
122
123  public static class Builder extends NullableFieldTracker {
124
125    protected EnumWrapper<UpdateClassificationRequestBodyOpField> op;
126
127    protected EnumWrapper<UpdateClassificationRequestBodyFieldKeyField> fieldKey;
128
129    protected final String enumOptionKey;
130
131    protected final UpdateClassificationRequestBodyDataField data;
132
133    public Builder(String enumOptionKey, UpdateClassificationRequestBodyDataField data) {
134      super();
135      this.enumOptionKey = enumOptionKey;
136      this.data = data;
137    }
138
139    public Builder op(UpdateClassificationRequestBodyOpField op) {
140      this.op = new EnumWrapper<UpdateClassificationRequestBodyOpField>(op);
141      return this;
142    }
143
144    public Builder op(EnumWrapper<UpdateClassificationRequestBodyOpField> op) {
145      this.op = op;
146      return this;
147    }
148
149    public Builder fieldKey(UpdateClassificationRequestBodyFieldKeyField fieldKey) {
150      this.fieldKey = new EnumWrapper<UpdateClassificationRequestBodyFieldKeyField>(fieldKey);
151      return this;
152    }
153
154    public Builder fieldKey(EnumWrapper<UpdateClassificationRequestBodyFieldKeyField> fieldKey) {
155      this.fieldKey = fieldKey;
156      return this;
157    }
158
159    public UpdateClassificationRequestBody build() {
160      if (this.op == null) {
161        this.op =
162            new EnumWrapper<UpdateClassificationRequestBodyOpField>(
163                UpdateClassificationRequestBodyOpField.EDITENUMOPTION);
164      }
165      if (this.fieldKey == null) {
166        this.fieldKey =
167            new EnumWrapper<UpdateClassificationRequestBodyFieldKeyField>(
168                UpdateClassificationRequestBodyFieldKeyField.BOX__SECURITY__CLASSIFICATION__KEY);
169      }
170      return new UpdateClassificationRequestBody(this);
171    }
172  }
173}