001package com.box.sdkgen.schemas.storagepolicymini;
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/** A mini description of a Storage Policy object. */
013@JsonFilter("nullablePropertyFilter")
014public class StoragePolicyMini extends SerializableObject {
015
016  /** The unique identifier for this storage policy. */
017  protected final String id;
018
019  /** The value will always be `storage_policy`. */
020  @JsonDeserialize(using = StoragePolicyMiniTypeField.StoragePolicyMiniTypeFieldDeserializer.class)
021  @JsonSerialize(using = StoragePolicyMiniTypeField.StoragePolicyMiniTypeFieldSerializer.class)
022  protected EnumWrapper<StoragePolicyMiniTypeField> type;
023
024  public StoragePolicyMini(@JsonProperty("id") String id) {
025    super();
026    this.id = id;
027    this.type =
028        new EnumWrapper<StoragePolicyMiniTypeField>(StoragePolicyMiniTypeField.STORAGE_POLICY);
029  }
030
031  protected StoragePolicyMini(Builder builder) {
032    super();
033    this.id = builder.id;
034    this.type = builder.type;
035    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
036  }
037
038  public String getId() {
039    return id;
040  }
041
042  public EnumWrapper<StoragePolicyMiniTypeField> getType() {
043    return type;
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    StoragePolicyMini casted = (StoragePolicyMini) o;
055    return Objects.equals(id, casted.id) && Objects.equals(type, casted.type);
056  }
057
058  @Override
059  public int hashCode() {
060    return Objects.hash(id, type);
061  }
062
063  @Override
064  public String toString() {
065    return "StoragePolicyMini{" + "id='" + id + '\'' + ", " + "type='" + type + '\'' + "}";
066  }
067
068  public static class Builder extends NullableFieldTracker {
069
070    protected final String id;
071
072    protected EnumWrapper<StoragePolicyMiniTypeField> type;
073
074    public Builder(String id) {
075      super();
076      this.id = id;
077    }
078
079    public Builder type(StoragePolicyMiniTypeField type) {
080      this.type = new EnumWrapper<StoragePolicyMiniTypeField>(type);
081      return this;
082    }
083
084    public Builder type(EnumWrapper<StoragePolicyMiniTypeField> type) {
085      this.type = type;
086      return this;
087    }
088
089    public StoragePolicyMini build() {
090      if (this.type == null) {
091        this.type =
092            new EnumWrapper<StoragePolicyMiniTypeField>(StoragePolicyMiniTypeField.STORAGE_POLICY);
093      }
094      return new StoragePolicyMini(this);
095    }
096  }
097}