001package com.box.sdkgen.schemas.signrequestsigner;
002
003import com.box.sdkgen.internal.Nullable;
004import com.box.sdkgen.internal.NullableFieldTracker;
005import com.box.sdkgen.internal.SerializableObject;
006import com.box.sdkgen.internal.utils.DateTimeUtils;
007import com.box.sdkgen.serialization.json.EnumWrapper;
008import com.fasterxml.jackson.annotation.JsonFilter;
009import com.fasterxml.jackson.annotation.JsonProperty;
010import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
011import com.fasterxml.jackson.databind.annotation.JsonSerialize;
012import java.time.OffsetDateTime;
013import java.util.Objects;
014
015@JsonFilter("nullablePropertyFilter")
016public class SignRequestSignerSignerDecisionField extends SerializableObject {
017
018  /** Type of decision made by the signer. */
019  @JsonDeserialize(
020      using =
021          SignRequestSignerSignerDecisionTypeField
022              .SignRequestSignerSignerDecisionTypeFieldDeserializer.class)
023  @JsonSerialize(
024      using =
025          SignRequestSignerSignerDecisionTypeField
026              .SignRequestSignerSignerDecisionTypeFieldSerializer.class)
027  protected EnumWrapper<SignRequestSignerSignerDecisionTypeField> type;
028
029  /** Date and Time that the decision was made. */
030  @JsonProperty("finalized_at")
031  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
032  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
033  protected OffsetDateTime finalizedAt;
034
035  /** Additional info about the decision, such as the decline reason from the signer. */
036  @JsonProperty("additional_info")
037  @Nullable
038  protected String additionalInfo;
039
040  public SignRequestSignerSignerDecisionField() {
041    super();
042  }
043
044  protected SignRequestSignerSignerDecisionField(Builder builder) {
045    super();
046    this.type = builder.type;
047    this.finalizedAt = builder.finalizedAt;
048    this.additionalInfo = builder.additionalInfo;
049    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
050  }
051
052  public EnumWrapper<SignRequestSignerSignerDecisionTypeField> getType() {
053    return type;
054  }
055
056  public OffsetDateTime getFinalizedAt() {
057    return finalizedAt;
058  }
059
060  public String getAdditionalInfo() {
061    return additionalInfo;
062  }
063
064  @Override
065  public boolean equals(Object o) {
066    if (this == o) {
067      return true;
068    }
069    if (o == null || getClass() != o.getClass()) {
070      return false;
071    }
072    SignRequestSignerSignerDecisionField casted = (SignRequestSignerSignerDecisionField) o;
073    return Objects.equals(type, casted.type)
074        && Objects.equals(finalizedAt, casted.finalizedAt)
075        && Objects.equals(additionalInfo, casted.additionalInfo);
076  }
077
078  @Override
079  public int hashCode() {
080    return Objects.hash(type, finalizedAt, additionalInfo);
081  }
082
083  @Override
084  public String toString() {
085    return "SignRequestSignerSignerDecisionField{"
086        + "type='"
087        + type
088        + '\''
089        + ", "
090        + "finalizedAt='"
091        + finalizedAt
092        + '\''
093        + ", "
094        + "additionalInfo='"
095        + additionalInfo
096        + '\''
097        + "}";
098  }
099
100  public static class Builder extends NullableFieldTracker {
101
102    protected EnumWrapper<SignRequestSignerSignerDecisionTypeField> type;
103
104    protected OffsetDateTime finalizedAt;
105
106    protected String additionalInfo;
107
108    public Builder type(SignRequestSignerSignerDecisionTypeField type) {
109      this.type = new EnumWrapper<SignRequestSignerSignerDecisionTypeField>(type);
110      return this;
111    }
112
113    public Builder type(EnumWrapper<SignRequestSignerSignerDecisionTypeField> type) {
114      this.type = type;
115      return this;
116    }
117
118    public Builder finalizedAt(OffsetDateTime finalizedAt) {
119      this.finalizedAt = finalizedAt;
120      return this;
121    }
122
123    public Builder additionalInfo(String additionalInfo) {
124      this.additionalInfo = additionalInfo;
125      this.markNullableFieldAsSet("additional_info");
126      return this;
127    }
128
129    public SignRequestSignerSignerDecisionField build() {
130      return new SignRequestSignerSignerDecisionField(this);
131    }
132  }
133}