001package com.box.sdkgen.managers.sharedlinksweblinks;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.fasterxml.jackson.annotation.JsonFilter;
006import com.fasterxml.jackson.annotation.JsonProperty;
007import java.util.Objects;
008
009@JsonFilter("nullablePropertyFilter")
010public class UpdateSharedLinkOnWebLinkRequestBodySharedLinkPermissionsField
011    extends SerializableObject {
012
013  /**
014   * If the shared link allows for downloading of files. This can only be set when `access` is set
015   * to `open` or `company`.
016   */
017  @JsonProperty("can_download")
018  protected Boolean canDownload;
019
020  /**
021   * If the shared link allows for previewing of files. This value is always `true`. For shared
022   * links on folders this also applies to any items in the folder.
023   */
024  @JsonProperty("can_preview")
025  protected Boolean canPreview;
026
027  /** This value can only be `true` is `type` is `file`. */
028  @JsonProperty("can_edit")
029  protected Boolean canEdit;
030
031  public UpdateSharedLinkOnWebLinkRequestBodySharedLinkPermissionsField() {
032    super();
033  }
034
035  protected UpdateSharedLinkOnWebLinkRequestBodySharedLinkPermissionsField(Builder builder) {
036    super();
037    this.canDownload = builder.canDownload;
038    this.canPreview = builder.canPreview;
039    this.canEdit = builder.canEdit;
040    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
041  }
042
043  public Boolean getCanDownload() {
044    return canDownload;
045  }
046
047  public Boolean getCanPreview() {
048    return canPreview;
049  }
050
051  public Boolean getCanEdit() {
052    return canEdit;
053  }
054
055  @Override
056  public boolean equals(Object o) {
057    if (this == o) {
058      return true;
059    }
060    if (o == null || getClass() != o.getClass()) {
061      return false;
062    }
063    UpdateSharedLinkOnWebLinkRequestBodySharedLinkPermissionsField casted =
064        (UpdateSharedLinkOnWebLinkRequestBodySharedLinkPermissionsField) o;
065    return Objects.equals(canDownload, casted.canDownload)
066        && Objects.equals(canPreview, casted.canPreview)
067        && Objects.equals(canEdit, casted.canEdit);
068  }
069
070  @Override
071  public int hashCode() {
072    return Objects.hash(canDownload, canPreview, canEdit);
073  }
074
075  @Override
076  public String toString() {
077    return "UpdateSharedLinkOnWebLinkRequestBodySharedLinkPermissionsField{"
078        + "canDownload='"
079        + canDownload
080        + '\''
081        + ", "
082        + "canPreview='"
083        + canPreview
084        + '\''
085        + ", "
086        + "canEdit='"
087        + canEdit
088        + '\''
089        + "}";
090  }
091
092  public static class Builder extends NullableFieldTracker {
093
094    protected Boolean canDownload;
095
096    protected Boolean canPreview;
097
098    protected Boolean canEdit;
099
100    public Builder canDownload(Boolean canDownload) {
101      this.canDownload = canDownload;
102      return this;
103    }
104
105    public Builder canPreview(Boolean canPreview) {
106      this.canPreview = canPreview;
107      return this;
108    }
109
110    public Builder canEdit(Boolean canEdit) {
111      this.canEdit = canEdit;
112      return this;
113    }
114
115    public UpdateSharedLinkOnWebLinkRequestBodySharedLinkPermissionsField build() {
116      return new UpdateSharedLinkOnWebLinkRequestBodySharedLinkPermissionsField(this);
117    }
118  }
119}