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