001package com.box.sdkgen.schemas.legalholdpolicyassignment; 002 003import com.box.sdkgen.internal.utils.DateTimeUtils; 004import com.box.sdkgen.schemas.legalholdpolicyassigneditem.LegalHoldPolicyAssignedItem; 005import com.box.sdkgen.schemas.legalholdpolicyassignmentbase.LegalHoldPolicyAssignmentBase; 006import com.box.sdkgen.schemas.legalholdpolicyassignmentbase.LegalHoldPolicyAssignmentBaseTypeField; 007import com.box.sdkgen.schemas.legalholdpolicymini.LegalHoldPolicyMini; 008import com.box.sdkgen.schemas.usermini.UserMini; 009import com.box.sdkgen.serialization.json.EnumWrapper; 010import com.fasterxml.jackson.annotation.JsonFilter; 011import com.fasterxml.jackson.annotation.JsonProperty; 012import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 013import com.fasterxml.jackson.databind.annotation.JsonSerialize; 014import java.time.OffsetDateTime; 015import java.util.Objects; 016 017/** 018 * Legal Hold Assignments are used to assign Legal Hold Policies to an item type of: Users, Folders, 019 * Files, File Versions, Ownership, or Interactions. 020 * 021 * <p>Creating a Legal Hold Assignment puts a hold on the File-Versions that belong to the 022 * Assignment's 'apply-to' entity. 023 */ 024@JsonFilter("nullablePropertyFilter") 025public class LegalHoldPolicyAssignment extends LegalHoldPolicyAssignmentBase { 026 027 @JsonProperty("legal_hold_policy") 028 protected LegalHoldPolicyMini legalHoldPolicy; 029 030 @JsonProperty("assigned_to") 031 protected LegalHoldPolicyAssignedItem assignedTo; 032 033 @JsonProperty("assigned_by") 034 protected UserMini assignedBy; 035 036 /** When the legal hold policy assignment object was created. */ 037 @JsonProperty("assigned_at") 038 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 039 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 040 protected OffsetDateTime assignedAt; 041 042 /** 043 * When the assignment release request was sent. (Because it can take time for an assignment to 044 * fully delete, this isn't quite the same time that the assignment is fully deleted). If null, 045 * Assignment was not deleted. 046 */ 047 @JsonProperty("deleted_at") 048 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 049 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 050 protected OffsetDateTime deletedAt; 051 052 public LegalHoldPolicyAssignment() { 053 super(); 054 } 055 056 protected LegalHoldPolicyAssignment(Builder builder) { 057 super(builder); 058 this.legalHoldPolicy = builder.legalHoldPolicy; 059 this.assignedTo = builder.assignedTo; 060 this.assignedBy = builder.assignedBy; 061 this.assignedAt = builder.assignedAt; 062 this.deletedAt = builder.deletedAt; 063 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 064 } 065 066 public LegalHoldPolicyMini getLegalHoldPolicy() { 067 return legalHoldPolicy; 068 } 069 070 public LegalHoldPolicyAssignedItem getAssignedTo() { 071 return assignedTo; 072 } 073 074 public UserMini getAssignedBy() { 075 return assignedBy; 076 } 077 078 public OffsetDateTime getAssignedAt() { 079 return assignedAt; 080 } 081 082 public OffsetDateTime getDeletedAt() { 083 return deletedAt; 084 } 085 086 @Override 087 public boolean equals(Object o) { 088 if (this == o) { 089 return true; 090 } 091 if (o == null || getClass() != o.getClass()) { 092 return false; 093 } 094 LegalHoldPolicyAssignment casted = (LegalHoldPolicyAssignment) o; 095 return Objects.equals(id, casted.id) 096 && Objects.equals(type, casted.type) 097 && Objects.equals(legalHoldPolicy, casted.legalHoldPolicy) 098 && Objects.equals(assignedTo, casted.assignedTo) 099 && Objects.equals(assignedBy, casted.assignedBy) 100 && Objects.equals(assignedAt, casted.assignedAt) 101 && Objects.equals(deletedAt, casted.deletedAt); 102 } 103 104 @Override 105 public int hashCode() { 106 return Objects.hash(id, type, legalHoldPolicy, assignedTo, assignedBy, assignedAt, deletedAt); 107 } 108 109 @Override 110 public String toString() { 111 return "LegalHoldPolicyAssignment{" 112 + "id='" 113 + id 114 + '\'' 115 + ", " 116 + "type='" 117 + type 118 + '\'' 119 + ", " 120 + "legalHoldPolicy='" 121 + legalHoldPolicy 122 + '\'' 123 + ", " 124 + "assignedTo='" 125 + assignedTo 126 + '\'' 127 + ", " 128 + "assignedBy='" 129 + assignedBy 130 + '\'' 131 + ", " 132 + "assignedAt='" 133 + assignedAt 134 + '\'' 135 + ", " 136 + "deletedAt='" 137 + deletedAt 138 + '\'' 139 + "}"; 140 } 141 142 public static class Builder extends LegalHoldPolicyAssignmentBase.Builder { 143 144 protected LegalHoldPolicyMini legalHoldPolicy; 145 146 protected LegalHoldPolicyAssignedItem assignedTo; 147 148 protected UserMini assignedBy; 149 150 protected OffsetDateTime assignedAt; 151 152 protected OffsetDateTime deletedAt; 153 154 public Builder legalHoldPolicy(LegalHoldPolicyMini legalHoldPolicy) { 155 this.legalHoldPolicy = legalHoldPolicy; 156 return this; 157 } 158 159 public Builder assignedTo(LegalHoldPolicyAssignedItem assignedTo) { 160 this.assignedTo = assignedTo; 161 return this; 162 } 163 164 public Builder assignedBy(UserMini assignedBy) { 165 this.assignedBy = assignedBy; 166 return this; 167 } 168 169 public Builder assignedAt(OffsetDateTime assignedAt) { 170 this.assignedAt = assignedAt; 171 return this; 172 } 173 174 public Builder deletedAt(OffsetDateTime deletedAt) { 175 this.deletedAt = deletedAt; 176 return this; 177 } 178 179 @Override 180 public Builder id(String id) { 181 this.id = id; 182 return this; 183 } 184 185 @Override 186 public Builder type(LegalHoldPolicyAssignmentBaseTypeField type) { 187 this.type = new EnumWrapper<LegalHoldPolicyAssignmentBaseTypeField>(type); 188 return this; 189 } 190 191 @Override 192 public Builder type(EnumWrapper<LegalHoldPolicyAssignmentBaseTypeField> type) { 193 this.type = type; 194 return this; 195 } 196 197 public LegalHoldPolicyAssignment build() { 198 return new LegalHoldPolicyAssignment(this); 199 } 200 } 201}