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