001package com.box.sdkgen.schemas.workflow; 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.userbase.UserBase; 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.List; 014import java.util.Objects; 015 016@JsonFilter("nullablePropertyFilter") 017public class WorkflowFlowsField extends SerializableObject { 018 019 /** The identifier of the flow. */ 020 protected String id; 021 022 /** The flow's resource type. */ 023 @JsonDeserialize(using = WorkflowFlowsTypeField.WorkflowFlowsTypeFieldDeserializer.class) 024 @JsonSerialize(using = WorkflowFlowsTypeField.WorkflowFlowsTypeFieldSerializer.class) 025 protected EnumWrapper<WorkflowFlowsTypeField> type; 026 027 protected WorkflowFlowsTriggerField trigger; 028 029 protected List<WorkflowFlowsOutcomesField> outcomes; 030 031 /** When this flow was created. */ 032 @JsonProperty("created_at") 033 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 034 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 035 protected OffsetDateTime createdAt; 036 037 @JsonProperty("created_by") 038 protected UserBase createdBy; 039 040 public WorkflowFlowsField() { 041 super(); 042 } 043 044 protected WorkflowFlowsField(Builder builder) { 045 super(); 046 this.id = builder.id; 047 this.type = builder.type; 048 this.trigger = builder.trigger; 049 this.outcomes = builder.outcomes; 050 this.createdAt = builder.createdAt; 051 this.createdBy = builder.createdBy; 052 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 053 } 054 055 public String getId() { 056 return id; 057 } 058 059 public EnumWrapper<WorkflowFlowsTypeField> getType() { 060 return type; 061 } 062 063 public WorkflowFlowsTriggerField getTrigger() { 064 return trigger; 065 } 066 067 public List<WorkflowFlowsOutcomesField> getOutcomes() { 068 return outcomes; 069 } 070 071 public OffsetDateTime getCreatedAt() { 072 return createdAt; 073 } 074 075 public UserBase getCreatedBy() { 076 return createdBy; 077 } 078 079 @Override 080 public boolean equals(Object o) { 081 if (this == o) { 082 return true; 083 } 084 if (o == null || getClass() != o.getClass()) { 085 return false; 086 } 087 WorkflowFlowsField casted = (WorkflowFlowsField) o; 088 return Objects.equals(id, casted.id) 089 && Objects.equals(type, casted.type) 090 && Objects.equals(trigger, casted.trigger) 091 && Objects.equals(outcomes, casted.outcomes) 092 && Objects.equals(createdAt, casted.createdAt) 093 && Objects.equals(createdBy, casted.createdBy); 094 } 095 096 @Override 097 public int hashCode() { 098 return Objects.hash(id, type, trigger, outcomes, createdAt, createdBy); 099 } 100 101 @Override 102 public String toString() { 103 return "WorkflowFlowsField{" 104 + "id='" 105 + id 106 + '\'' 107 + ", " 108 + "type='" 109 + type 110 + '\'' 111 + ", " 112 + "trigger='" 113 + trigger 114 + '\'' 115 + ", " 116 + "outcomes='" 117 + outcomes 118 + '\'' 119 + ", " 120 + "createdAt='" 121 + createdAt 122 + '\'' 123 + ", " 124 + "createdBy='" 125 + createdBy 126 + '\'' 127 + "}"; 128 } 129 130 public static class Builder extends NullableFieldTracker { 131 132 protected String id; 133 134 protected EnumWrapper<WorkflowFlowsTypeField> type; 135 136 protected WorkflowFlowsTriggerField trigger; 137 138 protected List<WorkflowFlowsOutcomesField> outcomes; 139 140 protected OffsetDateTime createdAt; 141 142 protected UserBase createdBy; 143 144 public Builder id(String id) { 145 this.id = id; 146 return this; 147 } 148 149 public Builder type(WorkflowFlowsTypeField type) { 150 this.type = new EnumWrapper<WorkflowFlowsTypeField>(type); 151 return this; 152 } 153 154 public Builder type(EnumWrapper<WorkflowFlowsTypeField> type) { 155 this.type = type; 156 return this; 157 } 158 159 public Builder trigger(WorkflowFlowsTriggerField trigger) { 160 this.trigger = trigger; 161 return this; 162 } 163 164 public Builder outcomes(List<WorkflowFlowsOutcomesField> outcomes) { 165 this.outcomes = outcomes; 166 return this; 167 } 168 169 public Builder createdAt(OffsetDateTime createdAt) { 170 this.createdAt = createdAt; 171 return this; 172 } 173 174 public Builder createdBy(UserBase createdBy) { 175 this.createdBy = createdBy; 176 return this; 177 } 178 179 public WorkflowFlowsField build() { 180 return new WorkflowFlowsField(this); 181 } 182 } 183}