001package com.box.sdkgen.schemas.integrationmappingslackcreaterequest;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.schemas.integrationmappingboxitemslack.IntegrationMappingBoxItemSlack;
006import com.box.sdkgen.schemas.integrationmappingpartneritemslack.IntegrationMappingPartnerItemSlack;
007import com.box.sdkgen.schemas.integrationmappingslackoptions.IntegrationMappingSlackOptions;
008import com.fasterxml.jackson.annotation.JsonFilter;
009import com.fasterxml.jackson.annotation.JsonProperty;
010import java.util.Objects;
011
012/** A request to create a Slack Integration Mapping object. */
013@JsonFilter("nullablePropertyFilter")
014public class IntegrationMappingSlackCreateRequest extends SerializableObject {
015
016  @JsonProperty("partner_item")
017  protected final IntegrationMappingPartnerItemSlack partnerItem;
018
019  @JsonProperty("box_item")
020  protected final IntegrationMappingBoxItemSlack boxItem;
021
022  protected IntegrationMappingSlackOptions options;
023
024  public IntegrationMappingSlackCreateRequest(
025      @JsonProperty("partner_item") IntegrationMappingPartnerItemSlack partnerItem,
026      @JsonProperty("box_item") IntegrationMappingBoxItemSlack boxItem) {
027    super();
028    this.partnerItem = partnerItem;
029    this.boxItem = boxItem;
030  }
031
032  protected IntegrationMappingSlackCreateRequest(Builder builder) {
033    super();
034    this.partnerItem = builder.partnerItem;
035    this.boxItem = builder.boxItem;
036    this.options = builder.options;
037    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
038  }
039
040  public IntegrationMappingPartnerItemSlack getPartnerItem() {
041    return partnerItem;
042  }
043
044  public IntegrationMappingBoxItemSlack getBoxItem() {
045    return boxItem;
046  }
047
048  public IntegrationMappingSlackOptions getOptions() {
049    return options;
050  }
051
052  @Override
053  public boolean equals(Object o) {
054    if (this == o) {
055      return true;
056    }
057    if (o == null || getClass() != o.getClass()) {
058      return false;
059    }
060    IntegrationMappingSlackCreateRequest casted = (IntegrationMappingSlackCreateRequest) o;
061    return Objects.equals(partnerItem, casted.partnerItem)
062        && Objects.equals(boxItem, casted.boxItem)
063        && Objects.equals(options, casted.options);
064  }
065
066  @Override
067  public int hashCode() {
068    return Objects.hash(partnerItem, boxItem, options);
069  }
070
071  @Override
072  public String toString() {
073    return "IntegrationMappingSlackCreateRequest{"
074        + "partnerItem='"
075        + partnerItem
076        + '\''
077        + ", "
078        + "boxItem='"
079        + boxItem
080        + '\''
081        + ", "
082        + "options='"
083        + options
084        + '\''
085        + "}";
086  }
087
088  public static class Builder extends NullableFieldTracker {
089
090    protected final IntegrationMappingPartnerItemSlack partnerItem;
091
092    protected final IntegrationMappingBoxItemSlack boxItem;
093
094    protected IntegrationMappingSlackOptions options;
095
096    public Builder(
097        IntegrationMappingPartnerItemSlack partnerItem, IntegrationMappingBoxItemSlack boxItem) {
098      super();
099      this.partnerItem = partnerItem;
100      this.boxItem = boxItem;
101    }
102
103    public Builder options(IntegrationMappingSlackOptions options) {
104      this.options = options;
105      return this;
106    }
107
108    public IntegrationMappingSlackCreateRequest build() {
109      return new IntegrationMappingSlackCreateRequest(this);
110    }
111  }
112}