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}