001package com.box.sdkgen.schemas.emailalias;
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/** An email alias for a user. */
013@JsonFilter("nullablePropertyFilter")
014public class EmailAlias extends SerializableObject {
015
016  /** The unique identifier for this object. */
017  protected String id;
018
019  /** The value will always be `email_alias`. */
020  @JsonDeserialize(using = EmailAliasTypeField.EmailAliasTypeFieldDeserializer.class)
021  @JsonSerialize(using = EmailAliasTypeField.EmailAliasTypeFieldSerializer.class)
022  protected EnumWrapper<EmailAliasTypeField> type;
023
024  /** The email address. */
025  protected String email;
026
027  /** Whether the email address has been confirmed. */
028  @JsonProperty("is_confirmed")
029  protected Boolean isConfirmed;
030
031  public EmailAlias() {
032    super();
033  }
034
035  protected EmailAlias(Builder builder) {
036    super();
037    this.id = builder.id;
038    this.type = builder.type;
039    this.email = builder.email;
040    this.isConfirmed = builder.isConfirmed;
041    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
042  }
043
044  public String getId() {
045    return id;
046  }
047
048  public EnumWrapper<EmailAliasTypeField> getType() {
049    return type;
050  }
051
052  public String getEmail() {
053    return email;
054  }
055
056  public Boolean getIsConfirmed() {
057    return isConfirmed;
058  }
059
060  @Override
061  public boolean equals(Object o) {
062    if (this == o) {
063      return true;
064    }
065    if (o == null || getClass() != o.getClass()) {
066      return false;
067    }
068    EmailAlias casted = (EmailAlias) o;
069    return Objects.equals(id, casted.id)
070        && Objects.equals(type, casted.type)
071        && Objects.equals(email, casted.email)
072        && Objects.equals(isConfirmed, casted.isConfirmed);
073  }
074
075  @Override
076  public int hashCode() {
077    return Objects.hash(id, type, email, isConfirmed);
078  }
079
080  @Override
081  public String toString() {
082    return "EmailAlias{"
083        + "id='"
084        + id
085        + '\''
086        + ", "
087        + "type='"
088        + type
089        + '\''
090        + ", "
091        + "email='"
092        + email
093        + '\''
094        + ", "
095        + "isConfirmed='"
096        + isConfirmed
097        + '\''
098        + "}";
099  }
100
101  public static class Builder extends NullableFieldTracker {
102
103    protected String id;
104
105    protected EnumWrapper<EmailAliasTypeField> type;
106
107    protected String email;
108
109    protected Boolean isConfirmed;
110
111    public Builder id(String id) {
112      this.id = id;
113      return this;
114    }
115
116    public Builder type(EmailAliasTypeField type) {
117      this.type = new EnumWrapper<EmailAliasTypeField>(type);
118      return this;
119    }
120
121    public Builder type(EnumWrapper<EmailAliasTypeField> type) {
122      this.type = type;
123      return this;
124    }
125
126    public Builder email(String email) {
127      this.email = email;
128      return this;
129    }
130
131    public Builder isConfirmed(Boolean isConfirmed) {
132      this.isConfirmed = isConfirmed;
133      return this;
134    }
135
136    public EmailAlias build() {
137      return new EmailAlias(this);
138    }
139  }
140}