001package com.box.sdkgen.schemas.filerequestcopyrequest;
002
003import com.box.sdkgen.schemas.filerequestupdaterequest.FileRequestUpdateRequest;
004import com.box.sdkgen.schemas.filerequestupdaterequest.FileRequestUpdateRequestStatusField;
005import com.box.sdkgen.serialization.json.EnumWrapper;
006import com.fasterxml.jackson.annotation.JsonFilter;
007import com.fasterxml.jackson.annotation.JsonProperty;
008import java.time.OffsetDateTime;
009import java.util.Objects;
010
011/** The request body to copy a file request. */
012@JsonFilter("nullablePropertyFilter")
013public class FileRequestCopyRequest extends FileRequestUpdateRequest {
014
015  /** The folder to associate the new file request to. */
016  protected final FileRequestCopyRequestFolderField folder;
017
018  public FileRequestCopyRequest(@JsonProperty("folder") FileRequestCopyRequestFolderField folder) {
019    super();
020    this.folder = folder;
021  }
022
023  protected FileRequestCopyRequest(Builder builder) {
024    super(builder);
025    this.folder = builder.folder;
026    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
027  }
028
029  public FileRequestCopyRequestFolderField getFolder() {
030    return folder;
031  }
032
033  @Override
034  public boolean equals(Object o) {
035    if (this == o) {
036      return true;
037    }
038    if (o == null || getClass() != o.getClass()) {
039      return false;
040    }
041    FileRequestCopyRequest casted = (FileRequestCopyRequest) o;
042    return Objects.equals(title, casted.title)
043        && Objects.equals(description, casted.description)
044        && Objects.equals(status, casted.status)
045        && Objects.equals(isEmailRequired, casted.isEmailRequired)
046        && Objects.equals(isDescriptionRequired, casted.isDescriptionRequired)
047        && Objects.equals(expiresAt, casted.expiresAt)
048        && Objects.equals(folder, casted.folder);
049  }
050
051  @Override
052  public int hashCode() {
053    return Objects.hash(
054        title, description, status, isEmailRequired, isDescriptionRequired, expiresAt, folder);
055  }
056
057  @Override
058  public String toString() {
059    return "FileRequestCopyRequest{"
060        + "title='"
061        + title
062        + '\''
063        + ", "
064        + "description='"
065        + description
066        + '\''
067        + ", "
068        + "status='"
069        + status
070        + '\''
071        + ", "
072        + "isEmailRequired='"
073        + isEmailRequired
074        + '\''
075        + ", "
076        + "isDescriptionRequired='"
077        + isDescriptionRequired
078        + '\''
079        + ", "
080        + "expiresAt='"
081        + expiresAt
082        + '\''
083        + ", "
084        + "folder='"
085        + folder
086        + '\''
087        + "}";
088  }
089
090  public static class Builder extends FileRequestUpdateRequest.Builder {
091
092    protected final FileRequestCopyRequestFolderField folder;
093
094    public Builder(FileRequestCopyRequestFolderField folder) {
095      super();
096      this.folder = folder;
097    }
098
099    @Override
100    public Builder title(String title) {
101      this.title = title;
102      return this;
103    }
104
105    @Override
106    public Builder description(String description) {
107      this.description = description;
108      return this;
109    }
110
111    @Override
112    public Builder status(FileRequestUpdateRequestStatusField status) {
113      this.status = new EnumWrapper<FileRequestUpdateRequestStatusField>(status);
114      return this;
115    }
116
117    @Override
118    public Builder status(EnumWrapper<FileRequestUpdateRequestStatusField> status) {
119      this.status = status;
120      return this;
121    }
122
123    @Override
124    public Builder isEmailRequired(Boolean isEmailRequired) {
125      this.isEmailRequired = isEmailRequired;
126      return this;
127    }
128
129    @Override
130    public Builder isDescriptionRequired(Boolean isDescriptionRequired) {
131      this.isDescriptionRequired = isDescriptionRequired;
132      return this;
133    }
134
135    @Override
136    public Builder expiresAt(OffsetDateTime expiresAt) {
137      this.expiresAt = expiresAt;
138      return this;
139    }
140
141    public FileRequestCopyRequest build() {
142      return new FileRequestCopyRequest(this);
143    }
144  }
145}