001package com.box.sdkgen.managers.folders; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.serialization.json.EnumWrapper; 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.util.Objects; 011 012@JsonFilter("nullablePropertyFilter") 013public class CreateFolderRequestBody extends SerializableObject { 014 015 /** 016 * The name for the new folder. 017 * 018 * <p>The following restrictions to folder names apply: names containing non-printable ASCII 019 * characters, forward and backward slashes (`/`, `\`), names with trailing spaces, and names `.` 020 * and `..` are not allowed. 021 * 022 * <p>Folder names must be unique within their parent folder. The name check is case-insensitive, 023 * so a folder named `New Folder` cannot be created in a parent folder that already contains a 024 * folder named `new folder`. 025 */ 026 protected final String name; 027 028 /** The parent folder to create the new folder within. */ 029 protected final CreateFolderRequestBodyParentField parent; 030 031 @JsonProperty("folder_upload_email") 032 protected CreateFolderRequestBodyFolderUploadEmailField folderUploadEmail; 033 034 /** 035 * Specifies whether a folder should be synced to a user's device or not. This is used by Box Sync 036 * (discontinued) and is not used by Box Drive. 037 */ 038 @JsonDeserialize( 039 using = 040 CreateFolderRequestBodySyncStateField.CreateFolderRequestBodySyncStateFieldDeserializer 041 .class) 042 @JsonSerialize( 043 using = 044 CreateFolderRequestBodySyncStateField.CreateFolderRequestBodySyncStateFieldSerializer 045 .class) 046 @JsonProperty("sync_state") 047 protected EnumWrapper<CreateFolderRequestBodySyncStateField> syncState; 048 049 public CreateFolderRequestBody( 050 @JsonProperty("name") String name, 051 @JsonProperty("parent") CreateFolderRequestBodyParentField parent) { 052 super(); 053 this.name = name; 054 this.parent = parent; 055 } 056 057 protected CreateFolderRequestBody(Builder builder) { 058 super(); 059 this.name = builder.name; 060 this.parent = builder.parent; 061 this.folderUploadEmail = builder.folderUploadEmail; 062 this.syncState = builder.syncState; 063 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 064 } 065 066 public String getName() { 067 return name; 068 } 069 070 public CreateFolderRequestBodyParentField getParent() { 071 return parent; 072 } 073 074 public CreateFolderRequestBodyFolderUploadEmailField getFolderUploadEmail() { 075 return folderUploadEmail; 076 } 077 078 public EnumWrapper<CreateFolderRequestBodySyncStateField> getSyncState() { 079 return syncState; 080 } 081 082 @Override 083 public boolean equals(Object o) { 084 if (this == o) { 085 return true; 086 } 087 if (o == null || getClass() != o.getClass()) { 088 return false; 089 } 090 CreateFolderRequestBody casted = (CreateFolderRequestBody) o; 091 return Objects.equals(name, casted.name) 092 && Objects.equals(parent, casted.parent) 093 && Objects.equals(folderUploadEmail, casted.folderUploadEmail) 094 && Objects.equals(syncState, casted.syncState); 095 } 096 097 @Override 098 public int hashCode() { 099 return Objects.hash(name, parent, folderUploadEmail, syncState); 100 } 101 102 @Override 103 public String toString() { 104 return "CreateFolderRequestBody{" 105 + "name='" 106 + name 107 + '\'' 108 + ", " 109 + "parent='" 110 + parent 111 + '\'' 112 + ", " 113 + "folderUploadEmail='" 114 + folderUploadEmail 115 + '\'' 116 + ", " 117 + "syncState='" 118 + syncState 119 + '\'' 120 + "}"; 121 } 122 123 public static class Builder extends NullableFieldTracker { 124 125 protected final String name; 126 127 protected final CreateFolderRequestBodyParentField parent; 128 129 protected CreateFolderRequestBodyFolderUploadEmailField folderUploadEmail; 130 131 protected EnumWrapper<CreateFolderRequestBodySyncStateField> syncState; 132 133 public Builder(String name, CreateFolderRequestBodyParentField parent) { 134 super(); 135 this.name = name; 136 this.parent = parent; 137 } 138 139 public Builder folderUploadEmail( 140 CreateFolderRequestBodyFolderUploadEmailField folderUploadEmail) { 141 this.folderUploadEmail = folderUploadEmail; 142 return this; 143 } 144 145 public Builder syncState(CreateFolderRequestBodySyncStateField syncState) { 146 this.syncState = new EnumWrapper<CreateFolderRequestBodySyncStateField>(syncState); 147 return this; 148 } 149 150 public Builder syncState(EnumWrapper<CreateFolderRequestBodySyncStateField> syncState) { 151 this.syncState = syncState; 152 return this; 153 } 154 155 public CreateFolderRequestBody build() { 156 return new CreateFolderRequestBody(this); 157 } 158 } 159}