001package com.box.sdkgen.schemas.transcriptskillcard;
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 adds a transcript to a file. */
016@JsonFilter("nullablePropertyFilter")
017public class TranscriptSkillCard 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(
027      using = TranscriptSkillCardTypeField.TranscriptSkillCardTypeFieldDeserializer.class)
028  @JsonSerialize(using = TranscriptSkillCardTypeField.TranscriptSkillCardTypeFieldSerializer.class)
029  protected EnumWrapper<TranscriptSkillCardTypeField> type;
030
031  /** The value will always be `transcript`. */
032  @JsonDeserialize(
033      using =
034          TranscriptSkillCardSkillCardTypeField.TranscriptSkillCardSkillCardTypeFieldDeserializer
035              .class)
036  @JsonSerialize(
037      using =
038          TranscriptSkillCardSkillCardTypeField.TranscriptSkillCardSkillCardTypeFieldSerializer
039              .class)
040  @JsonProperty("skill_card_type")
041  protected EnumWrapper<TranscriptSkillCardSkillCardTypeField> skillCardType;
042
043  /** The title of the card. */
044  @JsonProperty("skill_card_title")
045  protected TranscriptSkillCardSkillCardTitleField skillCardTitle;
046
047  /** The service that applied this metadata. */
048  protected final TranscriptSkillCardSkillField skill;
049
050  /**
051   * The invocation of this service, used to track which instance of a service applied the metadata.
052   */
053  protected final TranscriptSkillCardInvocationField invocation;
054
055  /**
056   * An optional total duration in seconds.
057   *
058   * <p>Used with a `skill_card_type` of `transcript` or `timeline`.
059   */
060  protected Long duration;
061
062  /**
063   * An list of entries for the card. This represents the individual entries of the transcription.
064   */
065  protected final List<TranscriptSkillCardEntriesField> entries;
066
067  public TranscriptSkillCard(
068      @JsonProperty("skill") TranscriptSkillCardSkillField skill,
069      @JsonProperty("invocation") TranscriptSkillCardInvocationField invocation,
070      @JsonProperty("entries") List<TranscriptSkillCardEntriesField> entries) {
071    super();
072    this.skill = skill;
073    this.invocation = invocation;
074    this.entries = entries;
075    this.type =
076        new EnumWrapper<TranscriptSkillCardTypeField>(TranscriptSkillCardTypeField.SKILL_CARD);
077    this.skillCardType =
078        new EnumWrapper<TranscriptSkillCardSkillCardTypeField>(
079            TranscriptSkillCardSkillCardTypeField.TRANSCRIPT);
080  }
081
082  protected TranscriptSkillCard(Builder builder) {
083    super();
084    this.createdAt = builder.createdAt;
085    this.type = builder.type;
086    this.skillCardType = builder.skillCardType;
087    this.skillCardTitle = builder.skillCardTitle;
088    this.skill = builder.skill;
089    this.invocation = builder.invocation;
090    this.duration = builder.duration;
091    this.entries = builder.entries;
092    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
093  }
094
095  public OffsetDateTime getCreatedAt() {
096    return createdAt;
097  }
098
099  public EnumWrapper<TranscriptSkillCardTypeField> getType() {
100    return type;
101  }
102
103  public EnumWrapper<TranscriptSkillCardSkillCardTypeField> getSkillCardType() {
104    return skillCardType;
105  }
106
107  public TranscriptSkillCardSkillCardTitleField getSkillCardTitle() {
108    return skillCardTitle;
109  }
110
111  public TranscriptSkillCardSkillField getSkill() {
112    return skill;
113  }
114
115  public TranscriptSkillCardInvocationField getInvocation() {
116    return invocation;
117  }
118
119  public Long getDuration() {
120    return duration;
121  }
122
123  public List<TranscriptSkillCardEntriesField> getEntries() {
124    return entries;
125  }
126
127  @Override
128  public boolean equals(Object o) {
129    if (this == o) {
130      return true;
131    }
132    if (o == null || getClass() != o.getClass()) {
133      return false;
134    }
135    TranscriptSkillCard casted = (TranscriptSkillCard) o;
136    return Objects.equals(createdAt, casted.createdAt)
137        && Objects.equals(type, casted.type)
138        && Objects.equals(skillCardType, casted.skillCardType)
139        && Objects.equals(skillCardTitle, casted.skillCardTitle)
140        && Objects.equals(skill, casted.skill)
141        && Objects.equals(invocation, casted.invocation)
142        && Objects.equals(duration, casted.duration)
143        && Objects.equals(entries, casted.entries);
144  }
145
146  @Override
147  public int hashCode() {
148    return Objects.hash(
149        createdAt, type, skillCardType, skillCardTitle, skill, invocation, duration, entries);
150  }
151
152  @Override
153  public String toString() {
154    return "TranscriptSkillCard{"
155        + "createdAt='"
156        + createdAt
157        + '\''
158        + ", "
159        + "type='"
160        + type
161        + '\''
162        + ", "
163        + "skillCardType='"
164        + skillCardType
165        + '\''
166        + ", "
167        + "skillCardTitle='"
168        + skillCardTitle
169        + '\''
170        + ", "
171        + "skill='"
172        + skill
173        + '\''
174        + ", "
175        + "invocation='"
176        + invocation
177        + '\''
178        + ", "
179        + "duration='"
180        + duration
181        + '\''
182        + ", "
183        + "entries='"
184        + entries
185        + '\''
186        + "}";
187  }
188
189  public static class Builder extends NullableFieldTracker {
190
191    protected OffsetDateTime createdAt;
192
193    protected EnumWrapper<TranscriptSkillCardTypeField> type;
194
195    protected EnumWrapper<TranscriptSkillCardSkillCardTypeField> skillCardType;
196
197    protected TranscriptSkillCardSkillCardTitleField skillCardTitle;
198
199    protected final TranscriptSkillCardSkillField skill;
200
201    protected final TranscriptSkillCardInvocationField invocation;
202
203    protected Long duration;
204
205    protected final List<TranscriptSkillCardEntriesField> entries;
206
207    public Builder(
208        TranscriptSkillCardSkillField skill,
209        TranscriptSkillCardInvocationField invocation,
210        List<TranscriptSkillCardEntriesField> entries) {
211      super();
212      this.skill = skill;
213      this.invocation = invocation;
214      this.entries = entries;
215    }
216
217    public Builder createdAt(OffsetDateTime createdAt) {
218      this.createdAt = createdAt;
219      return this;
220    }
221
222    public Builder type(TranscriptSkillCardTypeField type) {
223      this.type = new EnumWrapper<TranscriptSkillCardTypeField>(type);
224      return this;
225    }
226
227    public Builder type(EnumWrapper<TranscriptSkillCardTypeField> type) {
228      this.type = type;
229      return this;
230    }
231
232    public Builder skillCardType(TranscriptSkillCardSkillCardTypeField skillCardType) {
233      this.skillCardType = new EnumWrapper<TranscriptSkillCardSkillCardTypeField>(skillCardType);
234      return this;
235    }
236
237    public Builder skillCardType(EnumWrapper<TranscriptSkillCardSkillCardTypeField> skillCardType) {
238      this.skillCardType = skillCardType;
239      return this;
240    }
241
242    public Builder skillCardTitle(TranscriptSkillCardSkillCardTitleField skillCardTitle) {
243      this.skillCardTitle = skillCardTitle;
244      return this;
245    }
246
247    public Builder duration(Long duration) {
248      this.duration = duration;
249      return this;
250    }
251
252    public TranscriptSkillCard build() {
253      if (this.type == null) {
254        this.type =
255            new EnumWrapper<TranscriptSkillCardTypeField>(TranscriptSkillCardTypeField.SKILL_CARD);
256      }
257      if (this.skillCardType == null) {
258        this.skillCardType =
259            new EnumWrapper<TranscriptSkillCardSkillCardTypeField>(
260                TranscriptSkillCardSkillCardTypeField.TRANSCRIPT);
261      }
262      return new TranscriptSkillCard(this);
263    }
264  }
265}