001package com.box.sdkgen.schemas.storagepolicyassignment; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.schemas.storagepolicymini.StoragePolicyMini; 006import com.box.sdkgen.serialization.json.EnumWrapper; 007import com.fasterxml.jackson.annotation.JsonFilter; 008import com.fasterxml.jackson.annotation.JsonProperty; 009import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 010import com.fasterxml.jackson.databind.annotation.JsonSerialize; 011import java.util.Objects; 012 013/** The assignment of a storage policy to a user or enterprise. */ 014@JsonFilter("nullablePropertyFilter") 015public class StoragePolicyAssignment extends SerializableObject { 016 017 /** The unique identifier for a storage policy assignment. */ 018 protected final String id; 019 020 /** The value will always be `storage_policy_assignment`. */ 021 @JsonDeserialize( 022 using = StoragePolicyAssignmentTypeField.StoragePolicyAssignmentTypeFieldDeserializer.class) 023 @JsonSerialize( 024 using = StoragePolicyAssignmentTypeField.StoragePolicyAssignmentTypeFieldSerializer.class) 025 protected EnumWrapper<StoragePolicyAssignmentTypeField> type; 026 027 @JsonProperty("storage_policy") 028 protected StoragePolicyMini storagePolicy; 029 030 @JsonProperty("assigned_to") 031 protected StoragePolicyAssignmentAssignedToField assignedTo; 032 033 public StoragePolicyAssignment(@JsonProperty("id") String id) { 034 super(); 035 this.id = id; 036 this.type = 037 new EnumWrapper<StoragePolicyAssignmentTypeField>( 038 StoragePolicyAssignmentTypeField.STORAGE_POLICY_ASSIGNMENT); 039 } 040 041 protected StoragePolicyAssignment(Builder builder) { 042 super(); 043 this.id = builder.id; 044 this.type = builder.type; 045 this.storagePolicy = builder.storagePolicy; 046 this.assignedTo = builder.assignedTo; 047 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 048 } 049 050 public String getId() { 051 return id; 052 } 053 054 public EnumWrapper<StoragePolicyAssignmentTypeField> getType() { 055 return type; 056 } 057 058 public StoragePolicyMini getStoragePolicy() { 059 return storagePolicy; 060 } 061 062 public StoragePolicyAssignmentAssignedToField getAssignedTo() { 063 return assignedTo; 064 } 065 066 @Override 067 public boolean equals(Object o) { 068 if (this == o) { 069 return true; 070 } 071 if (o == null || getClass() != o.getClass()) { 072 return false; 073 } 074 StoragePolicyAssignment casted = (StoragePolicyAssignment) o; 075 return Objects.equals(id, casted.id) 076 && Objects.equals(type, casted.type) 077 && Objects.equals(storagePolicy, casted.storagePolicy) 078 && Objects.equals(assignedTo, casted.assignedTo); 079 } 080 081 @Override 082 public int hashCode() { 083 return Objects.hash(id, type, storagePolicy, assignedTo); 084 } 085 086 @Override 087 public String toString() { 088 return "StoragePolicyAssignment{" 089 + "id='" 090 + id 091 + '\'' 092 + ", " 093 + "type='" 094 + type 095 + '\'' 096 + ", " 097 + "storagePolicy='" 098 + storagePolicy 099 + '\'' 100 + ", " 101 + "assignedTo='" 102 + assignedTo 103 + '\'' 104 + "}"; 105 } 106 107 public static class Builder extends NullableFieldTracker { 108 109 protected final String id; 110 111 protected EnumWrapper<StoragePolicyAssignmentTypeField> type; 112 113 protected StoragePolicyMini storagePolicy; 114 115 protected StoragePolicyAssignmentAssignedToField assignedTo; 116 117 public Builder(String id) { 118 super(); 119 this.id = id; 120 } 121 122 public Builder type(StoragePolicyAssignmentTypeField type) { 123 this.type = new EnumWrapper<StoragePolicyAssignmentTypeField>(type); 124 return this; 125 } 126 127 public Builder type(EnumWrapper<StoragePolicyAssignmentTypeField> type) { 128 this.type = type; 129 return this; 130 } 131 132 public Builder storagePolicy(StoragePolicyMini storagePolicy) { 133 this.storagePolicy = storagePolicy; 134 return this; 135 } 136 137 public Builder assignedTo(StoragePolicyAssignmentAssignedToField assignedTo) { 138 this.assignedTo = assignedTo; 139 return this; 140 } 141 142 public StoragePolicyAssignment build() { 143 if (this.type == null) { 144 this.type = 145 new EnumWrapper<StoragePolicyAssignmentTypeField>( 146 StoragePolicyAssignmentTypeField.STORAGE_POLICY_ASSIGNMENT); 147 } 148 return new StoragePolicyAssignment(this); 149 } 150 } 151}