001package com.box.sdkgen.schemas.rolevariable;
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.Objects;
011
012/** Determines if the workflow outcome affects a specific collaborator role. */
013@JsonFilter("nullablePropertyFilter")
014public class RoleVariable extends SerializableObject {
015
016  /** Role object type. */
017  @JsonDeserialize(using = RoleVariableTypeField.RoleVariableTypeFieldDeserializer.class)
018  @JsonSerialize(using = RoleVariableTypeField.RoleVariableTypeFieldSerializer.class)
019  protected EnumWrapper<RoleVariableTypeField> type;
020
021  /** The variable type used by the object. */
022  @JsonDeserialize(
023      using = RoleVariableVariableTypeField.RoleVariableVariableTypeFieldDeserializer.class)
024  @JsonSerialize(
025      using = RoleVariableVariableTypeField.RoleVariableVariableTypeFieldSerializer.class)
026  @JsonProperty("variable_type")
027  protected EnumWrapper<RoleVariableVariableTypeField> variableType;
028
029  @JsonDeserialize(
030      using = RoleVariableVariableValueField.RoleVariableVariableValueFieldDeserializer.class)
031  @JsonSerialize(
032      using = RoleVariableVariableValueField.RoleVariableVariableValueFieldSerializer.class)
033  @JsonProperty("variable_value")
034  protected final EnumWrapper<RoleVariableVariableValueField> variableValue;
035
036  public RoleVariable(RoleVariableVariableValueField variableValue) {
037    super();
038    this.variableValue = new EnumWrapper<RoleVariableVariableValueField>(variableValue);
039    this.type = new EnumWrapper<RoleVariableTypeField>(RoleVariableTypeField.VARIABLE);
040    this.variableType =
041        new EnumWrapper<RoleVariableVariableTypeField>(
042            RoleVariableVariableTypeField.COLLABORATOR_ROLE);
043  }
044
045  public RoleVariable(
046      @JsonProperty("variable_value") EnumWrapper<RoleVariableVariableValueField> variableValue) {
047    super();
048    this.variableValue = variableValue;
049    this.type = new EnumWrapper<RoleVariableTypeField>(RoleVariableTypeField.VARIABLE);
050    this.variableType =
051        new EnumWrapper<RoleVariableVariableTypeField>(
052            RoleVariableVariableTypeField.COLLABORATOR_ROLE);
053  }
054
055  protected RoleVariable(Builder builder) {
056    super();
057    this.type = builder.type;
058    this.variableType = builder.variableType;
059    this.variableValue = builder.variableValue;
060    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
061  }
062
063  public EnumWrapper<RoleVariableTypeField> getType() {
064    return type;
065  }
066
067  public EnumWrapper<RoleVariableVariableTypeField> getVariableType() {
068    return variableType;
069  }
070
071  public EnumWrapper<RoleVariableVariableValueField> getVariableValue() {
072    return variableValue;
073  }
074
075  @Override
076  public boolean equals(Object o) {
077    if (this == o) {
078      return true;
079    }
080    if (o == null || getClass() != o.getClass()) {
081      return false;
082    }
083    RoleVariable casted = (RoleVariable) o;
084    return Objects.equals(type, casted.type)
085        && Objects.equals(variableType, casted.variableType)
086        && Objects.equals(variableValue, casted.variableValue);
087  }
088
089  @Override
090  public int hashCode() {
091    return Objects.hash(type, variableType, variableValue);
092  }
093
094  @Override
095  public String toString() {
096    return "RoleVariable{"
097        + "type='"
098        + type
099        + '\''
100        + ", "
101        + "variableType='"
102        + variableType
103        + '\''
104        + ", "
105        + "variableValue='"
106        + variableValue
107        + '\''
108        + "}";
109  }
110
111  public static class Builder extends NullableFieldTracker {
112
113    protected EnumWrapper<RoleVariableTypeField> type;
114
115    protected EnumWrapper<RoleVariableVariableTypeField> variableType;
116
117    protected final EnumWrapper<RoleVariableVariableValueField> variableValue;
118
119    public Builder(RoleVariableVariableValueField variableValue) {
120      super();
121      this.variableValue = new EnumWrapper<RoleVariableVariableValueField>(variableValue);
122    }
123
124    public Builder(EnumWrapper<RoleVariableVariableValueField> variableValue) {
125      super();
126      this.variableValue = variableValue;
127    }
128
129    public Builder type(RoleVariableTypeField type) {
130      this.type = new EnumWrapper<RoleVariableTypeField>(type);
131      return this;
132    }
133
134    public Builder type(EnumWrapper<RoleVariableTypeField> type) {
135      this.type = type;
136      return this;
137    }
138
139    public Builder variableType(RoleVariableVariableTypeField variableType) {
140      this.variableType = new EnumWrapper<RoleVariableVariableTypeField>(variableType);
141      return this;
142    }
143
144    public Builder variableType(EnumWrapper<RoleVariableVariableTypeField> variableType) {
145      this.variableType = variableType;
146      return this;
147    }
148
149    public RoleVariable build() {
150      if (this.type == null) {
151        this.type = new EnumWrapper<RoleVariableTypeField>(RoleVariableTypeField.VARIABLE);
152      }
153      if (this.variableType == null) {
154        this.variableType =
155            new EnumWrapper<RoleVariableVariableTypeField>(
156                RoleVariableVariableTypeField.COLLABORATOR_ROLE);
157      }
158      return new RoleVariable(this);
159    }
160  }
161}