001package com.box.sdkgen.schemas.transcriptskillcard;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.serialization.json.EnumWrapper;
006import com.fasterxml.jackson.annotation.JsonFilter;
007import com.fasterxml.jackson.annotation.JsonProperty;
008import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
009import com.fasterxml.jackson.databind.annotation.JsonSerialize;
010import java.util.Objects;
011
012@JsonFilter("nullablePropertyFilter")
013public class TranscriptSkillCardSkillField extends SerializableObject {
014
015  /** The value will always be `service`. */
016  @JsonDeserialize(
017      using = TranscriptSkillCardSkillTypeField.TranscriptSkillCardSkillTypeFieldDeserializer.class)
018  @JsonSerialize(
019      using = TranscriptSkillCardSkillTypeField.TranscriptSkillCardSkillTypeFieldSerializer.class)
020  protected EnumWrapper<TranscriptSkillCardSkillTypeField> type;
021
022  /** A custom identifier that represent the service that applied this metadata. */
023  protected final String id;
024
025  public TranscriptSkillCardSkillField(@JsonProperty("id") String id) {
026    super();
027    this.id = id;
028    this.type =
029        new EnumWrapper<TranscriptSkillCardSkillTypeField>(
030            TranscriptSkillCardSkillTypeField.SERVICE);
031  }
032
033  protected TranscriptSkillCardSkillField(Builder builder) {
034    super();
035    this.type = builder.type;
036    this.id = builder.id;
037    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
038  }
039
040  public EnumWrapper<TranscriptSkillCardSkillTypeField> getType() {
041    return type;
042  }
043
044  public String getId() {
045    return id;
046  }
047
048  @Override
049  public boolean equals(Object o) {
050    if (this == o) {
051      return true;
052    }
053    if (o == null || getClass() != o.getClass()) {
054      return false;
055    }
056    TranscriptSkillCardSkillField casted = (TranscriptSkillCardSkillField) o;
057    return Objects.equals(type, casted.type) && Objects.equals(id, casted.id);
058  }
059
060  @Override
061  public int hashCode() {
062    return Objects.hash(type, id);
063  }
064
065  @Override
066  public String toString() {
067    return "TranscriptSkillCardSkillField{"
068        + "type='"
069        + type
070        + '\''
071        + ", "
072        + "id='"
073        + id
074        + '\''
075        + "}";
076  }
077
078  public static class Builder extends NullableFieldTracker {
079
080    protected EnumWrapper<TranscriptSkillCardSkillTypeField> type;
081
082    protected final String id;
083
084    public Builder(String id) {
085      super();
086      this.id = id;
087    }
088
089    public Builder type(TranscriptSkillCardSkillTypeField type) {
090      this.type = new EnumWrapper<TranscriptSkillCardSkillTypeField>(type);
091      return this;
092    }
093
094    public Builder type(EnumWrapper<TranscriptSkillCardSkillTypeField> type) {
095      this.type = type;
096      return this;
097    }
098
099    public TranscriptSkillCardSkillField build() {
100      if (this.type == null) {
101        this.type =
102            new EnumWrapper<TranscriptSkillCardSkillTypeField>(
103                TranscriptSkillCardSkillTypeField.SERVICE);
104      }
105      return new TranscriptSkillCardSkillField(this);
106    }
107  }
108}