001package com.box.sdkgen.managers.folderclassifications;
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 UpdateClassificationOnFolderRequestBody extends SerializableObject {
014
015  /** The value will always be `replace`. */
016  @JsonDeserialize(
017      using =
018          UpdateClassificationOnFolderRequestBodyOpField
019              .UpdateClassificationOnFolderRequestBodyOpFieldDeserializer.class)
020  @JsonSerialize(
021      using =
022          UpdateClassificationOnFolderRequestBodyOpField
023              .UpdateClassificationOnFolderRequestBodyOpFieldSerializer.class)
024  protected EnumWrapper<UpdateClassificationOnFolderRequestBodyOpField> op;
025
026  /** Defines classifications available in the enterprise. */
027  @JsonDeserialize(
028      using =
029          UpdateClassificationOnFolderRequestBodyPathField
030              .UpdateClassificationOnFolderRequestBodyPathFieldDeserializer.class)
031  @JsonSerialize(
032      using =
033          UpdateClassificationOnFolderRequestBodyPathField
034              .UpdateClassificationOnFolderRequestBodyPathFieldSerializer.class)
035  protected EnumWrapper<UpdateClassificationOnFolderRequestBodyPathField> path;
036
037  /**
038   * The name of the classification to apply to this folder.
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 UpdateClassificationOnFolderRequestBody(@JsonProperty("value") String value) {
048    super();
049    this.value = value;
050    this.op =
051        new EnumWrapper<UpdateClassificationOnFolderRequestBodyOpField>(
052            UpdateClassificationOnFolderRequestBodyOpField.REPLACE);
053    this.path =
054        new EnumWrapper<UpdateClassificationOnFolderRequestBodyPathField>(
055            UpdateClassificationOnFolderRequestBodyPathField._BOX__SECURITY__CLASSIFICATION__KEY);
056  }
057
058  protected UpdateClassificationOnFolderRequestBody(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<UpdateClassificationOnFolderRequestBodyOpField> getOp() {
067    return op;
068  }
069
070  public EnumWrapper<UpdateClassificationOnFolderRequestBodyPathField> 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    UpdateClassificationOnFolderRequestBody casted = (UpdateClassificationOnFolderRequestBody) 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 "UpdateClassificationOnFolderRequestBody{"
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<UpdateClassificationOnFolderRequestBodyOpField> op;
117
118    protected EnumWrapper<UpdateClassificationOnFolderRequestBodyPathField> 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(UpdateClassificationOnFolderRequestBodyOpField op) {
128      this.op = new EnumWrapper<UpdateClassificationOnFolderRequestBodyOpField>(op);
129      return this;
130    }
131
132    public Builder op(EnumWrapper<UpdateClassificationOnFolderRequestBodyOpField> op) {
133      this.op = op;
134      return this;
135    }
136
137    public Builder path(UpdateClassificationOnFolderRequestBodyPathField path) {
138      this.path = new EnumWrapper<UpdateClassificationOnFolderRequestBodyPathField>(path);
139      return this;
140    }
141
142    public Builder path(EnumWrapper<UpdateClassificationOnFolderRequestBodyPathField> path) {
143      this.path = path;
144      return this;
145    }
146
147    public UpdateClassificationOnFolderRequestBody build() {
148      if (this.op == null) {
149        this.op =
150            new EnumWrapper<UpdateClassificationOnFolderRequestBodyOpField>(
151                UpdateClassificationOnFolderRequestBodyOpField.REPLACE);
152      }
153      if (this.path == null) {
154        this.path =
155            new EnumWrapper<UpdateClassificationOnFolderRequestBodyPathField>(
156                UpdateClassificationOnFolderRequestBodyPathField
157                    ._BOX__SECURITY__CLASSIFICATION__KEY);
158      }
159      return new UpdateClassificationOnFolderRequestBody(this);
160    }
161  }
162}