001package com.box.sdkgen.schemas.signrequestsignerinputzip4validation;
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/**
013 * Specifies the validation rules for a text field input by the signer. If set, this validation is
014 * mandatory.
015 */
016@JsonFilter("nullablePropertyFilter")
017public class SignRequestSignerInputZip4Validation extends SerializableObject {
018
019  /** Validates that the text input is a ZIP+4 code. */
020  @JsonDeserialize(
021      using =
022          SignRequestSignerInputZip4ValidationValidationTypeField
023              .SignRequestSignerInputZip4ValidationValidationTypeFieldDeserializer.class)
024  @JsonSerialize(
025      using =
026          SignRequestSignerInputZip4ValidationValidationTypeField
027              .SignRequestSignerInputZip4ValidationValidationTypeFieldSerializer.class)
028  @JsonProperty("validation_type")
029  protected EnumWrapper<SignRequestSignerInputZip4ValidationValidationTypeField> validationType;
030
031  public SignRequestSignerInputZip4Validation() {
032    super();
033    this.validationType =
034        new EnumWrapper<SignRequestSignerInputZip4ValidationValidationTypeField>(
035            SignRequestSignerInputZip4ValidationValidationTypeField.ZIP_4);
036  }
037
038  protected SignRequestSignerInputZip4Validation(Builder builder) {
039    super();
040    this.validationType = builder.validationType;
041    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
042  }
043
044  public EnumWrapper<SignRequestSignerInputZip4ValidationValidationTypeField> getValidationType() {
045    return validationType;
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    SignRequestSignerInputZip4Validation casted = (SignRequestSignerInputZip4Validation) o;
057    return Objects.equals(validationType, casted.validationType);
058  }
059
060  @Override
061  public int hashCode() {
062    return Objects.hash(validationType);
063  }
064
065  @Override
066  public String toString() {
067    return "SignRequestSignerInputZip4Validation{"
068        + "validationType='"
069        + validationType
070        + '\''
071        + "}";
072  }
073
074  public static class Builder extends NullableFieldTracker {
075
076    protected EnumWrapper<SignRequestSignerInputZip4ValidationValidationTypeField> validationType;
077
078    public Builder() {
079      super();
080    }
081
082    public Builder validationType(
083        SignRequestSignerInputZip4ValidationValidationTypeField validationType) {
084      this.validationType =
085          new EnumWrapper<SignRequestSignerInputZip4ValidationValidationTypeField>(validationType);
086      return this;
087    }
088
089    public Builder validationType(
090        EnumWrapper<SignRequestSignerInputZip4ValidationValidationTypeField> validationType) {
091      this.validationType = validationType;
092      return this;
093    }
094
095    public SignRequestSignerInputZip4Validation build() {
096      if (this.validationType == null) {
097        this.validationType =
098            new EnumWrapper<SignRequestSignerInputZip4ValidationValidationTypeField>(
099                SignRequestSignerInputZip4ValidationValidationTypeField.ZIP_4);
100      }
101      return new SignRequestSignerInputZip4Validation(this);
102    }
103  }
104}