001package com.box.sdkgen.schemas.metadatatemplate;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.fasterxml.jackson.annotation.JsonFilter;
006import java.util.List;
007import java.util.Objects;
008
009@JsonFilter("nullablePropertyFilter")
010public class MetadataTemplateFieldsOptionsRulesField extends SerializableObject {
011
012  /** Whether to allow users to select multiple values. */
013  protected Boolean multiSelect;
014
015  /** An array of integers defining which levels of the taxonomy are selectable by users. */
016  protected List<Long> selectableLevels;
017
018  public MetadataTemplateFieldsOptionsRulesField() {
019    super();
020  }
021
022  protected MetadataTemplateFieldsOptionsRulesField(Builder builder) {
023    super();
024    this.multiSelect = builder.multiSelect;
025    this.selectableLevels = builder.selectableLevels;
026    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
027  }
028
029  public Boolean getMultiSelect() {
030    return multiSelect;
031  }
032
033  public List<Long> getSelectableLevels() {
034    return selectableLevels;
035  }
036
037  @Override
038  public boolean equals(Object o) {
039    if (this == o) {
040      return true;
041    }
042    if (o == null || getClass() != o.getClass()) {
043      return false;
044    }
045    MetadataTemplateFieldsOptionsRulesField casted = (MetadataTemplateFieldsOptionsRulesField) o;
046    return Objects.equals(multiSelect, casted.multiSelect)
047        && Objects.equals(selectableLevels, casted.selectableLevels);
048  }
049
050  @Override
051  public int hashCode() {
052    return Objects.hash(multiSelect, selectableLevels);
053  }
054
055  @Override
056  public String toString() {
057    return "MetadataTemplateFieldsOptionsRulesField{"
058        + "multiSelect='"
059        + multiSelect
060        + '\''
061        + ", "
062        + "selectableLevels='"
063        + selectableLevels
064        + '\''
065        + "}";
066  }
067
068  public static class Builder extends NullableFieldTracker {
069
070    protected Boolean multiSelect;
071
072    protected List<Long> selectableLevels;
073
074    public Builder multiSelect(Boolean multiSelect) {
075      this.multiSelect = multiSelect;
076      return this;
077    }
078
079    public Builder selectableLevels(List<Long> selectableLevels) {
080      this.selectableLevels = selectableLevels;
081      return this;
082    }
083
084    public MetadataTemplateFieldsOptionsRulesField build() {
085      return new MetadataTemplateFieldsOptionsRulesField(this);
086    }
087  }
088}