001package com.box.sdkgen.schemas.keywordskillcard; 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 skill card that contains a set of keywords. */ 016@JsonFilter("nullablePropertyFilter") 017public class KeywordSkillCard 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 = KeywordSkillCardTypeField.KeywordSkillCardTypeFieldDeserializer.class) 027 @JsonSerialize(using = KeywordSkillCardTypeField.KeywordSkillCardTypeFieldSerializer.class) 028 protected EnumWrapper<KeywordSkillCardTypeField> type; 029 030 /** The value will always be `keyword`. */ 031 @JsonDeserialize( 032 using = 033 KeywordSkillCardSkillCardTypeField.KeywordSkillCardSkillCardTypeFieldDeserializer.class) 034 @JsonSerialize( 035 using = KeywordSkillCardSkillCardTypeField.KeywordSkillCardSkillCardTypeFieldSerializer.class) 036 @JsonProperty("skill_card_type") 037 protected EnumWrapper<KeywordSkillCardSkillCardTypeField> skillCardType; 038 039 /** The title of the card. */ 040 @JsonProperty("skill_card_title") 041 protected KeywordSkillCardSkillCardTitleField skillCardTitle; 042 043 /** The service that applied this metadata. */ 044 protected final KeywordSkillCardSkillField skill; 045 046 /** 047 * The invocation of this service, used to track which instance of a service applied the metadata. 048 */ 049 protected final KeywordSkillCardInvocationField invocation; 050 051 /** An list of entries in the metadata card. */ 052 protected final List<KeywordSkillCardEntriesField> entries; 053 054 public KeywordSkillCard( 055 @JsonProperty("skill") KeywordSkillCardSkillField skill, 056 @JsonProperty("invocation") KeywordSkillCardInvocationField invocation, 057 @JsonProperty("entries") List<KeywordSkillCardEntriesField> entries) { 058 super(); 059 this.skill = skill; 060 this.invocation = invocation; 061 this.entries = entries; 062 this.type = new EnumWrapper<KeywordSkillCardTypeField>(KeywordSkillCardTypeField.SKILL_CARD); 063 this.skillCardType = 064 new EnumWrapper<KeywordSkillCardSkillCardTypeField>( 065 KeywordSkillCardSkillCardTypeField.KEYWORD); 066 } 067 068 protected KeywordSkillCard(Builder builder) { 069 super(); 070 this.createdAt = builder.createdAt; 071 this.type = builder.type; 072 this.skillCardType = builder.skillCardType; 073 this.skillCardTitle = builder.skillCardTitle; 074 this.skill = builder.skill; 075 this.invocation = builder.invocation; 076 this.entries = builder.entries; 077 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 078 } 079 080 public OffsetDateTime getCreatedAt() { 081 return createdAt; 082 } 083 084 public EnumWrapper<KeywordSkillCardTypeField> getType() { 085 return type; 086 } 087 088 public EnumWrapper<KeywordSkillCardSkillCardTypeField> getSkillCardType() { 089 return skillCardType; 090 } 091 092 public KeywordSkillCardSkillCardTitleField getSkillCardTitle() { 093 return skillCardTitle; 094 } 095 096 public KeywordSkillCardSkillField getSkill() { 097 return skill; 098 } 099 100 public KeywordSkillCardInvocationField getInvocation() { 101 return invocation; 102 } 103 104 public List<KeywordSkillCardEntriesField> getEntries() { 105 return entries; 106 } 107 108 @Override 109 public boolean equals(Object o) { 110 if (this == o) { 111 return true; 112 } 113 if (o == null || getClass() != o.getClass()) { 114 return false; 115 } 116 KeywordSkillCard casted = (KeywordSkillCard) o; 117 return Objects.equals(createdAt, casted.createdAt) 118 && Objects.equals(type, casted.type) 119 && Objects.equals(skillCardType, casted.skillCardType) 120 && Objects.equals(skillCardTitle, casted.skillCardTitle) 121 && Objects.equals(skill, casted.skill) 122 && Objects.equals(invocation, casted.invocation) 123 && Objects.equals(entries, casted.entries); 124 } 125 126 @Override 127 public int hashCode() { 128 return Objects.hash(createdAt, type, skillCardType, skillCardTitle, skill, invocation, entries); 129 } 130 131 @Override 132 public String toString() { 133 return "KeywordSkillCard{" 134 + "createdAt='" 135 + createdAt 136 + '\'' 137 + ", " 138 + "type='" 139 + type 140 + '\'' 141 + ", " 142 + "skillCardType='" 143 + skillCardType 144 + '\'' 145 + ", " 146 + "skillCardTitle='" 147 + skillCardTitle 148 + '\'' 149 + ", " 150 + "skill='" 151 + skill 152 + '\'' 153 + ", " 154 + "invocation='" 155 + invocation 156 + '\'' 157 + ", " 158 + "entries='" 159 + entries 160 + '\'' 161 + "}"; 162 } 163 164 public static class Builder extends NullableFieldTracker { 165 166 protected OffsetDateTime createdAt; 167 168 protected EnumWrapper<KeywordSkillCardTypeField> type; 169 170 protected EnumWrapper<KeywordSkillCardSkillCardTypeField> skillCardType; 171 172 protected KeywordSkillCardSkillCardTitleField skillCardTitle; 173 174 protected final KeywordSkillCardSkillField skill; 175 176 protected final KeywordSkillCardInvocationField invocation; 177 178 protected final List<KeywordSkillCardEntriesField> entries; 179 180 public Builder( 181 KeywordSkillCardSkillField skill, 182 KeywordSkillCardInvocationField invocation, 183 List<KeywordSkillCardEntriesField> entries) { 184 super(); 185 this.skill = skill; 186 this.invocation = invocation; 187 this.entries = entries; 188 } 189 190 public Builder createdAt(OffsetDateTime createdAt) { 191 this.createdAt = createdAt; 192 return this; 193 } 194 195 public Builder type(KeywordSkillCardTypeField type) { 196 this.type = new EnumWrapper<KeywordSkillCardTypeField>(type); 197 return this; 198 } 199 200 public Builder type(EnumWrapper<KeywordSkillCardTypeField> type) { 201 this.type = type; 202 return this; 203 } 204 205 public Builder skillCardType(KeywordSkillCardSkillCardTypeField skillCardType) { 206 this.skillCardType = new EnumWrapper<KeywordSkillCardSkillCardTypeField>(skillCardType); 207 return this; 208 } 209 210 public Builder skillCardType(EnumWrapper<KeywordSkillCardSkillCardTypeField> skillCardType) { 211 this.skillCardType = skillCardType; 212 return this; 213 } 214 215 public Builder skillCardTitle(KeywordSkillCardSkillCardTitleField skillCardTitle) { 216 this.skillCardTitle = skillCardTitle; 217 return this; 218 } 219 220 public KeywordSkillCard build() { 221 if (this.type == null) { 222 this.type = 223 new EnumWrapper<KeywordSkillCardTypeField>(KeywordSkillCardTypeField.SKILL_CARD); 224 } 225 if (this.skillCardType == null) { 226 this.skillCardType = 227 new EnumWrapper<KeywordSkillCardSkillCardTypeField>( 228 KeywordSkillCardSkillCardTypeField.KEYWORD); 229 } 230 return new KeywordSkillCard(this); 231 } 232 } 233}