001package com.box.sdkgen.managers.skills;
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 UpdateAllSkillCardsOnFileRequestBody extends SerializableObject {
014
015  /** Defines the status of this invocation. Set this to `success` when setting Skill cards. */
016  @JsonDeserialize(
017      using =
018          UpdateAllSkillCardsOnFileRequestBodyStatusField
019              .UpdateAllSkillCardsOnFileRequestBodyStatusFieldDeserializer.class)
020  @JsonSerialize(
021      using =
022          UpdateAllSkillCardsOnFileRequestBodyStatusField
023              .UpdateAllSkillCardsOnFileRequestBodyStatusFieldSerializer.class)
024  protected final EnumWrapper<UpdateAllSkillCardsOnFileRequestBodyStatusField> status;
025
026  /**
027   * The metadata to set for this skill. This is a list of Box Skills cards. These cards will
028   * overwrite any existing Box skill cards on the file.
029   */
030  protected final UpdateAllSkillCardsOnFileRequestBodyMetadataField metadata;
031
032  /** The file to assign the cards to. */
033  protected final UpdateAllSkillCardsOnFileRequestBodyFileField file;
034
035  /** The optional file version to assign the cards to. */
036  @JsonProperty("file_version")
037  protected UpdateAllSkillCardsOnFileRequestBodyFileVersionField fileVersion;
038
039  /**
040   * A descriptor that defines what items are affected by this call.
041   *
042   * <p>Set this to the default values when setting a card to a `success` state, and leave it out in
043   * most other situations.
044   */
045  protected UpdateAllSkillCardsOnFileRequestBodyUsageField usage;
046
047  public UpdateAllSkillCardsOnFileRequestBody(
048      UpdateAllSkillCardsOnFileRequestBodyStatusField status,
049      UpdateAllSkillCardsOnFileRequestBodyMetadataField metadata,
050      UpdateAllSkillCardsOnFileRequestBodyFileField file) {
051    super();
052    this.status = new EnumWrapper<UpdateAllSkillCardsOnFileRequestBodyStatusField>(status);
053    this.metadata = metadata;
054    this.file = file;
055  }
056
057  public UpdateAllSkillCardsOnFileRequestBody(
058      @JsonProperty("status") EnumWrapper<UpdateAllSkillCardsOnFileRequestBodyStatusField> status,
059      @JsonProperty("metadata") UpdateAllSkillCardsOnFileRequestBodyMetadataField metadata,
060      @JsonProperty("file") UpdateAllSkillCardsOnFileRequestBodyFileField file) {
061    super();
062    this.status = status;
063    this.metadata = metadata;
064    this.file = file;
065  }
066
067  protected UpdateAllSkillCardsOnFileRequestBody(Builder builder) {
068    super();
069    this.status = builder.status;
070    this.metadata = builder.metadata;
071    this.file = builder.file;
072    this.fileVersion = builder.fileVersion;
073    this.usage = builder.usage;
074    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
075  }
076
077  public EnumWrapper<UpdateAllSkillCardsOnFileRequestBodyStatusField> getStatus() {
078    return status;
079  }
080
081  public UpdateAllSkillCardsOnFileRequestBodyMetadataField getMetadata() {
082    return metadata;
083  }
084
085  public UpdateAllSkillCardsOnFileRequestBodyFileField getFile() {
086    return file;
087  }
088
089  public UpdateAllSkillCardsOnFileRequestBodyFileVersionField getFileVersion() {
090    return fileVersion;
091  }
092
093  public UpdateAllSkillCardsOnFileRequestBodyUsageField getUsage() {
094    return usage;
095  }
096
097  @Override
098  public boolean equals(Object o) {
099    if (this == o) {
100      return true;
101    }
102    if (o == null || getClass() != o.getClass()) {
103      return false;
104    }
105    UpdateAllSkillCardsOnFileRequestBody casted = (UpdateAllSkillCardsOnFileRequestBody) o;
106    return Objects.equals(status, casted.status)
107        && Objects.equals(metadata, casted.metadata)
108        && Objects.equals(file, casted.file)
109        && Objects.equals(fileVersion, casted.fileVersion)
110        && Objects.equals(usage, casted.usage);
111  }
112
113  @Override
114  public int hashCode() {
115    return Objects.hash(status, metadata, file, fileVersion, usage);
116  }
117
118  @Override
119  public String toString() {
120    return "UpdateAllSkillCardsOnFileRequestBody{"
121        + "status='"
122        + status
123        + '\''
124        + ", "
125        + "metadata='"
126        + metadata
127        + '\''
128        + ", "
129        + "file='"
130        + file
131        + '\''
132        + ", "
133        + "fileVersion='"
134        + fileVersion
135        + '\''
136        + ", "
137        + "usage='"
138        + usage
139        + '\''
140        + "}";
141  }
142
143  public static class Builder extends NullableFieldTracker {
144
145    protected final EnumWrapper<UpdateAllSkillCardsOnFileRequestBodyStatusField> status;
146
147    protected final UpdateAllSkillCardsOnFileRequestBodyMetadataField metadata;
148
149    protected final UpdateAllSkillCardsOnFileRequestBodyFileField file;
150
151    protected UpdateAllSkillCardsOnFileRequestBodyFileVersionField fileVersion;
152
153    protected UpdateAllSkillCardsOnFileRequestBodyUsageField usage;
154
155    public Builder(
156        UpdateAllSkillCardsOnFileRequestBodyStatusField status,
157        UpdateAllSkillCardsOnFileRequestBodyMetadataField metadata,
158        UpdateAllSkillCardsOnFileRequestBodyFileField file) {
159      super();
160      this.status = new EnumWrapper<UpdateAllSkillCardsOnFileRequestBodyStatusField>(status);
161      this.metadata = metadata;
162      this.file = file;
163    }
164
165    public Builder(
166        EnumWrapper<UpdateAllSkillCardsOnFileRequestBodyStatusField> status,
167        UpdateAllSkillCardsOnFileRequestBodyMetadataField metadata,
168        UpdateAllSkillCardsOnFileRequestBodyFileField file) {
169      super();
170      this.status = status;
171      this.metadata = metadata;
172      this.file = file;
173    }
174
175    public Builder fileVersion(UpdateAllSkillCardsOnFileRequestBodyFileVersionField fileVersion) {
176      this.fileVersion = fileVersion;
177      return this;
178    }
179
180    public Builder usage(UpdateAllSkillCardsOnFileRequestBodyUsageField usage) {
181      this.usage = usage;
182      return this;
183    }
184
185    public UpdateAllSkillCardsOnFileRequestBody build() {
186      return new UpdateAllSkillCardsOnFileRequestBody(this);
187    }
188  }
189}