001package com.box.sdkgen.schemas.timelineskillcard;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.internal.utils.DateTimeUtils;
006import com.box.sdkgen.serialization.json.EnumWrapper;
007import com.fasterxml.jackson.annotation.JsonFilter;
008import com.fasterxml.jackson.annotation.JsonProperty;
009import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
010import com.fasterxml.jackson.databind.annotation.JsonSerialize;
011import java.time.OffsetDateTime;
012import java.util.List;
013import java.util.Objects;
014
015/** A Box Skill metadata card that places a list of images on a timeline. */
016@JsonFilter("nullablePropertyFilter")
017public class TimelineSkillCard extends SerializableObject {
018
019  /** The optional date and time this card was created at. */
020  @JsonProperty("created_at")
021  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
022  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
023  protected OffsetDateTime createdAt;
024
025  /** The value will always be `skill_card`. */
026  @JsonDeserialize(using = TimelineSkillCardTypeField.TimelineSkillCardTypeFieldDeserializer.class)
027  @JsonSerialize(using = TimelineSkillCardTypeField.TimelineSkillCardTypeFieldSerializer.class)
028  protected EnumWrapper<TimelineSkillCardTypeField> type;
029
030  /** The value will always be `timeline`. */
031  @JsonDeserialize(
032      using =
033          TimelineSkillCardSkillCardTypeField.TimelineSkillCardSkillCardTypeFieldDeserializer.class)
034  @JsonSerialize(
035      using =
036          TimelineSkillCardSkillCardTypeField.TimelineSkillCardSkillCardTypeFieldSerializer.class)
037  @JsonProperty("skill_card_type")
038  protected EnumWrapper<TimelineSkillCardSkillCardTypeField> skillCardType;
039
040  /** The title of the card. */
041  @JsonProperty("skill_card_title")
042  protected TimelineSkillCardSkillCardTitleField skillCardTitle;
043
044  /** The service that applied this metadata. */
045  protected final TimelineSkillCardSkillField skill;
046
047  /**
048   * The invocation of this service, used to track which instance of a service applied the metadata.
049   */
050  protected final TimelineSkillCardInvocationField invocation;
051
052  /** An total duration in seconds of the timeline. */
053  protected Long duration;
054
055  /** A list of entries on the timeline. */
056  protected final List<TimelineSkillCardEntriesField> entries;
057
058  public TimelineSkillCard(
059      @JsonProperty("skill") TimelineSkillCardSkillField skill,
060      @JsonProperty("invocation") TimelineSkillCardInvocationField invocation,
061      @JsonProperty("entries") List<TimelineSkillCardEntriesField> entries) {
062    super();
063    this.skill = skill;
064    this.invocation = invocation;
065    this.entries = entries;
066    this.type = new EnumWrapper<TimelineSkillCardTypeField>(TimelineSkillCardTypeField.SKILL_CARD);
067    this.skillCardType =
068        new EnumWrapper<TimelineSkillCardSkillCardTypeField>(
069            TimelineSkillCardSkillCardTypeField.TIMELINE);
070  }
071
072  protected TimelineSkillCard(Builder builder) {
073    super();
074    this.createdAt = builder.createdAt;
075    this.type = builder.type;
076    this.skillCardType = builder.skillCardType;
077    this.skillCardTitle = builder.skillCardTitle;
078    this.skill = builder.skill;
079    this.invocation = builder.invocation;
080    this.duration = builder.duration;
081    this.entries = builder.entries;
082    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
083  }
084
085  public OffsetDateTime getCreatedAt() {
086    return createdAt;
087  }
088
089  public EnumWrapper<TimelineSkillCardTypeField> getType() {
090    return type;
091  }
092
093  public EnumWrapper<TimelineSkillCardSkillCardTypeField> getSkillCardType() {
094    return skillCardType;
095  }
096
097  public TimelineSkillCardSkillCardTitleField getSkillCardTitle() {
098    return skillCardTitle;
099  }
100
101  public TimelineSkillCardSkillField getSkill() {
102    return skill;
103  }
104
105  public TimelineSkillCardInvocationField getInvocation() {
106    return invocation;
107  }
108
109  public Long getDuration() {
110    return duration;
111  }
112
113  public List<TimelineSkillCardEntriesField> getEntries() {
114    return entries;
115  }
116
117  @Override
118  public boolean equals(Object o) {
119    if (this == o) {
120      return true;
121    }
122    if (o == null || getClass() != o.getClass()) {
123      return false;
124    }
125    TimelineSkillCard casted = (TimelineSkillCard) o;
126    return Objects.equals(createdAt, casted.createdAt)
127        && Objects.equals(type, casted.type)
128        && Objects.equals(skillCardType, casted.skillCardType)
129        && Objects.equals(skillCardTitle, casted.skillCardTitle)
130        && Objects.equals(skill, casted.skill)
131        && Objects.equals(invocation, casted.invocation)
132        && Objects.equals(duration, casted.duration)
133        && Objects.equals(entries, casted.entries);
134  }
135
136  @Override
137  public int hashCode() {
138    return Objects.hash(
139        createdAt, type, skillCardType, skillCardTitle, skill, invocation, duration, entries);
140  }
141
142  @Override
143  public String toString() {
144    return "TimelineSkillCard{"
145        + "createdAt='"
146        + createdAt
147        + '\''
148        + ", "
149        + "type='"
150        + type
151        + '\''
152        + ", "
153        + "skillCardType='"
154        + skillCardType
155        + '\''
156        + ", "
157        + "skillCardTitle='"
158        + skillCardTitle
159        + '\''
160        + ", "
161        + "skill='"
162        + skill
163        + '\''
164        + ", "
165        + "invocation='"
166        + invocation
167        + '\''
168        + ", "
169        + "duration='"
170        + duration
171        + '\''
172        + ", "
173        + "entries='"
174        + entries
175        + '\''
176        + "}";
177  }
178
179  public static class Builder extends NullableFieldTracker {
180
181    protected OffsetDateTime createdAt;
182
183    protected EnumWrapper<TimelineSkillCardTypeField> type;
184
185    protected EnumWrapper<TimelineSkillCardSkillCardTypeField> skillCardType;
186
187    protected TimelineSkillCardSkillCardTitleField skillCardTitle;
188
189    protected final TimelineSkillCardSkillField skill;
190
191    protected final TimelineSkillCardInvocationField invocation;
192
193    protected Long duration;
194
195    protected final List<TimelineSkillCardEntriesField> entries;
196
197    public Builder(
198        TimelineSkillCardSkillField skill,
199        TimelineSkillCardInvocationField invocation,
200        List<TimelineSkillCardEntriesField> entries) {
201      super();
202      this.skill = skill;
203      this.invocation = invocation;
204      this.entries = entries;
205    }
206
207    public Builder createdAt(OffsetDateTime createdAt) {
208      this.createdAt = createdAt;
209      return this;
210    }
211
212    public Builder type(TimelineSkillCardTypeField type) {
213      this.type = new EnumWrapper<TimelineSkillCardTypeField>(type);
214      return this;
215    }
216
217    public Builder type(EnumWrapper<TimelineSkillCardTypeField> type) {
218      this.type = type;
219      return this;
220    }
221
222    public Builder skillCardType(TimelineSkillCardSkillCardTypeField skillCardType) {
223      this.skillCardType = new EnumWrapper<TimelineSkillCardSkillCardTypeField>(skillCardType);
224      return this;
225    }
226
227    public Builder skillCardType(EnumWrapper<TimelineSkillCardSkillCardTypeField> skillCardType) {
228      this.skillCardType = skillCardType;
229      return this;
230    }
231
232    public Builder skillCardTitle(TimelineSkillCardSkillCardTitleField skillCardTitle) {
233      this.skillCardTitle = skillCardTitle;
234      return this;
235    }
236
237    public Builder duration(Long duration) {
238      this.duration = duration;
239      return this;
240    }
241
242    public TimelineSkillCard build() {
243      if (this.type == null) {
244        this.type =
245            new EnumWrapper<TimelineSkillCardTypeField>(TimelineSkillCardTypeField.SKILL_CARD);
246      }
247      if (this.skillCardType == null) {
248        this.skillCardType =
249            new EnumWrapper<TimelineSkillCardSkillCardTypeField>(
250                TimelineSkillCardSkillCardTypeField.TIMELINE);
251      }
252      return new TimelineSkillCard(this);
253    }
254  }
255}