001package com.box.sdkgen.schemas.signrequestsignerinput;
002
003import com.box.sdkgen.schemas.signrequestprefilltag.SignRequestPrefillTag;
004import com.box.sdkgen.schemas.signrequestsignerinputcustomvalidation.SignRequestSignerInputCustomValidation;
005import com.box.sdkgen.schemas.signrequestsignerinputdateasiavalidation.SignRequestSignerInputDateAsiaValidation;
006import com.box.sdkgen.schemas.signrequestsignerinputdateeuvalidation.SignRequestSignerInputDateEuValidation;
007import com.box.sdkgen.schemas.signrequestsignerinputdateisovalidation.SignRequestSignerInputDateIsoValidation;
008import com.box.sdkgen.schemas.signrequestsignerinputdateusvalidation.SignRequestSignerInputDateUsValidation;
009import com.box.sdkgen.schemas.signrequestsignerinputemailvalidation.SignRequestSignerInputEmailValidation;
010import com.box.sdkgen.schemas.signrequestsignerinputnumberwithcommavalidation.SignRequestSignerInputNumberWithCommaValidation;
011import com.box.sdkgen.schemas.signrequestsignerinputnumberwithperiodvalidation.SignRequestSignerInputNumberWithPeriodValidation;
012import com.box.sdkgen.schemas.signrequestsignerinputssnvalidation.SignRequestSignerInputSsnValidation;
013import com.box.sdkgen.schemas.signrequestsignerinputvalidation.SignRequestSignerInputValidation;
014import com.box.sdkgen.schemas.signrequestsignerinputzip4validation.SignRequestSignerInputZip4Validation;
015import com.box.sdkgen.schemas.signrequestsignerinputzipvalidation.SignRequestSignerInputZipValidation;
016import com.box.sdkgen.serialization.json.EnumWrapper;
017import com.fasterxml.jackson.annotation.JsonFilter;
018import com.fasterxml.jackson.annotation.JsonProperty;
019import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
020import com.fasterxml.jackson.databind.annotation.JsonSerialize;
021import java.time.OffsetDateTime;
022import java.util.Objects;
023
024/** Input created by a Signer on a Sign Request. */
025@JsonFilter("nullablePropertyFilter")
026public class SignRequestSignerInput extends SignRequestPrefillTag {
027
028  /** Type of input. */
029  @JsonDeserialize(
030      using = SignRequestSignerInputTypeField.SignRequestSignerInputTypeFieldDeserializer.class)
031  @JsonSerialize(
032      using = SignRequestSignerInputTypeField.SignRequestSignerInputTypeFieldSerializer.class)
033  protected EnumWrapper<SignRequestSignerInputTypeField> type;
034
035  /** Content type of input. */
036  @JsonDeserialize(
037      using =
038          SignRequestSignerInputContentTypeField.SignRequestSignerInputContentTypeFieldDeserializer
039              .class)
040  @JsonSerialize(
041      using =
042          SignRequestSignerInputContentTypeField.SignRequestSignerInputContentTypeFieldSerializer
043              .class)
044  @JsonProperty("content_type")
045  protected EnumWrapper<SignRequestSignerInputContentTypeField> contentType;
046
047  /** Index of page that the input is on. */
048  @JsonProperty("page_index")
049  protected final long pageIndex;
050
051  /** Indicates whether this input is read-only (cannot be modified by signers). */
052  @JsonProperty("read_only")
053  protected Boolean readOnly;
054
055  /**
056   * Specifies the formatting rules that signers must follow for text field inputs. If set, this
057   * validation is mandatory.
058   */
059  protected SignRequestSignerInputValidation validation;
060
061  public SignRequestSignerInput(@JsonProperty("page_index") long pageIndex) {
062    super();
063    this.pageIndex = pageIndex;
064  }
065
066  protected SignRequestSignerInput(Builder builder) {
067    super(builder);
068    this.type = builder.type;
069    this.contentType = builder.contentType;
070    this.pageIndex = builder.pageIndex;
071    this.readOnly = builder.readOnly;
072    this.validation = builder.validation;
073    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
074  }
075
076  public EnumWrapper<SignRequestSignerInputTypeField> getType() {
077    return type;
078  }
079
080  public EnumWrapper<SignRequestSignerInputContentTypeField> getContentType() {
081    return contentType;
082  }
083
084  public long getPageIndex() {
085    return pageIndex;
086  }
087
088  public Boolean getReadOnly() {
089    return readOnly;
090  }
091
092  public SignRequestSignerInputValidation getValidation() {
093    return validation;
094  }
095
096  @Override
097  public boolean equals(Object o) {
098    if (this == o) {
099      return true;
100    }
101    if (o == null || getClass() != o.getClass()) {
102      return false;
103    }
104    SignRequestSignerInput casted = (SignRequestSignerInput) o;
105    return Objects.equals(documentTagId, casted.documentTagId)
106        && Objects.equals(textValue, casted.textValue)
107        && Objects.equals(checkboxValue, casted.checkboxValue)
108        && Objects.equals(dateValue, casted.dateValue)
109        && Objects.equals(type, casted.type)
110        && Objects.equals(contentType, casted.contentType)
111        && Objects.equals(pageIndex, casted.pageIndex)
112        && Objects.equals(readOnly, casted.readOnly)
113        && Objects.equals(validation, casted.validation);
114  }
115
116  @Override
117  public int hashCode() {
118    return Objects.hash(
119        documentTagId,
120        textValue,
121        checkboxValue,
122        dateValue,
123        type,
124        contentType,
125        pageIndex,
126        readOnly,
127        validation);
128  }
129
130  @Override
131  public String toString() {
132    return "SignRequestSignerInput{"
133        + "documentTagId='"
134        + documentTagId
135        + '\''
136        + ", "
137        + "textValue='"
138        + textValue
139        + '\''
140        + ", "
141        + "checkboxValue='"
142        + checkboxValue
143        + '\''
144        + ", "
145        + "dateValue='"
146        + dateValue
147        + '\''
148        + ", "
149        + "type='"
150        + type
151        + '\''
152        + ", "
153        + "contentType='"
154        + contentType
155        + '\''
156        + ", "
157        + "pageIndex='"
158        + pageIndex
159        + '\''
160        + ", "
161        + "readOnly='"
162        + readOnly
163        + '\''
164        + ", "
165        + "validation='"
166        + validation
167        + '\''
168        + "}";
169  }
170
171  public static class Builder extends SignRequestPrefillTag.Builder {
172
173    protected EnumWrapper<SignRequestSignerInputTypeField> type;
174
175    protected EnumWrapper<SignRequestSignerInputContentTypeField> contentType;
176
177    protected final long pageIndex;
178
179    protected Boolean readOnly;
180
181    protected SignRequestSignerInputValidation validation;
182
183    public Builder(long pageIndex) {
184      super();
185      this.pageIndex = pageIndex;
186    }
187
188    public Builder type(SignRequestSignerInputTypeField type) {
189      this.type = new EnumWrapper<SignRequestSignerInputTypeField>(type);
190      return this;
191    }
192
193    public Builder type(EnumWrapper<SignRequestSignerInputTypeField> type) {
194      this.type = type;
195      return this;
196    }
197
198    public Builder contentType(SignRequestSignerInputContentTypeField contentType) {
199      this.contentType = new EnumWrapper<SignRequestSignerInputContentTypeField>(contentType);
200      return this;
201    }
202
203    public Builder contentType(EnumWrapper<SignRequestSignerInputContentTypeField> contentType) {
204      this.contentType = contentType;
205      return this;
206    }
207
208    public Builder readOnly(Boolean readOnly) {
209      this.readOnly = readOnly;
210      return this;
211    }
212
213    public Builder validation(SignRequestSignerInputEmailValidation validation) {
214      this.validation = new SignRequestSignerInputValidation(validation);
215      return this;
216    }
217
218    public Builder validation(SignRequestSignerInputCustomValidation validation) {
219      this.validation = new SignRequestSignerInputValidation(validation);
220      return this;
221    }
222
223    public Builder validation(SignRequestSignerInputZipValidation validation) {
224      this.validation = new SignRequestSignerInputValidation(validation);
225      return this;
226    }
227
228    public Builder validation(SignRequestSignerInputZip4Validation validation) {
229      this.validation = new SignRequestSignerInputValidation(validation);
230      return this;
231    }
232
233    public Builder validation(SignRequestSignerInputSsnValidation validation) {
234      this.validation = new SignRequestSignerInputValidation(validation);
235      return this;
236    }
237
238    public Builder validation(SignRequestSignerInputNumberWithPeriodValidation validation) {
239      this.validation = new SignRequestSignerInputValidation(validation);
240      return this;
241    }
242
243    public Builder validation(SignRequestSignerInputNumberWithCommaValidation validation) {
244      this.validation = new SignRequestSignerInputValidation(validation);
245      return this;
246    }
247
248    public Builder validation(SignRequestSignerInputDateIsoValidation validation) {
249      this.validation = new SignRequestSignerInputValidation(validation);
250      return this;
251    }
252
253    public Builder validation(SignRequestSignerInputDateUsValidation validation) {
254      this.validation = new SignRequestSignerInputValidation(validation);
255      return this;
256    }
257
258    public Builder validation(SignRequestSignerInputDateEuValidation validation) {
259      this.validation = new SignRequestSignerInputValidation(validation);
260      return this;
261    }
262
263    public Builder validation(SignRequestSignerInputDateAsiaValidation validation) {
264      this.validation = new SignRequestSignerInputValidation(validation);
265      return this;
266    }
267
268    public Builder validation(SignRequestSignerInputValidation validation) {
269      this.validation = validation;
270      return this;
271    }
272
273    @Override
274    public Builder documentTagId(String documentTagId) {
275      this.documentTagId = documentTagId;
276      this.markNullableFieldAsSet("document_tag_id");
277      return this;
278    }
279
280    @Override
281    public Builder textValue(String textValue) {
282      this.textValue = textValue;
283      this.markNullableFieldAsSet("text_value");
284      return this;
285    }
286
287    @Override
288    public Builder checkboxValue(Boolean checkboxValue) {
289      this.checkboxValue = checkboxValue;
290      this.markNullableFieldAsSet("checkbox_value");
291      return this;
292    }
293
294    @Override
295    public Builder dateValue(OffsetDateTime dateValue) {
296      this.dateValue = dateValue;
297      this.markNullableFieldAsSet("date_value");
298      return this;
299    }
300
301    public SignRequestSignerInput build() {
302      return new SignRequestSignerInput(this);
303    }
304  }
305}