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}