001package com.box.sdkgen.schemas.signrequestsignerinputdateasiavalidation;
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 date formatting rules used in Asia for a text field input by the signer. If set,
014 * this validation is mandatory. The date format follows `YYYY/MM/DD` pattern.
015 */
016@JsonFilter("nullablePropertyFilter")
017public class SignRequestSignerInputDateAsiaValidation extends SerializableObject {
018
019  /** Validates that the text input uses the Asian date format `YYYY/MM/DD`. */
020  @JsonDeserialize(
021      using =
022          SignRequestSignerInputDateAsiaValidationValidationTypeField
023              .SignRequestSignerInputDateAsiaValidationValidationTypeFieldDeserializer.class)
024  @JsonSerialize(
025      using =
026          SignRequestSignerInputDateAsiaValidationValidationTypeField
027              .SignRequestSignerInputDateAsiaValidationValidationTypeFieldSerializer.class)
028  @JsonProperty("validation_type")
029  protected EnumWrapper<SignRequestSignerInputDateAsiaValidationValidationTypeField> validationType;
030
031  public SignRequestSignerInputDateAsiaValidation() {
032    super();
033  }
034
035  protected SignRequestSignerInputDateAsiaValidation(Builder builder) {
036    super();
037    this.validationType = builder.validationType;
038    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
039  }
040
041  public EnumWrapper<SignRequestSignerInputDateAsiaValidationValidationTypeField>
042      getValidationType() {
043    return validationType;
044  }
045
046  @Override
047  public boolean equals(Object o) {
048    if (this == o) {
049      return true;
050    }
051    if (o == null || getClass() != o.getClass()) {
052      return false;
053    }
054    SignRequestSignerInputDateAsiaValidation casted = (SignRequestSignerInputDateAsiaValidation) o;
055    return Objects.equals(validationType, casted.validationType);
056  }
057
058  @Override
059  public int hashCode() {
060    return Objects.hash(validationType);
061  }
062
063  @Override
064  public String toString() {
065    return "SignRequestSignerInputDateAsiaValidation{"
066        + "validationType='"
067        + validationType
068        + '\''
069        + "}";
070  }
071
072  public static class Builder extends NullableFieldTracker {
073
074    protected EnumWrapper<SignRequestSignerInputDateAsiaValidationValidationTypeField>
075        validationType;
076
077    public Builder validationType(
078        SignRequestSignerInputDateAsiaValidationValidationTypeField validationType) {
079      this.validationType =
080          new EnumWrapper<SignRequestSignerInputDateAsiaValidationValidationTypeField>(
081              validationType);
082      return this;
083    }
084
085    public Builder validationType(
086        EnumWrapper<SignRequestSignerInputDateAsiaValidationValidationTypeField> validationType) {
087      this.validationType = validationType;
088      return this;
089    }
090
091    public SignRequestSignerInputDateAsiaValidation build() {
092      return new SignRequestSignerInputDateAsiaValidation(this);
093    }
094  }
095}