001package com.box.sdkgen.schemas.metadatacascadepolicy;
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.databind.annotation.JsonDeserialize;
008import com.fasterxml.jackson.databind.annotation.JsonSerialize;
009import java.util.Objects;
010
011@JsonFilter("nullablePropertyFilter")
012public class MetadataCascadePolicyParentField extends SerializableObject {
013
014  /** The value will always be `folder`. */
015  @JsonDeserialize(
016      using =
017          MetadataCascadePolicyParentTypeField.MetadataCascadePolicyParentTypeFieldDeserializer
018              .class)
019  @JsonSerialize(
020      using =
021          MetadataCascadePolicyParentTypeField.MetadataCascadePolicyParentTypeFieldSerializer.class)
022  protected EnumWrapper<MetadataCascadePolicyParentTypeField> type;
023
024  /** The ID of the folder the policy is applied to. */
025  protected String id;
026
027  public MetadataCascadePolicyParentField() {
028    super();
029  }
030
031  protected MetadataCascadePolicyParentField(Builder builder) {
032    super();
033    this.type = builder.type;
034    this.id = builder.id;
035    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
036  }
037
038  public EnumWrapper<MetadataCascadePolicyParentTypeField> getType() {
039    return type;
040  }
041
042  public String getId() {
043    return id;
044  }
045
046  @Override
047  public boolean equals(Object o) {
048    if (this == o) {
049      return true;
050    }
051    if (o == null || getClass() != o.getClass()) {
052      return false;
053    }
054    MetadataCascadePolicyParentField casted = (MetadataCascadePolicyParentField) o;
055    return Objects.equals(type, casted.type) && Objects.equals(id, casted.id);
056  }
057
058  @Override
059  public int hashCode() {
060    return Objects.hash(type, id);
061  }
062
063  @Override
064  public String toString() {
065    return "MetadataCascadePolicyParentField{"
066        + "type='"
067        + type
068        + '\''
069        + ", "
070        + "id='"
071        + id
072        + '\''
073        + "}";
074  }
075
076  public static class Builder extends NullableFieldTracker {
077
078    protected EnumWrapper<MetadataCascadePolicyParentTypeField> type;
079
080    protected String id;
081
082    public Builder type(MetadataCascadePolicyParentTypeField type) {
083      this.type = new EnumWrapper<MetadataCascadePolicyParentTypeField>(type);
084      return this;
085    }
086
087    public Builder type(EnumWrapper<MetadataCascadePolicyParentTypeField> type) {
088      this.type = type;
089      return this;
090    }
091
092    public Builder id(String id) {
093      this.id = id;
094      return this;
095    }
096
097    public MetadataCascadePolicyParentField build() {
098      return new MetadataCascadePolicyParentField(this);
099    }
100  }
101}