001package com.box.sdkgen.schemas.folder;
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.databind.annotation.JsonDeserialize;
008import com.fasterxml.jackson.databind.annotation.JsonSerialize;
009import java.util.Objects;
010
011@JsonFilter("nullablePropertyFilter")
012public class FolderFolderUploadEmailField extends SerializableObject {
013
014  /**
015   * When this parameter has been set, users can email files to the email address that has been
016   * automatically created for this folder.
017   *
018   * <p>To create an email address, set this property either when creating or updating the folder.
019   *
020   * <p>When set to `collaborators`, only emails from registered email addresses for collaborators
021   * will be accepted. This includes any email aliases a user might have registered.
022   *
023   * <p>When set to `open` it will accept emails from any email address.
024   */
025  @JsonDeserialize(
026      using =
027          FolderFolderUploadEmailAccessField.FolderFolderUploadEmailAccessFieldDeserializer.class)
028  @JsonSerialize(
029      using = FolderFolderUploadEmailAccessField.FolderFolderUploadEmailAccessFieldSerializer.class)
030  protected EnumWrapper<FolderFolderUploadEmailAccessField> access;
031
032  /** The optional upload email address for this folder. */
033  protected String email;
034
035  public FolderFolderUploadEmailField() {
036    super();
037  }
038
039  protected FolderFolderUploadEmailField(Builder builder) {
040    super();
041    this.access = builder.access;
042    this.email = builder.email;
043    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
044  }
045
046  public EnumWrapper<FolderFolderUploadEmailAccessField> getAccess() {
047    return access;
048  }
049
050  public String getEmail() {
051    return email;
052  }
053
054  @Override
055  public boolean equals(Object o) {
056    if (this == o) {
057      return true;
058    }
059    if (o == null || getClass() != o.getClass()) {
060      return false;
061    }
062    FolderFolderUploadEmailField casted = (FolderFolderUploadEmailField) o;
063    return Objects.equals(access, casted.access) && Objects.equals(email, casted.email);
064  }
065
066  @Override
067  public int hashCode() {
068    return Objects.hash(access, email);
069  }
070
071  @Override
072  public String toString() {
073    return "FolderFolderUploadEmailField{"
074        + "access='"
075        + access
076        + '\''
077        + ", "
078        + "email='"
079        + email
080        + '\''
081        + "}";
082  }
083
084  public static class Builder extends NullableFieldTracker {
085
086    protected EnumWrapper<FolderFolderUploadEmailAccessField> access;
087
088    protected String email;
089
090    public Builder access(FolderFolderUploadEmailAccessField access) {
091      this.access = new EnumWrapper<FolderFolderUploadEmailAccessField>(access);
092      return this;
093    }
094
095    public Builder access(EnumWrapper<FolderFolderUploadEmailAccessField> access) {
096      this.access = access;
097      return this;
098    }
099
100    public Builder email(String email) {
101      this.email = email;
102      return this;
103    }
104
105    public FolderFolderUploadEmailField build() {
106      return new FolderFolderUploadEmailField(this);
107    }
108  }
109}