001package com.box.sdkgen.managers.files;
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@JsonFilter("nullablePropertyFilter")
013public class UpdateFileByIdRequestBodyPermissionsField extends SerializableObject {
014
015  /**
016   * Defines who is allowed to download this file. The possible values are either `open` for
017   * everyone or `company` for the other members of the user's enterprise.
018   *
019   * <p>This setting overrides the download permissions that are normally part of the `role` of a
020   * collaboration. When set to `company`, this essentially removes the download option for external
021   * users with `viewer` or `editor` a roles.
022   */
023  @JsonDeserialize(
024      using =
025          UpdateFileByIdRequestBodyPermissionsCanDownloadField
026              .UpdateFileByIdRequestBodyPermissionsCanDownloadFieldDeserializer.class)
027  @JsonSerialize(
028      using =
029          UpdateFileByIdRequestBodyPermissionsCanDownloadField
030              .UpdateFileByIdRequestBodyPermissionsCanDownloadFieldSerializer.class)
031  @JsonProperty("can_download")
032  protected EnumWrapper<UpdateFileByIdRequestBodyPermissionsCanDownloadField> canDownload;
033
034  public UpdateFileByIdRequestBodyPermissionsField() {
035    super();
036  }
037
038  protected UpdateFileByIdRequestBodyPermissionsField(Builder builder) {
039    super();
040    this.canDownload = builder.canDownload;
041    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
042  }
043
044  public EnumWrapper<UpdateFileByIdRequestBodyPermissionsCanDownloadField> getCanDownload() {
045    return canDownload;
046  }
047
048  @Override
049  public boolean equals(Object o) {
050    if (this == o) {
051      return true;
052    }
053    if (o == null || getClass() != o.getClass()) {
054      return false;
055    }
056    UpdateFileByIdRequestBodyPermissionsField casted =
057        (UpdateFileByIdRequestBodyPermissionsField) o;
058    return Objects.equals(canDownload, casted.canDownload);
059  }
060
061  @Override
062  public int hashCode() {
063    return Objects.hash(canDownload);
064  }
065
066  @Override
067  public String toString() {
068    return "UpdateFileByIdRequestBodyPermissionsField{"
069        + "canDownload='"
070        + canDownload
071        + '\''
072        + "}";
073  }
074
075  public static class Builder extends NullableFieldTracker {
076
077    protected EnumWrapper<UpdateFileByIdRequestBodyPermissionsCanDownloadField> canDownload;
078
079    public Builder canDownload(UpdateFileByIdRequestBodyPermissionsCanDownloadField canDownload) {
080      this.canDownload =
081          new EnumWrapper<UpdateFileByIdRequestBodyPermissionsCanDownloadField>(canDownload);
082      return this;
083    }
084
085    public Builder canDownload(
086        EnumWrapper<UpdateFileByIdRequestBodyPermissionsCanDownloadField> canDownload) {
087      this.canDownload = canDownload;
088      return this;
089    }
090
091    public UpdateFileByIdRequestBodyPermissionsField build() {
092      return new UpdateFileByIdRequestBodyPermissionsField(this);
093    }
094  }
095}