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