001package com.box.sdkgen.schemas.workflow;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.serialization.json.EnumWrapper;
006import com.fasterxml.jackson.annotation.JsonFilter;
007import com.fasterxml.jackson.annotation.JsonProperty;
008import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
009import com.fasterxml.jackson.databind.annotation.JsonSerialize;
010import java.util.List;
011import java.util.Objects;
012
013@JsonFilter("nullablePropertyFilter")
014public class WorkflowFlowsTriggerField extends SerializableObject {
015
016  /** The trigger's resource type. */
017  @JsonDeserialize(
018      using = WorkflowFlowsTriggerTypeField.WorkflowFlowsTriggerTypeFieldDeserializer.class)
019  @JsonSerialize(
020      using = WorkflowFlowsTriggerTypeField.WorkflowFlowsTriggerTypeFieldSerializer.class)
021  protected EnumWrapper<WorkflowFlowsTriggerTypeField> type;
022
023  /** The type of trigger selected for this flow. */
024  @JsonDeserialize(
025      using =
026          WorkflowFlowsTriggerTriggerTypeField.WorkflowFlowsTriggerTriggerTypeFieldDeserializer
027              .class)
028  @JsonSerialize(
029      using =
030          WorkflowFlowsTriggerTriggerTypeField.WorkflowFlowsTriggerTriggerTypeFieldSerializer.class)
031  @JsonProperty("trigger_type")
032  protected EnumWrapper<WorkflowFlowsTriggerTriggerTypeField> triggerType;
033
034  /** List of trigger scopes. */
035  protected List<WorkflowFlowsTriggerScopeField> scope;
036
037  public WorkflowFlowsTriggerField() {
038    super();
039  }
040
041  protected WorkflowFlowsTriggerField(Builder builder) {
042    super();
043    this.type = builder.type;
044    this.triggerType = builder.triggerType;
045    this.scope = builder.scope;
046    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
047  }
048
049  public EnumWrapper<WorkflowFlowsTriggerTypeField> getType() {
050    return type;
051  }
052
053  public EnumWrapper<WorkflowFlowsTriggerTriggerTypeField> getTriggerType() {
054    return triggerType;
055  }
056
057  public List<WorkflowFlowsTriggerScopeField> getScope() {
058    return scope;
059  }
060
061  @Override
062  public boolean equals(Object o) {
063    if (this == o) {
064      return true;
065    }
066    if (o == null || getClass() != o.getClass()) {
067      return false;
068    }
069    WorkflowFlowsTriggerField casted = (WorkflowFlowsTriggerField) o;
070    return Objects.equals(type, casted.type)
071        && Objects.equals(triggerType, casted.triggerType)
072        && Objects.equals(scope, casted.scope);
073  }
074
075  @Override
076  public int hashCode() {
077    return Objects.hash(type, triggerType, scope);
078  }
079
080  @Override
081  public String toString() {
082    return "WorkflowFlowsTriggerField{"
083        + "type='"
084        + type
085        + '\''
086        + ", "
087        + "triggerType='"
088        + triggerType
089        + '\''
090        + ", "
091        + "scope='"
092        + scope
093        + '\''
094        + "}";
095  }
096
097  public static class Builder extends NullableFieldTracker {
098
099    protected EnumWrapper<WorkflowFlowsTriggerTypeField> type;
100
101    protected EnumWrapper<WorkflowFlowsTriggerTriggerTypeField> triggerType;
102
103    protected List<WorkflowFlowsTriggerScopeField> scope;
104
105    public Builder type(WorkflowFlowsTriggerTypeField type) {
106      this.type = new EnumWrapper<WorkflowFlowsTriggerTypeField>(type);
107      return this;
108    }
109
110    public Builder type(EnumWrapper<WorkflowFlowsTriggerTypeField> type) {
111      this.type = type;
112      return this;
113    }
114
115    public Builder triggerType(WorkflowFlowsTriggerTriggerTypeField triggerType) {
116      this.triggerType = new EnumWrapper<WorkflowFlowsTriggerTriggerTypeField>(triggerType);
117      return this;
118    }
119
120    public Builder triggerType(EnumWrapper<WorkflowFlowsTriggerTriggerTypeField> triggerType) {
121      this.triggerType = triggerType;
122      return this;
123    }
124
125    public Builder scope(List<WorkflowFlowsTriggerScopeField> scope) {
126      this.scope = scope;
127      return this;
128    }
129
130    public WorkflowFlowsTriggerField build() {
131      return new WorkflowFlowsTriggerField(this);
132    }
133  }
134}