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