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}