001package com.box.sdkgen.managers.fileclassifications;
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 UpdateClassificationOnFileRequestBody extends SerializableObject {
014
015  /** The value will always be `replace`. */
016  @JsonDeserialize(
017      using =
018          UpdateClassificationOnFileRequestBodyOpField
019              .UpdateClassificationOnFileRequestBodyOpFieldDeserializer.class)
020  @JsonSerialize(
021      using =
022          UpdateClassificationOnFileRequestBodyOpField
023              .UpdateClassificationOnFileRequestBodyOpFieldSerializer.class)
024  protected EnumWrapper<UpdateClassificationOnFileRequestBodyOpField> op;
025
026  /** Defines classifications available in the enterprise. */
027  @JsonDeserialize(
028      using =
029          UpdateClassificationOnFileRequestBodyPathField
030              .UpdateClassificationOnFileRequestBodyPathFieldDeserializer.class)
031  @JsonSerialize(
032      using =
033          UpdateClassificationOnFileRequestBodyPathField
034              .UpdateClassificationOnFileRequestBodyPathFieldSerializer.class)
035  protected EnumWrapper<UpdateClassificationOnFileRequestBodyPathField> path;
036
037  /**
038   * The name of the classification to apply to this file.
039   *
040   * <p>To list the available classifications in an enterprise, use the classification API to
041   * retrieve the [classification
042   * template](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema)
043   * which lists all available classification keys.
044   */
045  protected final String value;
046
047  public UpdateClassificationOnFileRequestBody(@JsonProperty("value") String value) {
048    super();
049    this.value = value;
050    this.op =
051        new EnumWrapper<UpdateClassificationOnFileRequestBodyOpField>(
052            UpdateClassificationOnFileRequestBodyOpField.REPLACE);
053    this.path =
054        new EnumWrapper<UpdateClassificationOnFileRequestBodyPathField>(
055            UpdateClassificationOnFileRequestBodyPathField._BOX__SECURITY__CLASSIFICATION__KEY);
056  }
057
058  protected UpdateClassificationOnFileRequestBody(Builder builder) {
059    super();
060    this.op = builder.op;
061    this.path = builder.path;
062    this.value = builder.value;
063    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
064  }
065
066  public EnumWrapper<UpdateClassificationOnFileRequestBodyOpField> getOp() {
067    return op;
068  }
069
070  public EnumWrapper<UpdateClassificationOnFileRequestBodyPathField> getPath() {
071    return path;
072  }
073
074  public String getValue() {
075    return value;
076  }
077
078  @Override
079  public boolean equals(Object o) {
080    if (this == o) {
081      return true;
082    }
083    if (o == null || getClass() != o.getClass()) {
084      return false;
085    }
086    UpdateClassificationOnFileRequestBody casted = (UpdateClassificationOnFileRequestBody) o;
087    return Objects.equals(op, casted.op)
088        && Objects.equals(path, casted.path)
089        && Objects.equals(value, casted.value);
090  }
091
092  @Override
093  public int hashCode() {
094    return Objects.hash(op, path, value);
095  }
096
097  @Override
098  public String toString() {
099    return "UpdateClassificationOnFileRequestBody{"
100        + "op='"
101        + op
102        + '\''
103        + ", "
104        + "path='"
105        + path
106        + '\''
107        + ", "
108        + "value='"
109        + value
110        + '\''
111        + "}";
112  }
113
114  public static class Builder extends NullableFieldTracker {
115
116    protected EnumWrapper<UpdateClassificationOnFileRequestBodyOpField> op;
117
118    protected EnumWrapper<UpdateClassificationOnFileRequestBodyPathField> path;
119
120    protected final String value;
121
122    public Builder(String value) {
123      super();
124      this.value = value;
125    }
126
127    public Builder op(UpdateClassificationOnFileRequestBodyOpField op) {
128      this.op = new EnumWrapper<UpdateClassificationOnFileRequestBodyOpField>(op);
129      return this;
130    }
131
132    public Builder op(EnumWrapper<UpdateClassificationOnFileRequestBodyOpField> op) {
133      this.op = op;
134      return this;
135    }
136
137    public Builder path(UpdateClassificationOnFileRequestBodyPathField path) {
138      this.path = new EnumWrapper<UpdateClassificationOnFileRequestBodyPathField>(path);
139      return this;
140    }
141
142    public Builder path(EnumWrapper<UpdateClassificationOnFileRequestBodyPathField> path) {
143      this.path = path;
144      return this;
145    }
146
147    public UpdateClassificationOnFileRequestBody build() {
148      if (this.op == null) {
149        this.op =
150            new EnumWrapper<UpdateClassificationOnFileRequestBodyOpField>(
151                UpdateClassificationOnFileRequestBodyOpField.REPLACE);
152      }
153      if (this.path == null) {
154        this.path =
155            new EnumWrapper<UpdateClassificationOnFileRequestBodyPathField>(
156                UpdateClassificationOnFileRequestBodyPathField._BOX__SECURITY__CLASSIFICATION__KEY);
157      }
158      return new UpdateClassificationOnFileRequestBody(this);
159    }
160  }
161}