001package com.box.sdkgen.managers.tasks; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.internal.utils.DateTimeUtils; 006import com.box.sdkgen.serialization.json.EnumWrapper; 007import com.fasterxml.jackson.annotation.JsonFilter; 008import com.fasterxml.jackson.annotation.JsonProperty; 009import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 010import com.fasterxml.jackson.databind.annotation.JsonSerialize; 011import java.time.OffsetDateTime; 012import java.util.Objects; 013 014@JsonFilter("nullablePropertyFilter") 015public class CreateTaskRequestBody extends SerializableObject { 016 017 /** The file to attach the task to. */ 018 protected final CreateTaskRequestBodyItemField item; 019 020 /** 021 * The action the task assignee will be prompted to do. Must be 022 * 023 * <p>* `review` defines an approval task that can be approved or, rejected * `complete` defines a 024 * general task which can be completed. 025 */ 026 @JsonDeserialize( 027 using = CreateTaskRequestBodyActionField.CreateTaskRequestBodyActionFieldDeserializer.class) 028 @JsonSerialize( 029 using = CreateTaskRequestBodyActionField.CreateTaskRequestBodyActionFieldSerializer.class) 030 protected EnumWrapper<CreateTaskRequestBodyActionField> action; 031 032 /** An optional message to include with the task. */ 033 protected String message; 034 035 /** Defines when the task is due. Defaults to `null` if not provided. */ 036 @JsonProperty("due_at") 037 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 038 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 039 protected OffsetDateTime dueAt; 040 041 /** 042 * Defines which assignees need to complete this task before the task is considered completed. 043 * 044 * <p>* `all_assignees` (default) requires all assignees to review or approve the task in order 045 * for it to be considered completed. * `any_assignee` accepts any one assignee to review or 046 * approve the task in order for it to be considered completed. 047 */ 048 @JsonDeserialize( 049 using = 050 CreateTaskRequestBodyCompletionRuleField 051 .CreateTaskRequestBodyCompletionRuleFieldDeserializer.class) 052 @JsonSerialize( 053 using = 054 CreateTaskRequestBodyCompletionRuleField 055 .CreateTaskRequestBodyCompletionRuleFieldSerializer.class) 056 @JsonProperty("completion_rule") 057 protected EnumWrapper<CreateTaskRequestBodyCompletionRuleField> completionRule; 058 059 public CreateTaskRequestBody(@JsonProperty("item") CreateTaskRequestBodyItemField item) { 060 super(); 061 this.item = item; 062 } 063 064 protected CreateTaskRequestBody(Builder builder) { 065 super(); 066 this.item = builder.item; 067 this.action = builder.action; 068 this.message = builder.message; 069 this.dueAt = builder.dueAt; 070 this.completionRule = builder.completionRule; 071 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 072 } 073 074 public CreateTaskRequestBodyItemField getItem() { 075 return item; 076 } 077 078 public EnumWrapper<CreateTaskRequestBodyActionField> getAction() { 079 return action; 080 } 081 082 public String getMessage() { 083 return message; 084 } 085 086 public OffsetDateTime getDueAt() { 087 return dueAt; 088 } 089 090 public EnumWrapper<CreateTaskRequestBodyCompletionRuleField> getCompletionRule() { 091 return completionRule; 092 } 093 094 @Override 095 public boolean equals(Object o) { 096 if (this == o) { 097 return true; 098 } 099 if (o == null || getClass() != o.getClass()) { 100 return false; 101 } 102 CreateTaskRequestBody casted = (CreateTaskRequestBody) o; 103 return Objects.equals(item, casted.item) 104 && Objects.equals(action, casted.action) 105 && Objects.equals(message, casted.message) 106 && Objects.equals(dueAt, casted.dueAt) 107 && Objects.equals(completionRule, casted.completionRule); 108 } 109 110 @Override 111 public int hashCode() { 112 return Objects.hash(item, action, message, dueAt, completionRule); 113 } 114 115 @Override 116 public String toString() { 117 return "CreateTaskRequestBody{" 118 + "item='" 119 + item 120 + '\'' 121 + ", " 122 + "action='" 123 + action 124 + '\'' 125 + ", " 126 + "message='" 127 + message 128 + '\'' 129 + ", " 130 + "dueAt='" 131 + dueAt 132 + '\'' 133 + ", " 134 + "completionRule='" 135 + completionRule 136 + '\'' 137 + "}"; 138 } 139 140 public static class Builder extends NullableFieldTracker { 141 142 protected final CreateTaskRequestBodyItemField item; 143 144 protected EnumWrapper<CreateTaskRequestBodyActionField> action; 145 146 protected String message; 147 148 protected OffsetDateTime dueAt; 149 150 protected EnumWrapper<CreateTaskRequestBodyCompletionRuleField> completionRule; 151 152 public Builder(CreateTaskRequestBodyItemField item) { 153 super(); 154 this.item = item; 155 } 156 157 public Builder action(CreateTaskRequestBodyActionField action) { 158 this.action = new EnumWrapper<CreateTaskRequestBodyActionField>(action); 159 return this; 160 } 161 162 public Builder action(EnumWrapper<CreateTaskRequestBodyActionField> action) { 163 this.action = action; 164 return this; 165 } 166 167 public Builder message(String message) { 168 this.message = message; 169 return this; 170 } 171 172 public Builder dueAt(OffsetDateTime dueAt) { 173 this.dueAt = dueAt; 174 return this; 175 } 176 177 public Builder completionRule(CreateTaskRequestBodyCompletionRuleField completionRule) { 178 this.completionRule = 179 new EnumWrapper<CreateTaskRequestBodyCompletionRuleField>(completionRule); 180 return this; 181 } 182 183 public Builder completionRule( 184 EnumWrapper<CreateTaskRequestBodyCompletionRuleField> completionRule) { 185 this.completionRule = completionRule; 186 return this; 187 } 188 189 public CreateTaskRequestBody build() { 190 return new CreateTaskRequestBody(this); 191 } 192 } 193}