001package com.box.sdkgen.managers.folders;
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 CopyFolderRequestBody extends SerializableObject {
011
012  /**
013   * An optional new name for the copied folder.
014   *
015   * <p>There are some restrictions to the file name. Names containing non-printable ASCII
016   * characters, forward and backward slashes (`/`, `\`), as well as names with trailing spaces are
017   * prohibited.
018   *
019   * <p>Additionally, the names `.` and `..` are not allowed either.
020   */
021  protected String name;
022
023  /** The destination folder to copy the folder to. */
024  protected final CopyFolderRequestBodyParentField parent;
025
026  public CopyFolderRequestBody(@JsonProperty("parent") CopyFolderRequestBodyParentField parent) {
027    super();
028    this.parent = parent;
029  }
030
031  protected CopyFolderRequestBody(Builder builder) {
032    super();
033    this.name = builder.name;
034    this.parent = builder.parent;
035    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
036  }
037
038  public String getName() {
039    return name;
040  }
041
042  public CopyFolderRequestBodyParentField getParent() {
043    return parent;
044  }
045
046  @Override
047  public boolean equals(Object o) {
048    if (this == o) {
049      return true;
050    }
051    if (o == null || getClass() != o.getClass()) {
052      return false;
053    }
054    CopyFolderRequestBody casted = (CopyFolderRequestBody) o;
055    return Objects.equals(name, casted.name) && Objects.equals(parent, casted.parent);
056  }
057
058  @Override
059  public int hashCode() {
060    return Objects.hash(name, parent);
061  }
062
063  @Override
064  public String toString() {
065    return "CopyFolderRequestBody{"
066        + "name='"
067        + name
068        + '\''
069        + ", "
070        + "parent='"
071        + parent
072        + '\''
073        + "}";
074  }
075
076  public static class Builder extends NullableFieldTracker {
077
078    protected String name;
079
080    protected final CopyFolderRequestBodyParentField parent;
081
082    public Builder(CopyFolderRequestBodyParentField parent) {
083      super();
084      this.parent = parent;
085    }
086
087    public Builder name(String name) {
088      this.name = name;
089      return this;
090    }
091
092    public CopyFolderRequestBody build() {
093      return new CopyFolderRequestBody(this);
094    }
095  }
096}