001package com.box.sdkgen.schemas.shieldinformationbarriersegmentmember;
002
003import com.box.sdkgen.internal.utils.DateTimeUtils;
004import com.box.sdkgen.schemas.shieldinformationbarrierbase.ShieldInformationBarrierBase;
005import com.box.sdkgen.schemas.shieldinformationbarriersegmentmemberbase.ShieldInformationBarrierSegmentMemberBaseTypeField;
006import com.box.sdkgen.schemas.shieldinformationbarriersegmentmembermini.ShieldInformationBarrierSegmentMemberMini;
007import com.box.sdkgen.schemas.userbase.UserBase;
008import com.box.sdkgen.serialization.json.EnumWrapper;
009import com.fasterxml.jackson.annotation.JsonFilter;
010import com.fasterxml.jackson.annotation.JsonProperty;
011import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
012import com.fasterxml.jackson.databind.annotation.JsonSerialize;
013import java.time.OffsetDateTime;
014import java.util.Objects;
015
016/** A standard representation of a shield information barrier segment member object. */
017@JsonFilter("nullablePropertyFilter")
018public class ShieldInformationBarrierSegmentMember
019    extends ShieldInformationBarrierSegmentMemberMini {
020
021  @JsonProperty("shield_information_barrier")
022  protected ShieldInformationBarrierBase shieldInformationBarrier;
023
024  /** The `type` and `id` of the requested shield information barrier segment. */
025  @JsonProperty("shield_information_barrier_segment")
026  protected ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegmentField
027      shieldInformationBarrierSegment;
028
029  /** ISO date time string when this shield information barrier object was created. */
030  @JsonProperty("created_at")
031  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
032  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
033  protected OffsetDateTime createdAt;
034
035  @JsonProperty("created_by")
036  protected UserBase createdBy;
037
038  /** ISO date time string when this shield information barrier segment Member was updated. */
039  @JsonProperty("updated_at")
040  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
041  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
042  protected OffsetDateTime updatedAt;
043
044  @JsonProperty("updated_by")
045  protected UserBase updatedBy;
046
047  public ShieldInformationBarrierSegmentMember() {
048    super();
049  }
050
051  protected ShieldInformationBarrierSegmentMember(Builder builder) {
052    super(builder);
053    this.shieldInformationBarrier = builder.shieldInformationBarrier;
054    this.shieldInformationBarrierSegment = builder.shieldInformationBarrierSegment;
055    this.createdAt = builder.createdAt;
056    this.createdBy = builder.createdBy;
057    this.updatedAt = builder.updatedAt;
058    this.updatedBy = builder.updatedBy;
059    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
060  }
061
062  public ShieldInformationBarrierBase getShieldInformationBarrier() {
063    return shieldInformationBarrier;
064  }
065
066  public ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegmentField
067      getShieldInformationBarrierSegment() {
068    return shieldInformationBarrierSegment;
069  }
070
071  public OffsetDateTime getCreatedAt() {
072    return createdAt;
073  }
074
075  public UserBase getCreatedBy() {
076    return createdBy;
077  }
078
079  public OffsetDateTime getUpdatedAt() {
080    return updatedAt;
081  }
082
083  public UserBase getUpdatedBy() {
084    return updatedBy;
085  }
086
087  @Override
088  public boolean equals(Object o) {
089    if (this == o) {
090      return true;
091    }
092    if (o == null || getClass() != o.getClass()) {
093      return false;
094    }
095    ShieldInformationBarrierSegmentMember casted = (ShieldInformationBarrierSegmentMember) o;
096    return Objects.equals(id, casted.id)
097        && Objects.equals(type, casted.type)
098        && Objects.equals(user, casted.user)
099        && Objects.equals(shieldInformationBarrier, casted.shieldInformationBarrier)
100        && Objects.equals(shieldInformationBarrierSegment, casted.shieldInformationBarrierSegment)
101        && Objects.equals(createdAt, casted.createdAt)
102        && Objects.equals(createdBy, casted.createdBy)
103        && Objects.equals(updatedAt, casted.updatedAt)
104        && Objects.equals(updatedBy, casted.updatedBy);
105  }
106
107  @Override
108  public int hashCode() {
109    return Objects.hash(
110        id,
111        type,
112        user,
113        shieldInformationBarrier,
114        shieldInformationBarrierSegment,
115        createdAt,
116        createdBy,
117        updatedAt,
118        updatedBy);
119  }
120
121  @Override
122  public String toString() {
123    return "ShieldInformationBarrierSegmentMember{"
124        + "id='"
125        + id
126        + '\''
127        + ", "
128        + "type='"
129        + type
130        + '\''
131        + ", "
132        + "user='"
133        + user
134        + '\''
135        + ", "
136        + "shieldInformationBarrier='"
137        + shieldInformationBarrier
138        + '\''
139        + ", "
140        + "shieldInformationBarrierSegment='"
141        + shieldInformationBarrierSegment
142        + '\''
143        + ", "
144        + "createdAt='"
145        + createdAt
146        + '\''
147        + ", "
148        + "createdBy='"
149        + createdBy
150        + '\''
151        + ", "
152        + "updatedAt='"
153        + updatedAt
154        + '\''
155        + ", "
156        + "updatedBy='"
157        + updatedBy
158        + '\''
159        + "}";
160  }
161
162  public static class Builder extends ShieldInformationBarrierSegmentMemberMini.Builder {
163
164    protected ShieldInformationBarrierBase shieldInformationBarrier;
165
166    protected ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegmentField
167        shieldInformationBarrierSegment;
168
169    protected OffsetDateTime createdAt;
170
171    protected UserBase createdBy;
172
173    protected OffsetDateTime updatedAt;
174
175    protected UserBase updatedBy;
176
177    public Builder shieldInformationBarrier(ShieldInformationBarrierBase shieldInformationBarrier) {
178      this.shieldInformationBarrier = shieldInformationBarrier;
179      return this;
180    }
181
182    public Builder shieldInformationBarrierSegment(
183        ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegmentField
184            shieldInformationBarrierSegment) {
185      this.shieldInformationBarrierSegment = shieldInformationBarrierSegment;
186      return this;
187    }
188
189    public Builder createdAt(OffsetDateTime createdAt) {
190      this.createdAt = createdAt;
191      return this;
192    }
193
194    public Builder createdBy(UserBase createdBy) {
195      this.createdBy = createdBy;
196      return this;
197    }
198
199    public Builder updatedAt(OffsetDateTime updatedAt) {
200      this.updatedAt = updatedAt;
201      return this;
202    }
203
204    public Builder updatedBy(UserBase updatedBy) {
205      this.updatedBy = updatedBy;
206      return this;
207    }
208
209    @Override
210    public Builder id(String id) {
211      this.id = id;
212      return this;
213    }
214
215    @Override
216    public Builder type(ShieldInformationBarrierSegmentMemberBaseTypeField type) {
217      this.type = new EnumWrapper<ShieldInformationBarrierSegmentMemberBaseTypeField>(type);
218      return this;
219    }
220
221    @Override
222    public Builder type(EnumWrapper<ShieldInformationBarrierSegmentMemberBaseTypeField> type) {
223      this.type = type;
224      return this;
225    }
226
227    @Override
228    public Builder user(UserBase user) {
229      this.user = user;
230      return this;
231    }
232
233    public ShieldInformationBarrierSegmentMember build() {
234      return new ShieldInformationBarrierSegmentMember(this);
235    }
236  }
237}