001package com.box.sdkgen.schemas.retentionpolicymini; 002 003import com.box.sdkgen.schemas.retentionpolicybase.RetentionPolicyBase; 004import com.box.sdkgen.schemas.retentionpolicybase.RetentionPolicyBaseTypeField; 005import com.box.sdkgen.schemas.retentionpolicymaxextensionlengthresponse.RetentionPolicyMaxExtensionLengthResponse; 006import com.box.sdkgen.schemas.retentionpolicymaxextensionlengthresponse.RetentionPolicyMaxExtensionLengthResponseEnum; 007import com.box.sdkgen.serialization.json.EnumWrapper; 008import com.fasterxml.jackson.annotation.JsonFilter; 009import com.fasterxml.jackson.annotation.JsonProperty; 010import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 011import com.fasterxml.jackson.databind.annotation.JsonSerialize; 012import java.util.Objects; 013 014/** A mini representation of a retention policy, used when nested within another resource. */ 015@JsonFilter("nullablePropertyFilter") 016public class RetentionPolicyMini extends RetentionPolicyBase { 017 018 /** The name given to the retention policy. */ 019 @JsonProperty("policy_name") 020 protected String policyName; 021 022 /** 023 * The length of the retention policy. This value specifies the duration in days that the 024 * retention policy will be active for after being assigned to content. If the policy has a 025 * `policy_type` of `indefinite`, the `retention_length` will also be `indefinite`. 026 */ 027 @JsonProperty("retention_length") 028 protected String retentionLength; 029 030 /** 031 * The disposition action of the retention policy. This action can be `permanently_delete`, which 032 * will cause the content retained by the policy to be permanently deleted, or `remove_retention`, 033 * which will lift the retention policy from the content, allowing it to be deleted by users, once 034 * the retention policy has expired. 035 */ 036 @JsonDeserialize( 037 using = 038 RetentionPolicyMiniDispositionActionField 039 .RetentionPolicyMiniDispositionActionFieldDeserializer.class) 040 @JsonSerialize( 041 using = 042 RetentionPolicyMiniDispositionActionField 043 .RetentionPolicyMiniDispositionActionFieldSerializer.class) 044 @JsonProperty("disposition_action") 045 protected EnumWrapper<RetentionPolicyMiniDispositionActionField> dispositionAction; 046 047 @JsonProperty("max_extension_length") 048 protected RetentionPolicyMaxExtensionLengthResponse maxExtensionLength; 049 050 public RetentionPolicyMini(@JsonProperty("id") String id) { 051 super(id); 052 } 053 054 protected RetentionPolicyMini(Builder builder) { 055 super(builder); 056 this.policyName = builder.policyName; 057 this.retentionLength = builder.retentionLength; 058 this.dispositionAction = builder.dispositionAction; 059 this.maxExtensionLength = builder.maxExtensionLength; 060 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 061 } 062 063 public String getPolicyName() { 064 return policyName; 065 } 066 067 public String getRetentionLength() { 068 return retentionLength; 069 } 070 071 public EnumWrapper<RetentionPolicyMiniDispositionActionField> getDispositionAction() { 072 return dispositionAction; 073 } 074 075 public RetentionPolicyMaxExtensionLengthResponse getMaxExtensionLength() { 076 return maxExtensionLength; 077 } 078 079 @Override 080 public boolean equals(Object o) { 081 if (this == o) { 082 return true; 083 } 084 if (o == null || getClass() != o.getClass()) { 085 return false; 086 } 087 RetentionPolicyMini casted = (RetentionPolicyMini) o; 088 return Objects.equals(id, casted.id) 089 && Objects.equals(type, casted.type) 090 && Objects.equals(policyName, casted.policyName) 091 && Objects.equals(retentionLength, casted.retentionLength) 092 && Objects.equals(dispositionAction, casted.dispositionAction) 093 && Objects.equals(maxExtensionLength, casted.maxExtensionLength); 094 } 095 096 @Override 097 public int hashCode() { 098 return Objects.hash( 099 id, type, policyName, retentionLength, dispositionAction, maxExtensionLength); 100 } 101 102 @Override 103 public String toString() { 104 return "RetentionPolicyMini{" 105 + "id='" 106 + id 107 + '\'' 108 + ", " 109 + "type='" 110 + type 111 + '\'' 112 + ", " 113 + "policyName='" 114 + policyName 115 + '\'' 116 + ", " 117 + "retentionLength='" 118 + retentionLength 119 + '\'' 120 + ", " 121 + "dispositionAction='" 122 + dispositionAction 123 + '\'' 124 + ", " 125 + "maxExtensionLength='" 126 + maxExtensionLength 127 + '\'' 128 + "}"; 129 } 130 131 public static class Builder extends RetentionPolicyBase.Builder { 132 133 protected String policyName; 134 135 protected String retentionLength; 136 137 protected EnumWrapper<RetentionPolicyMiniDispositionActionField> dispositionAction; 138 139 protected RetentionPolicyMaxExtensionLengthResponse maxExtensionLength; 140 141 public Builder(String id) { 142 super(id); 143 } 144 145 public Builder policyName(String policyName) { 146 this.policyName = policyName; 147 return this; 148 } 149 150 public Builder retentionLength(String retentionLength) { 151 this.retentionLength = retentionLength; 152 return this; 153 } 154 155 public Builder dispositionAction(RetentionPolicyMiniDispositionActionField dispositionAction) { 156 this.dispositionAction = 157 new EnumWrapper<RetentionPolicyMiniDispositionActionField>(dispositionAction); 158 return this; 159 } 160 161 public Builder dispositionAction( 162 EnumWrapper<RetentionPolicyMiniDispositionActionField> dispositionAction) { 163 this.dispositionAction = dispositionAction; 164 return this; 165 } 166 167 public Builder maxExtensionLength( 168 RetentionPolicyMaxExtensionLengthResponseEnum maxExtensionLength) { 169 this.maxExtensionLength = new RetentionPolicyMaxExtensionLengthResponse(maxExtensionLength); 170 return this; 171 } 172 173 public Builder maxExtensionLength(String maxExtensionLength) { 174 this.maxExtensionLength = new RetentionPolicyMaxExtensionLengthResponse(maxExtensionLength); 175 return this; 176 } 177 178 public Builder maxExtensionLength( 179 RetentionPolicyMaxExtensionLengthResponse maxExtensionLength) { 180 this.maxExtensionLength = maxExtensionLength; 181 return this; 182 } 183 184 @Override 185 public Builder type(RetentionPolicyBaseTypeField type) { 186 this.type = new EnumWrapper<RetentionPolicyBaseTypeField>(type); 187 return this; 188 } 189 190 @Override 191 public Builder type(EnumWrapper<RetentionPolicyBaseTypeField> type) { 192 this.type = type; 193 return this; 194 } 195 196 public RetentionPolicyMini build() { 197 if (this.type == null) { 198 this.type = 199 new EnumWrapper<RetentionPolicyBaseTypeField>( 200 RetentionPolicyBaseTypeField.RETENTION_POLICY); 201 } 202 return new RetentionPolicyMini(this); 203 } 204 } 205}