001package com.box.sdkgen.managers.sharedlinksfolders;
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 AddShareLinkToFolderRequestBodySharedLinkPermissionsField 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  /** This value can only be `false` for items with a `type` of `folder`. */
027  @JsonProperty("can_edit")
028  protected Boolean canEdit;
029
030  public AddShareLinkToFolderRequestBodySharedLinkPermissionsField() {
031    super();
032  }
033
034  protected AddShareLinkToFolderRequestBodySharedLinkPermissionsField(Builder builder) {
035    super();
036    this.canDownload = builder.canDownload;
037    this.canPreview = builder.canPreview;
038    this.canEdit = builder.canEdit;
039    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
040  }
041
042  public Boolean getCanDownload() {
043    return canDownload;
044  }
045
046  public Boolean getCanPreview() {
047    return canPreview;
048  }
049
050  public Boolean getCanEdit() {
051    return canEdit;
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    AddShareLinkToFolderRequestBodySharedLinkPermissionsField casted =
063        (AddShareLinkToFolderRequestBodySharedLinkPermissionsField) o;
064    return Objects.equals(canDownload, casted.canDownload)
065        && Objects.equals(canPreview, casted.canPreview)
066        && Objects.equals(canEdit, casted.canEdit);
067  }
068
069  @Override
070  public int hashCode() {
071    return Objects.hash(canDownload, canPreview, canEdit);
072  }
073
074  @Override
075  public String toString() {
076    return "AddShareLinkToFolderRequestBodySharedLinkPermissionsField{"
077        + "canDownload='"
078        + canDownload
079        + '\''
080        + ", "
081        + "canPreview='"
082        + canPreview
083        + '\''
084        + ", "
085        + "canEdit='"
086        + canEdit
087        + '\''
088        + "}";
089  }
090
091  public static class Builder extends NullableFieldTracker {
092
093    protected Boolean canDownload;
094
095    protected Boolean canPreview;
096
097    protected Boolean canEdit;
098
099    public Builder canDownload(Boolean canDownload) {
100      this.canDownload = canDownload;
101      return this;
102    }
103
104    public Builder canPreview(Boolean canPreview) {
105      this.canPreview = canPreview;
106      return this;
107    }
108
109    public Builder canEdit(Boolean canEdit) {
110      this.canEdit = canEdit;
111      return this;
112    }
113
114    public AddShareLinkToFolderRequestBodySharedLinkPermissionsField build() {
115      return new AddShareLinkToFolderRequestBodySharedLinkPermissionsField(this);
116    }
117  }
118}