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