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