001package com.box.sdkgen.schemas.legalholdpolicy; 002 003import com.box.sdkgen.internal.utils.DateTimeUtils; 004import com.box.sdkgen.schemas.legalholdpolicymini.LegalHoldPolicyMini; 005import com.box.sdkgen.schemas.legalholdpolicymini.LegalHoldPolicyMiniTypeField; 006import com.box.sdkgen.schemas.usermini.UserMini; 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.time.OffsetDateTime; 013import java.util.Objects; 014 015/** 016 * Legal Hold Policy information describes the basic characteristics of the Policy, such as name, 017 * description, and filter dates. 018 */ 019@JsonFilter("nullablePropertyFilter") 020public class LegalHoldPolicy extends LegalHoldPolicyMini { 021 022 /** Name of the legal hold policy. */ 023 @JsonProperty("policy_name") 024 protected String policyName; 025 026 /** Description of the legal hold policy. Optional property with a 500 character limit. */ 027 protected String description; 028 029 /** 030 * Possible values: * 'active' - the policy is not in a transition state. * 'applying' - that the 031 * policy is in the process of being applied. * 'releasing' - that the process is in the process 032 * of being released. * 'released' - the policy is no longer active. 033 */ 034 @JsonDeserialize(using = LegalHoldPolicyStatusField.LegalHoldPolicyStatusFieldDeserializer.class) 035 @JsonSerialize(using = LegalHoldPolicyStatusField.LegalHoldPolicyStatusFieldSerializer.class) 036 protected EnumWrapper<LegalHoldPolicyStatusField> status; 037 038 /** Counts of assignments within a legal hold policy by item type. */ 039 @JsonProperty("assignment_counts") 040 protected LegalHoldPolicyAssignmentCountsField assignmentCounts; 041 042 @JsonProperty("created_by") 043 protected UserMini createdBy; 044 045 /** When the legal hold policy object was created. */ 046 @JsonProperty("created_at") 047 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 048 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 049 protected OffsetDateTime createdAt; 050 051 /** 052 * When the legal hold policy object was modified. Does not update when assignments are added or 053 * removed. 054 */ 055 @JsonProperty("modified_at") 056 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 057 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 058 protected OffsetDateTime modifiedAt; 059 060 /** 061 * When the policy release request was sent. (Because it can take time for a policy to fully 062 * delete, this isn't quite the same time that the policy is fully deleted). 063 * 064 * <p>If `null`, the policy was not deleted. 065 */ 066 @JsonProperty("deleted_at") 067 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 068 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 069 protected OffsetDateTime deletedAt; 070 071 /** User-specified, optional date filter applies to Custodian assignments only. */ 072 @JsonProperty("filter_started_at") 073 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 074 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 075 protected OffsetDateTime filterStartedAt; 076 077 /** User-specified, optional date filter applies to Custodian assignments only. */ 078 @JsonProperty("filter_ended_at") 079 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 080 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 081 protected OffsetDateTime filterEndedAt; 082 083 /** Optional notes about why the policy was created. */ 084 @JsonProperty("release_notes") 085 protected String releaseNotes; 086 087 public LegalHoldPolicy(@JsonProperty("id") String id) { 088 super(id); 089 } 090 091 protected LegalHoldPolicy(Builder builder) { 092 super(builder); 093 this.policyName = builder.policyName; 094 this.description = builder.description; 095 this.status = builder.status; 096 this.assignmentCounts = builder.assignmentCounts; 097 this.createdBy = builder.createdBy; 098 this.createdAt = builder.createdAt; 099 this.modifiedAt = builder.modifiedAt; 100 this.deletedAt = builder.deletedAt; 101 this.filterStartedAt = builder.filterStartedAt; 102 this.filterEndedAt = builder.filterEndedAt; 103 this.releaseNotes = builder.releaseNotes; 104 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 105 } 106 107 public String getPolicyName() { 108 return policyName; 109 } 110 111 public String getDescription() { 112 return description; 113 } 114 115 public EnumWrapper<LegalHoldPolicyStatusField> getStatus() { 116 return status; 117 } 118 119 public LegalHoldPolicyAssignmentCountsField getAssignmentCounts() { 120 return assignmentCounts; 121 } 122 123 public UserMini getCreatedBy() { 124 return createdBy; 125 } 126 127 public OffsetDateTime getCreatedAt() { 128 return createdAt; 129 } 130 131 public OffsetDateTime getModifiedAt() { 132 return modifiedAt; 133 } 134 135 public OffsetDateTime getDeletedAt() { 136 return deletedAt; 137 } 138 139 public OffsetDateTime getFilterStartedAt() { 140 return filterStartedAt; 141 } 142 143 public OffsetDateTime getFilterEndedAt() { 144 return filterEndedAt; 145 } 146 147 public String getReleaseNotes() { 148 return releaseNotes; 149 } 150 151 @Override 152 public boolean equals(Object o) { 153 if (this == o) { 154 return true; 155 } 156 if (o == null || getClass() != o.getClass()) { 157 return false; 158 } 159 LegalHoldPolicy casted = (LegalHoldPolicy) o; 160 return Objects.equals(id, casted.id) 161 && Objects.equals(type, casted.type) 162 && Objects.equals(policyName, casted.policyName) 163 && Objects.equals(description, casted.description) 164 && Objects.equals(status, casted.status) 165 && Objects.equals(assignmentCounts, casted.assignmentCounts) 166 && Objects.equals(createdBy, casted.createdBy) 167 && Objects.equals(createdAt, casted.createdAt) 168 && Objects.equals(modifiedAt, casted.modifiedAt) 169 && Objects.equals(deletedAt, casted.deletedAt) 170 && Objects.equals(filterStartedAt, casted.filterStartedAt) 171 && Objects.equals(filterEndedAt, casted.filterEndedAt) 172 && Objects.equals(releaseNotes, casted.releaseNotes); 173 } 174 175 @Override 176 public int hashCode() { 177 return Objects.hash( 178 id, 179 type, 180 policyName, 181 description, 182 status, 183 assignmentCounts, 184 createdBy, 185 createdAt, 186 modifiedAt, 187 deletedAt, 188 filterStartedAt, 189 filterEndedAt, 190 releaseNotes); 191 } 192 193 @Override 194 public String toString() { 195 return "LegalHoldPolicy{" 196 + "id='" 197 + id 198 + '\'' 199 + ", " 200 + "type='" 201 + type 202 + '\'' 203 + ", " 204 + "policyName='" 205 + policyName 206 + '\'' 207 + ", " 208 + "description='" 209 + description 210 + '\'' 211 + ", " 212 + "status='" 213 + status 214 + '\'' 215 + ", " 216 + "assignmentCounts='" 217 + assignmentCounts 218 + '\'' 219 + ", " 220 + "createdBy='" 221 + createdBy 222 + '\'' 223 + ", " 224 + "createdAt='" 225 + createdAt 226 + '\'' 227 + ", " 228 + "modifiedAt='" 229 + modifiedAt 230 + '\'' 231 + ", " 232 + "deletedAt='" 233 + deletedAt 234 + '\'' 235 + ", " 236 + "filterStartedAt='" 237 + filterStartedAt 238 + '\'' 239 + ", " 240 + "filterEndedAt='" 241 + filterEndedAt 242 + '\'' 243 + ", " 244 + "releaseNotes='" 245 + releaseNotes 246 + '\'' 247 + "}"; 248 } 249 250 public static class Builder extends LegalHoldPolicyMini.Builder { 251 252 protected String policyName; 253 254 protected String description; 255 256 protected EnumWrapper<LegalHoldPolicyStatusField> status; 257 258 protected LegalHoldPolicyAssignmentCountsField assignmentCounts; 259 260 protected UserMini createdBy; 261 262 protected OffsetDateTime createdAt; 263 264 protected OffsetDateTime modifiedAt; 265 266 protected OffsetDateTime deletedAt; 267 268 protected OffsetDateTime filterStartedAt; 269 270 protected OffsetDateTime filterEndedAt; 271 272 protected String releaseNotes; 273 274 public Builder(String id) { 275 super(id); 276 } 277 278 public Builder policyName(String policyName) { 279 this.policyName = policyName; 280 return this; 281 } 282 283 public Builder description(String description) { 284 this.description = description; 285 return this; 286 } 287 288 public Builder status(LegalHoldPolicyStatusField status) { 289 this.status = new EnumWrapper<LegalHoldPolicyStatusField>(status); 290 return this; 291 } 292 293 public Builder status(EnumWrapper<LegalHoldPolicyStatusField> status) { 294 this.status = status; 295 return this; 296 } 297 298 public Builder assignmentCounts(LegalHoldPolicyAssignmentCountsField assignmentCounts) { 299 this.assignmentCounts = assignmentCounts; 300 return this; 301 } 302 303 public Builder createdBy(UserMini createdBy) { 304 this.createdBy = createdBy; 305 return this; 306 } 307 308 public Builder createdAt(OffsetDateTime createdAt) { 309 this.createdAt = createdAt; 310 return this; 311 } 312 313 public Builder modifiedAt(OffsetDateTime modifiedAt) { 314 this.modifiedAt = modifiedAt; 315 return this; 316 } 317 318 public Builder deletedAt(OffsetDateTime deletedAt) { 319 this.deletedAt = deletedAt; 320 return this; 321 } 322 323 public Builder filterStartedAt(OffsetDateTime filterStartedAt) { 324 this.filterStartedAt = filterStartedAt; 325 return this; 326 } 327 328 public Builder filterEndedAt(OffsetDateTime filterEndedAt) { 329 this.filterEndedAt = filterEndedAt; 330 return this; 331 } 332 333 public Builder releaseNotes(String releaseNotes) { 334 this.releaseNotes = releaseNotes; 335 return this; 336 } 337 338 @Override 339 public Builder type(LegalHoldPolicyMiniTypeField type) { 340 this.type = new EnumWrapper<LegalHoldPolicyMiniTypeField>(type); 341 return this; 342 } 343 344 @Override 345 public Builder type(EnumWrapper<LegalHoldPolicyMiniTypeField> type) { 346 this.type = type; 347 return this; 348 } 349 350 public LegalHoldPolicy build() { 351 if (this.type == null) { 352 this.type = 353 new EnumWrapper<LegalHoldPolicyMiniTypeField>( 354 LegalHoldPolicyMiniTypeField.LEGAL_HOLD_POLICY); 355 } 356 return new LegalHoldPolicy(this); 357 } 358 } 359}