001package com.box.sdkgen.managers.uploads;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.internal.utils.DateTimeUtils;
006import com.fasterxml.jackson.annotation.JsonFilter;
007import com.fasterxml.jackson.annotation.JsonProperty;
008import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
009import com.fasterxml.jackson.databind.annotation.JsonSerialize;
010import java.time.OffsetDateTime;
011import java.util.Objects;
012
013@JsonFilter("nullablePropertyFilter")
014public class UploadWithPreflightCheckRequestBodyAttributesField extends SerializableObject {
015
016  /**
017   * The name of the file.
018   *
019   * <p>File names must be unique within their parent folder. The name check is case-insensitive, so
020   * a file named `New File` cannot be created in a parent folder that already contains a folder
021   * named `new file`.
022   */
023  protected final String name;
024
025  /** The parent folder to upload the file to. */
026  protected final UploadWithPreflightCheckRequestBodyAttributesParentField parent;
027
028  /**
029   * Defines the time the file was originally created at.
030   *
031   * <p>If not set, the upload time will be used.
032   */
033  @JsonProperty("content_created_at")
034  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
035  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
036  protected OffsetDateTime contentCreatedAt;
037
038  /**
039   * Defines the time the file was last modified at.
040   *
041   * <p>If not set, the upload time will be used.
042   */
043  @JsonProperty("content_modified_at")
044  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
045  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
046  protected OffsetDateTime contentModifiedAt;
047
048  /** The size of the file in bytes */
049  protected final int size;
050
051  public UploadWithPreflightCheckRequestBodyAttributesField(
052      @JsonProperty("name") String name,
053      @JsonProperty("parent") UploadWithPreflightCheckRequestBodyAttributesParentField parent,
054      @JsonProperty("size") int size) {
055    super();
056    this.name = name;
057    this.parent = parent;
058    this.size = size;
059  }
060
061  protected UploadWithPreflightCheckRequestBodyAttributesField(Builder builder) {
062    super();
063    this.name = builder.name;
064    this.parent = builder.parent;
065    this.contentCreatedAt = builder.contentCreatedAt;
066    this.contentModifiedAt = builder.contentModifiedAt;
067    this.size = builder.size;
068    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
069  }
070
071  public String getName() {
072    return name;
073  }
074
075  public UploadWithPreflightCheckRequestBodyAttributesParentField getParent() {
076    return parent;
077  }
078
079  public OffsetDateTime getContentCreatedAt() {
080    return contentCreatedAt;
081  }
082
083  public OffsetDateTime getContentModifiedAt() {
084    return contentModifiedAt;
085  }
086
087  public int getSize() {
088    return size;
089  }
090
091  @Override
092  public boolean equals(Object o) {
093    if (this == o) {
094      return true;
095    }
096    if (o == null || getClass() != o.getClass()) {
097      return false;
098    }
099    UploadWithPreflightCheckRequestBodyAttributesField casted =
100        (UploadWithPreflightCheckRequestBodyAttributesField) o;
101    return Objects.equals(name, casted.name)
102        && Objects.equals(parent, casted.parent)
103        && Objects.equals(contentCreatedAt, casted.contentCreatedAt)
104        && Objects.equals(contentModifiedAt, casted.contentModifiedAt)
105        && Objects.equals(size, casted.size);
106  }
107
108  @Override
109  public int hashCode() {
110    return Objects.hash(name, parent, contentCreatedAt, contentModifiedAt, size);
111  }
112
113  @Override
114  public String toString() {
115    return "UploadWithPreflightCheckRequestBodyAttributesField{"
116        + "name='"
117        + name
118        + '\''
119        + ", "
120        + "parent='"
121        + parent
122        + '\''
123        + ", "
124        + "contentCreatedAt='"
125        + contentCreatedAt
126        + '\''
127        + ", "
128        + "contentModifiedAt='"
129        + contentModifiedAt
130        + '\''
131        + ", "
132        + "size='"
133        + size
134        + '\''
135        + "}";
136  }
137
138  public static class Builder extends NullableFieldTracker {
139
140    protected final String name;
141
142    protected final UploadWithPreflightCheckRequestBodyAttributesParentField parent;
143
144    protected OffsetDateTime contentCreatedAt;
145
146    protected OffsetDateTime contentModifiedAt;
147
148    protected final int size;
149
150    public Builder(
151        String name, UploadWithPreflightCheckRequestBodyAttributesParentField parent, int size) {
152      super();
153      this.name = name;
154      this.parent = parent;
155      this.size = size;
156    }
157
158    public Builder contentCreatedAt(OffsetDateTime contentCreatedAt) {
159      this.contentCreatedAt = contentCreatedAt;
160      return this;
161    }
162
163    public Builder contentModifiedAt(OffsetDateTime contentModifiedAt) {
164      this.contentModifiedAt = contentModifiedAt;
165      return this;
166    }
167
168    public UploadWithPreflightCheckRequestBodyAttributesField build() {
169      return new UploadWithPreflightCheckRequestBodyAttributesField(this);
170    }
171  }
172}