001package com.box.sdkgen.schemas.v2025r0.hubitemoperationv2025r0;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.schemas.v2025r0.filereferencev2025r0.FileReferenceV2025R0;
006import com.box.sdkgen.schemas.v2025r0.folderreferencev2025r0.FolderReferenceV2025R0;
007import com.box.sdkgen.schemas.v2025r0.hubitemreferencev2025r0.HubItemReferenceV2025R0;
008import com.box.sdkgen.schemas.v2025r0.weblinkreferencev2025r0.WeblinkReferenceV2025R0;
009import com.box.sdkgen.serialization.json.EnumWrapper;
010import com.fasterxml.jackson.annotation.JsonFilter;
011import com.fasterxml.jackson.annotation.JsonProperty;
012import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
013import com.fasterxml.jackson.databind.annotation.JsonSerialize;
014import java.util.Objects;
015
016/** An operation to perform on a Box Hub item. */
017@JsonFilter("nullablePropertyFilter")
018public class HubItemOperationV2025R0 extends SerializableObject {
019
020  /** The action to perform on a Box Hub item. */
021  @JsonDeserialize(
022      using =
023          HubItemOperationV2025R0ActionField.HubItemOperationV2025R0ActionFieldDeserializer.class)
024  @JsonSerialize(
025      using = HubItemOperationV2025R0ActionField.HubItemOperationV2025R0ActionFieldSerializer.class)
026  protected final EnumWrapper<HubItemOperationV2025R0ActionField> action;
027
028  protected final HubItemReferenceV2025R0 item;
029
030  /**
031   * The ID of the parent block to add the item to. Must be an Item List block. If not provided, the
032   * item will be added to the first page's first Item List block.
033   */
034  @JsonProperty("parent_id")
035  protected String parentId;
036
037  public HubItemOperationV2025R0(
038      HubItemOperationV2025R0ActionField action, FileReferenceV2025R0 item) {
039    super();
040    this.action = new EnumWrapper<HubItemOperationV2025R0ActionField>(action);
041    this.item = new HubItemReferenceV2025R0(item);
042  }
043
044  public HubItemOperationV2025R0(
045      HubItemOperationV2025R0ActionField action, FolderReferenceV2025R0 item) {
046    super();
047    this.action = new EnumWrapper<HubItemOperationV2025R0ActionField>(action);
048    this.item = new HubItemReferenceV2025R0(item);
049  }
050
051  public HubItemOperationV2025R0(
052      HubItemOperationV2025R0ActionField action, WeblinkReferenceV2025R0 item) {
053    super();
054    this.action = new EnumWrapper<HubItemOperationV2025R0ActionField>(action);
055    this.item = new HubItemReferenceV2025R0(item);
056  }
057
058  public HubItemOperationV2025R0(
059      HubItemOperationV2025R0ActionField action, HubItemReferenceV2025R0 item) {
060    super();
061    this.action = new EnumWrapper<HubItemOperationV2025R0ActionField>(action);
062    this.item = item;
063  }
064
065  public HubItemOperationV2025R0(
066      EnumWrapper<HubItemOperationV2025R0ActionField> action, FileReferenceV2025R0 item) {
067    super();
068    this.action = action;
069    this.item = new HubItemReferenceV2025R0(item);
070  }
071
072  public HubItemOperationV2025R0(
073      EnumWrapper<HubItemOperationV2025R0ActionField> action, FolderReferenceV2025R0 item) {
074    super();
075    this.action = action;
076    this.item = new HubItemReferenceV2025R0(item);
077  }
078
079  public HubItemOperationV2025R0(
080      EnumWrapper<HubItemOperationV2025R0ActionField> action, WeblinkReferenceV2025R0 item) {
081    super();
082    this.action = action;
083    this.item = new HubItemReferenceV2025R0(item);
084  }
085
086  public HubItemOperationV2025R0(
087      @JsonProperty("action") EnumWrapper<HubItemOperationV2025R0ActionField> action,
088      @JsonProperty("item") HubItemReferenceV2025R0 item) {
089    super();
090    this.action = action;
091    this.item = item;
092  }
093
094  protected HubItemOperationV2025R0(Builder builder) {
095    super();
096    this.action = builder.action;
097    this.item = builder.item;
098    this.parentId = builder.parentId;
099    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
100  }
101
102  public EnumWrapper<HubItemOperationV2025R0ActionField> getAction() {
103    return action;
104  }
105
106  public HubItemReferenceV2025R0 getItem() {
107    return item;
108  }
109
110  public String getParentId() {
111    return parentId;
112  }
113
114  @Override
115  public boolean equals(Object o) {
116    if (this == o) {
117      return true;
118    }
119    if (o == null || getClass() != o.getClass()) {
120      return false;
121    }
122    HubItemOperationV2025R0 casted = (HubItemOperationV2025R0) o;
123    return Objects.equals(action, casted.action)
124        && Objects.equals(item, casted.item)
125        && Objects.equals(parentId, casted.parentId);
126  }
127
128  @Override
129  public int hashCode() {
130    return Objects.hash(action, item, parentId);
131  }
132
133  @Override
134  public String toString() {
135    return "HubItemOperationV2025R0{"
136        + "action='"
137        + action
138        + '\''
139        + ", "
140        + "item='"
141        + item
142        + '\''
143        + ", "
144        + "parentId='"
145        + parentId
146        + '\''
147        + "}";
148  }
149
150  public static class Builder extends NullableFieldTracker {
151
152    protected final EnumWrapper<HubItemOperationV2025R0ActionField> action;
153
154    protected final HubItemReferenceV2025R0 item;
155
156    protected String parentId;
157
158    public Builder(HubItemOperationV2025R0ActionField action, FileReferenceV2025R0 item) {
159      super();
160      this.action = new EnumWrapper<HubItemOperationV2025R0ActionField>(action);
161      this.item = new HubItemReferenceV2025R0(item);
162    }
163
164    public Builder(HubItemOperationV2025R0ActionField action, FolderReferenceV2025R0 item) {
165      super();
166      this.action = new EnumWrapper<HubItemOperationV2025R0ActionField>(action);
167      this.item = new HubItemReferenceV2025R0(item);
168    }
169
170    public Builder(HubItemOperationV2025R0ActionField action, WeblinkReferenceV2025R0 item) {
171      super();
172      this.action = new EnumWrapper<HubItemOperationV2025R0ActionField>(action);
173      this.item = new HubItemReferenceV2025R0(item);
174    }
175
176    public Builder(HubItemOperationV2025R0ActionField action, HubItemReferenceV2025R0 item) {
177      super();
178      this.action = new EnumWrapper<HubItemOperationV2025R0ActionField>(action);
179      this.item = item;
180    }
181
182    public Builder(
183        EnumWrapper<HubItemOperationV2025R0ActionField> action, FileReferenceV2025R0 item) {
184      super();
185      this.action = action;
186      this.item = new HubItemReferenceV2025R0(item);
187    }
188
189    public Builder(
190        EnumWrapper<HubItemOperationV2025R0ActionField> action, FolderReferenceV2025R0 item) {
191      super();
192      this.action = action;
193      this.item = new HubItemReferenceV2025R0(item);
194    }
195
196    public Builder(
197        EnumWrapper<HubItemOperationV2025R0ActionField> action, WeblinkReferenceV2025R0 item) {
198      super();
199      this.action = action;
200      this.item = new HubItemReferenceV2025R0(item);
201    }
202
203    public Builder(
204        EnumWrapper<HubItemOperationV2025R0ActionField> action, HubItemReferenceV2025R0 item) {
205      super();
206      this.action = action;
207      this.item = item;
208    }
209
210    public Builder parentId(String parentId) {
211      this.parentId = parentId;
212      return this;
213    }
214
215    public HubItemOperationV2025R0 build() {
216      return new HubItemOperationV2025R0(this);
217    }
218  }
219}