001package com.box.sdkgen.schemas.statusskillcard; 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.Objects; 013 014/** A Box Skill metadata card that puts a status message in the metadata sidebar. */ 015@JsonFilter("nullablePropertyFilter") 016public class StatusSkillCard extends SerializableObject { 017 018 /** The optional date and time this card was created at. */ 019 @JsonProperty("created_at") 020 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 021 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 022 protected OffsetDateTime createdAt; 023 024 /** The value will always be `skill_card`. */ 025 @JsonDeserialize(using = StatusSkillCardTypeField.StatusSkillCardTypeFieldDeserializer.class) 026 @JsonSerialize(using = StatusSkillCardTypeField.StatusSkillCardTypeFieldSerializer.class) 027 protected EnumWrapper<StatusSkillCardTypeField> type; 028 029 /** The value will always be `status`. */ 030 @JsonDeserialize( 031 using = StatusSkillCardSkillCardTypeField.StatusSkillCardSkillCardTypeFieldDeserializer.class) 032 @JsonSerialize( 033 using = StatusSkillCardSkillCardTypeField.StatusSkillCardSkillCardTypeFieldSerializer.class) 034 @JsonProperty("skill_card_type") 035 protected EnumWrapper<StatusSkillCardSkillCardTypeField> skillCardType; 036 037 /** The title of the card. */ 038 @JsonProperty("skill_card_title") 039 protected StatusSkillCardSkillCardTitleField skillCardTitle; 040 041 /** 042 * Sets the status of the skill. This can be used to show a message to the user while the Skill is 043 * processing the data, or if it was not able to process the file. 044 */ 045 protected final StatusSkillCardStatusField status; 046 047 /** The service that applied this metadata. */ 048 protected final StatusSkillCardSkillField skill; 049 050 /** 051 * The invocation of this service, used to track which instance of a service applied the metadata. 052 */ 053 protected final StatusSkillCardInvocationField invocation; 054 055 public StatusSkillCard( 056 @JsonProperty("status") StatusSkillCardStatusField status, 057 @JsonProperty("skill") StatusSkillCardSkillField skill, 058 @JsonProperty("invocation") StatusSkillCardInvocationField invocation) { 059 super(); 060 this.status = status; 061 this.skill = skill; 062 this.invocation = invocation; 063 this.type = new EnumWrapper<StatusSkillCardTypeField>(StatusSkillCardTypeField.SKILL_CARD); 064 this.skillCardType = 065 new EnumWrapper<StatusSkillCardSkillCardTypeField>( 066 StatusSkillCardSkillCardTypeField.STATUS); 067 } 068 069 protected StatusSkillCard(Builder builder) { 070 super(); 071 this.createdAt = builder.createdAt; 072 this.type = builder.type; 073 this.skillCardType = builder.skillCardType; 074 this.skillCardTitle = builder.skillCardTitle; 075 this.status = builder.status; 076 this.skill = builder.skill; 077 this.invocation = builder.invocation; 078 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 079 } 080 081 public OffsetDateTime getCreatedAt() { 082 return createdAt; 083 } 084 085 public EnumWrapper<StatusSkillCardTypeField> getType() { 086 return type; 087 } 088 089 public EnumWrapper<StatusSkillCardSkillCardTypeField> getSkillCardType() { 090 return skillCardType; 091 } 092 093 public StatusSkillCardSkillCardTitleField getSkillCardTitle() { 094 return skillCardTitle; 095 } 096 097 public StatusSkillCardStatusField getStatus() { 098 return status; 099 } 100 101 public StatusSkillCardSkillField getSkill() { 102 return skill; 103 } 104 105 public StatusSkillCardInvocationField getInvocation() { 106 return invocation; 107 } 108 109 @Override 110 public boolean equals(Object o) { 111 if (this == o) { 112 return true; 113 } 114 if (o == null || getClass() != o.getClass()) { 115 return false; 116 } 117 StatusSkillCard casted = (StatusSkillCard) o; 118 return Objects.equals(createdAt, casted.createdAt) 119 && Objects.equals(type, casted.type) 120 && Objects.equals(skillCardType, casted.skillCardType) 121 && Objects.equals(skillCardTitle, casted.skillCardTitle) 122 && Objects.equals(status, casted.status) 123 && Objects.equals(skill, casted.skill) 124 && Objects.equals(invocation, casted.invocation); 125 } 126 127 @Override 128 public int hashCode() { 129 return Objects.hash(createdAt, type, skillCardType, skillCardTitle, status, skill, invocation); 130 } 131 132 @Override 133 public String toString() { 134 return "StatusSkillCard{" 135 + "createdAt='" 136 + createdAt 137 + '\'' 138 + ", " 139 + "type='" 140 + type 141 + '\'' 142 + ", " 143 + "skillCardType='" 144 + skillCardType 145 + '\'' 146 + ", " 147 + "skillCardTitle='" 148 + skillCardTitle 149 + '\'' 150 + ", " 151 + "status='" 152 + status 153 + '\'' 154 + ", " 155 + "skill='" 156 + skill 157 + '\'' 158 + ", " 159 + "invocation='" 160 + invocation 161 + '\'' 162 + "}"; 163 } 164 165 public static class Builder extends NullableFieldTracker { 166 167 protected OffsetDateTime createdAt; 168 169 protected EnumWrapper<StatusSkillCardTypeField> type; 170 171 protected EnumWrapper<StatusSkillCardSkillCardTypeField> skillCardType; 172 173 protected StatusSkillCardSkillCardTitleField skillCardTitle; 174 175 protected final StatusSkillCardStatusField status; 176 177 protected final StatusSkillCardSkillField skill; 178 179 protected final StatusSkillCardInvocationField invocation; 180 181 public Builder( 182 StatusSkillCardStatusField status, 183 StatusSkillCardSkillField skill, 184 StatusSkillCardInvocationField invocation) { 185 super(); 186 this.status = status; 187 this.skill = skill; 188 this.invocation = invocation; 189 } 190 191 public Builder createdAt(OffsetDateTime createdAt) { 192 this.createdAt = createdAt; 193 return this; 194 } 195 196 public Builder type(StatusSkillCardTypeField type) { 197 this.type = new EnumWrapper<StatusSkillCardTypeField>(type); 198 return this; 199 } 200 201 public Builder type(EnumWrapper<StatusSkillCardTypeField> type) { 202 this.type = type; 203 return this; 204 } 205 206 public Builder skillCardType(StatusSkillCardSkillCardTypeField skillCardType) { 207 this.skillCardType = new EnumWrapper<StatusSkillCardSkillCardTypeField>(skillCardType); 208 return this; 209 } 210 211 public Builder skillCardType(EnumWrapper<StatusSkillCardSkillCardTypeField> skillCardType) { 212 this.skillCardType = skillCardType; 213 return this; 214 } 215 216 public Builder skillCardTitle(StatusSkillCardSkillCardTitleField skillCardTitle) { 217 this.skillCardTitle = skillCardTitle; 218 return this; 219 } 220 221 public StatusSkillCard build() { 222 if (this.type == null) { 223 this.type = new EnumWrapper<StatusSkillCardTypeField>(StatusSkillCardTypeField.SKILL_CARD); 224 } 225 if (this.skillCardType == null) { 226 this.skillCardType = 227 new EnumWrapper<StatusSkillCardSkillCardTypeField>( 228 StatusSkillCardSkillCardTypeField.STATUS); 229 } 230 return new StatusSkillCard(this); 231 } 232 } 233}