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