001package com.box.sdkgen.schemas.fileversionlegalhold; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.internal.utils.DateTimeUtils; 006import com.box.sdkgen.schemas.filemini.FileMini; 007import com.box.sdkgen.schemas.fileversionmini.FileVersionMini; 008import com.box.sdkgen.schemas.legalholdpolicyassignment.LegalHoldPolicyAssignment; 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.List; 016import java.util.Objects; 017 018/** File version legal hold is an entity representing all holds on a File Version. */ 019@JsonFilter("nullablePropertyFilter") 020public class FileVersionLegalHold extends SerializableObject { 021 022 /** The unique identifier for this file version legal hold. */ 023 protected String id; 024 025 /** The value will always be `file_version_legal_hold`. */ 026 @JsonDeserialize( 027 using = FileVersionLegalHoldTypeField.FileVersionLegalHoldTypeFieldDeserializer.class) 028 @JsonSerialize( 029 using = FileVersionLegalHoldTypeField.FileVersionLegalHoldTypeFieldSerializer.class) 030 protected EnumWrapper<FileVersionLegalHoldTypeField> type; 031 032 @JsonProperty("file_version") 033 protected FileVersionMini fileVersion; 034 035 protected FileMini file; 036 037 /** List of assignments contributing to this Hold. */ 038 @JsonProperty("legal_hold_policy_assignments") 039 protected List<LegalHoldPolicyAssignment> legalHoldPolicyAssignments; 040 041 /** Time that this File-Version-Legal-Hold was deleted. */ 042 @JsonProperty("deleted_at") 043 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 044 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 045 protected OffsetDateTime deletedAt; 046 047 public FileVersionLegalHold() { 048 super(); 049 } 050 051 protected FileVersionLegalHold(Builder builder) { 052 super(); 053 this.id = builder.id; 054 this.type = builder.type; 055 this.fileVersion = builder.fileVersion; 056 this.file = builder.file; 057 this.legalHoldPolicyAssignments = builder.legalHoldPolicyAssignments; 058 this.deletedAt = builder.deletedAt; 059 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 060 } 061 062 public String getId() { 063 return id; 064 } 065 066 public EnumWrapper<FileVersionLegalHoldTypeField> getType() { 067 return type; 068 } 069 070 public FileVersionMini getFileVersion() { 071 return fileVersion; 072 } 073 074 public FileMini getFile() { 075 return file; 076 } 077 078 public List<LegalHoldPolicyAssignment> getLegalHoldPolicyAssignments() { 079 return legalHoldPolicyAssignments; 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 FileVersionLegalHold casted = (FileVersionLegalHold) o; 095 return Objects.equals(id, casted.id) 096 && Objects.equals(type, casted.type) 097 && Objects.equals(fileVersion, casted.fileVersion) 098 && Objects.equals(file, casted.file) 099 && Objects.equals(legalHoldPolicyAssignments, casted.legalHoldPolicyAssignments) 100 && Objects.equals(deletedAt, casted.deletedAt); 101 } 102 103 @Override 104 public int hashCode() { 105 return Objects.hash(id, type, fileVersion, file, legalHoldPolicyAssignments, deletedAt); 106 } 107 108 @Override 109 public String toString() { 110 return "FileVersionLegalHold{" 111 + "id='" 112 + id 113 + '\'' 114 + ", " 115 + "type='" 116 + type 117 + '\'' 118 + ", " 119 + "fileVersion='" 120 + fileVersion 121 + '\'' 122 + ", " 123 + "file='" 124 + file 125 + '\'' 126 + ", " 127 + "legalHoldPolicyAssignments='" 128 + legalHoldPolicyAssignments 129 + '\'' 130 + ", " 131 + "deletedAt='" 132 + deletedAt 133 + '\'' 134 + "}"; 135 } 136 137 public static class Builder extends NullableFieldTracker { 138 139 protected String id; 140 141 protected EnumWrapper<FileVersionLegalHoldTypeField> type; 142 143 protected FileVersionMini fileVersion; 144 145 protected FileMini file; 146 147 protected List<LegalHoldPolicyAssignment> legalHoldPolicyAssignments; 148 149 protected OffsetDateTime deletedAt; 150 151 public Builder id(String id) { 152 this.id = id; 153 return this; 154 } 155 156 public Builder type(FileVersionLegalHoldTypeField type) { 157 this.type = new EnumWrapper<FileVersionLegalHoldTypeField>(type); 158 return this; 159 } 160 161 public Builder type(EnumWrapper<FileVersionLegalHoldTypeField> type) { 162 this.type = type; 163 return this; 164 } 165 166 public Builder fileVersion(FileVersionMini fileVersion) { 167 this.fileVersion = fileVersion; 168 return this; 169 } 170 171 public Builder file(FileMini file) { 172 this.file = file; 173 return this; 174 } 175 176 public Builder legalHoldPolicyAssignments( 177 List<LegalHoldPolicyAssignment> legalHoldPolicyAssignments) { 178 this.legalHoldPolicyAssignments = legalHoldPolicyAssignments; 179 return this; 180 } 181 182 public Builder deletedAt(OffsetDateTime deletedAt) { 183 this.deletedAt = deletedAt; 184 return this; 185 } 186 187 public FileVersionLegalHold build() { 188 return new FileVersionLegalHold(this); 189 } 190 } 191}