001package com.box.sdkgen.schemas.signrequestsignerinputcustomvalidation;
002
003import com.box.sdkgen.internal.Nullable;
004import com.box.sdkgen.internal.NullableFieldTracker;
005import com.box.sdkgen.internal.SerializableObject;
006import com.box.sdkgen.serialization.json.EnumWrapper;
007import com.fasterxml.jackson.annotation.JsonFilter;
008import com.fasterxml.jackson.annotation.JsonProperty;
009import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
010import com.fasterxml.jackson.databind.annotation.JsonSerialize;
011import java.util.Objects;
012
013/**
014 * Specifies the custom validation rules for a text field input by the signer. If set, this
015 * validation is mandatory.
016 */
017@JsonFilter("nullablePropertyFilter")
018public class SignRequestSignerInputCustomValidation extends SerializableObject {
019
020  /**
021   * Defines the validation format for the text input as custom. A custom regular expression is used
022   * for validation.
023   */
024  @JsonDeserialize(
025      using =
026          SignRequestSignerInputCustomValidationValidationTypeField
027              .SignRequestSignerInputCustomValidationValidationTypeFieldDeserializer.class)
028  @JsonSerialize(
029      using =
030          SignRequestSignerInputCustomValidationValidationTypeField
031              .SignRequestSignerInputCustomValidationValidationTypeFieldSerializer.class)
032  @JsonProperty("validation_type")
033  protected EnumWrapper<SignRequestSignerInputCustomValidationValidationTypeField> validationType;
034
035  /** Regular expression used for validation. */
036  @JsonProperty("custom_regex")
037  @Nullable
038  protected String customRegex;
039
040  /** Error message shown if input fails custom regular expression validation. */
041  @JsonProperty("custom_error_message")
042  @Nullable
043  protected String customErrorMessage;
044
045  public SignRequestSignerInputCustomValidation() {
046    super();
047    this.validationType =
048        new EnumWrapper<SignRequestSignerInputCustomValidationValidationTypeField>(
049            SignRequestSignerInputCustomValidationValidationTypeField.CUSTOM);
050  }
051
052  protected SignRequestSignerInputCustomValidation(Builder builder) {
053    super();
054    this.validationType = builder.validationType;
055    this.customRegex = builder.customRegex;
056    this.customErrorMessage = builder.customErrorMessage;
057    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
058  }
059
060  public EnumWrapper<SignRequestSignerInputCustomValidationValidationTypeField>
061      getValidationType() {
062    return validationType;
063  }
064
065  public String getCustomRegex() {
066    return customRegex;
067  }
068
069  public String getCustomErrorMessage() {
070    return customErrorMessage;
071  }
072
073  @Override
074  public boolean equals(Object o) {
075    if (this == o) {
076      return true;
077    }
078    if (o == null || getClass() != o.getClass()) {
079      return false;
080    }
081    SignRequestSignerInputCustomValidation casted = (SignRequestSignerInputCustomValidation) o;
082    return Objects.equals(validationType, casted.validationType)
083        && Objects.equals(customRegex, casted.customRegex)
084        && Objects.equals(customErrorMessage, casted.customErrorMessage);
085  }
086
087  @Override
088  public int hashCode() {
089    return Objects.hash(validationType, customRegex, customErrorMessage);
090  }
091
092  @Override
093  public String toString() {
094    return "SignRequestSignerInputCustomValidation{"
095        + "validationType='"
096        + validationType
097        + '\''
098        + ", "
099        + "customRegex='"
100        + customRegex
101        + '\''
102        + ", "
103        + "customErrorMessage='"
104        + customErrorMessage
105        + '\''
106        + "}";
107  }
108
109  public static class Builder extends NullableFieldTracker {
110
111    protected EnumWrapper<SignRequestSignerInputCustomValidationValidationTypeField> validationType;
112
113    protected String customRegex;
114
115    protected String customErrorMessage;
116
117    public Builder() {
118      super();
119    }
120
121    public Builder validationType(
122        SignRequestSignerInputCustomValidationValidationTypeField validationType) {
123      this.validationType =
124          new EnumWrapper<SignRequestSignerInputCustomValidationValidationTypeField>(
125              validationType);
126      return this;
127    }
128
129    public Builder validationType(
130        EnumWrapper<SignRequestSignerInputCustomValidationValidationTypeField> validationType) {
131      this.validationType = validationType;
132      return this;
133    }
134
135    public Builder customRegex(String customRegex) {
136      this.customRegex = customRegex;
137      this.markNullableFieldAsSet("custom_regex");
138      return this;
139    }
140
141    public Builder customErrorMessage(String customErrorMessage) {
142      this.customErrorMessage = customErrorMessage;
143      this.markNullableFieldAsSet("custom_error_message");
144      return this;
145    }
146
147    public SignRequestSignerInputCustomValidation build() {
148      if (this.validationType == null) {
149        this.validationType =
150            new EnumWrapper<SignRequestSignerInputCustomValidationValidationTypeField>(
151                SignRequestSignerInputCustomValidationValidationTypeField.CUSTOM);
152      }
153      return new SignRequestSignerInputCustomValidation(this);
154    }
155  }
156}