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}