001package com.box.sdkgen.schemas.signrequestsignerinputdateusvalidation;
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 US date formatting rules for a text field input by the signer. If set, this
014 * validation is mandatory. The date format follows `MM/DD/YYYY` pattern.
015 */
016@JsonFilter("nullablePropertyFilter")
017public class SignRequestSignerInputDateUsValidation extends SerializableObject {
018
019  /** Validates that the text input uses the US date format `MM/DD/YYYY`. */
020  @JsonDeserialize(
021      using =
022          SignRequestSignerInputDateUsValidationValidationTypeField
023              .SignRequestSignerInputDateUsValidationValidationTypeFieldDeserializer.class)
024  @JsonSerialize(
025      using =
026          SignRequestSignerInputDateUsValidationValidationTypeField
027              .SignRequestSignerInputDateUsValidationValidationTypeFieldSerializer.class)
028  @JsonProperty("validation_type")
029  protected EnumWrapper<SignRequestSignerInputDateUsValidationValidationTypeField> validationType;
030
031  public SignRequestSignerInputDateUsValidation() {
032    super();
033  }
034
035  protected SignRequestSignerInputDateUsValidation(Builder builder) {
036    super();
037    this.validationType = builder.validationType;
038    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
039  }
040
041  public EnumWrapper<SignRequestSignerInputDateUsValidationValidationTypeField>
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    SignRequestSignerInputDateUsValidation casted = (SignRequestSignerInputDateUsValidation) 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 "SignRequestSignerInputDateUsValidation{"
066        + "validationType='"
067        + validationType
068        + '\''
069        + "}";
070  }
071
072  public static class Builder extends NullableFieldTracker {
073
074    protected EnumWrapper<SignRequestSignerInputDateUsValidationValidationTypeField> validationType;
075
076    public Builder validationType(
077        SignRequestSignerInputDateUsValidationValidationTypeField validationType) {
078      this.validationType =
079          new EnumWrapper<SignRequestSignerInputDateUsValidationValidationTypeField>(
080              validationType);
081      return this;
082    }
083
084    public Builder validationType(
085        EnumWrapper<SignRequestSignerInputDateUsValidationValidationTypeField> validationType) {
086      this.validationType = validationType;
087      return this;
088    }
089
090    public SignRequestSignerInputDateUsValidation build() {
091      return new SignRequestSignerInputDateUsValidation(this);
092    }
093  }
094}