001package com.box.sdkgen.managers.retentionpolicyassignments; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.fasterxml.jackson.annotation.JsonFilter; 006import com.fasterxml.jackson.annotation.JsonProperty; 007import java.util.List; 008import java.util.Objects; 009 010@JsonFilter("nullablePropertyFilter") 011public class CreateRetentionPolicyAssignmentRequestBody extends SerializableObject { 012 013 /** The ID of the retention policy to assign. */ 014 @JsonProperty("policy_id") 015 protected final String policyId; 016 017 /** The item to assign the policy to. */ 018 @JsonProperty("assign_to") 019 protected final CreateRetentionPolicyAssignmentRequestBodyAssignToField assignTo; 020 021 /** 022 * If the `assign_to` type is `metadata_template`, then optionally add the `filter_fields` 023 * parameter which will require an array of objects with a field entry and a value entry. 024 * Currently only one object of `field` and `value` is supported. 025 */ 026 @JsonProperty("filter_fields") 027 protected List<CreateRetentionPolicyAssignmentRequestBodyFilterFieldsField> filterFields; 028 029 /** 030 * The date the retention policy assignment begins. 031 * 032 * <p>If the `assigned_to` type is `metadata_template`, this field can be a date field's metadata 033 * attribute key id. 034 */ 035 @JsonProperty("start_date_field") 036 protected String startDateField; 037 038 public CreateRetentionPolicyAssignmentRequestBody( 039 @JsonProperty("policy_id") String policyId, 040 @JsonProperty("assign_to") CreateRetentionPolicyAssignmentRequestBodyAssignToField assignTo) { 041 super(); 042 this.policyId = policyId; 043 this.assignTo = assignTo; 044 } 045 046 protected CreateRetentionPolicyAssignmentRequestBody(Builder builder) { 047 super(); 048 this.policyId = builder.policyId; 049 this.assignTo = builder.assignTo; 050 this.filterFields = builder.filterFields; 051 this.startDateField = builder.startDateField; 052 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 053 } 054 055 public String getPolicyId() { 056 return policyId; 057 } 058 059 public CreateRetentionPolicyAssignmentRequestBodyAssignToField getAssignTo() { 060 return assignTo; 061 } 062 063 public List<CreateRetentionPolicyAssignmentRequestBodyFilterFieldsField> getFilterFields() { 064 return filterFields; 065 } 066 067 public String getStartDateField() { 068 return startDateField; 069 } 070 071 @Override 072 public boolean equals(Object o) { 073 if (this == o) { 074 return true; 075 } 076 if (o == null || getClass() != o.getClass()) { 077 return false; 078 } 079 CreateRetentionPolicyAssignmentRequestBody casted = 080 (CreateRetentionPolicyAssignmentRequestBody) o; 081 return Objects.equals(policyId, casted.policyId) 082 && Objects.equals(assignTo, casted.assignTo) 083 && Objects.equals(filterFields, casted.filterFields) 084 && Objects.equals(startDateField, casted.startDateField); 085 } 086 087 @Override 088 public int hashCode() { 089 return Objects.hash(policyId, assignTo, filterFields, startDateField); 090 } 091 092 @Override 093 public String toString() { 094 return "CreateRetentionPolicyAssignmentRequestBody{" 095 + "policyId='" 096 + policyId 097 + '\'' 098 + ", " 099 + "assignTo='" 100 + assignTo 101 + '\'' 102 + ", " 103 + "filterFields='" 104 + filterFields 105 + '\'' 106 + ", " 107 + "startDateField='" 108 + startDateField 109 + '\'' 110 + "}"; 111 } 112 113 public static class Builder extends NullableFieldTracker { 114 115 protected final String policyId; 116 117 protected final CreateRetentionPolicyAssignmentRequestBodyAssignToField assignTo; 118 119 protected List<CreateRetentionPolicyAssignmentRequestBodyFilterFieldsField> filterFields; 120 121 protected String startDateField; 122 123 public Builder( 124 String policyId, CreateRetentionPolicyAssignmentRequestBodyAssignToField assignTo) { 125 super(); 126 this.policyId = policyId; 127 this.assignTo = assignTo; 128 } 129 130 public Builder filterFields( 131 List<CreateRetentionPolicyAssignmentRequestBodyFilterFieldsField> filterFields) { 132 this.filterFields = filterFields; 133 return this; 134 } 135 136 public Builder startDateField(String startDateField) { 137 this.startDateField = startDateField; 138 return this; 139 } 140 141 public CreateRetentionPolicyAssignmentRequestBody build() { 142 return new CreateRetentionPolicyAssignmentRequestBody(this); 143 } 144 } 145}