001package com.box.sdkgen.schemas.items;
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 ItemsOrderField extends SerializableObject {
013
014  /** The field to order by. */
015  protected String by;
016
017  /** The direction to order by, either ascending or descending. */
018  @JsonDeserialize(using = ItemsOrderDirectionField.ItemsOrderDirectionFieldDeserializer.class)
019  @JsonSerialize(using = ItemsOrderDirectionField.ItemsOrderDirectionFieldSerializer.class)
020  protected EnumWrapper<ItemsOrderDirectionField> direction;
021
022  public ItemsOrderField() {
023    super();
024  }
025
026  protected ItemsOrderField(Builder builder) {
027    super();
028    this.by = builder.by;
029    this.direction = builder.direction;
030    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
031  }
032
033  public String getBy() {
034    return by;
035  }
036
037  public EnumWrapper<ItemsOrderDirectionField> getDirection() {
038    return direction;
039  }
040
041  @Override
042  public boolean equals(Object o) {
043    if (this == o) {
044      return true;
045    }
046    if (o == null || getClass() != o.getClass()) {
047      return false;
048    }
049    ItemsOrderField casted = (ItemsOrderField) o;
050    return Objects.equals(by, casted.by) && Objects.equals(direction, casted.direction);
051  }
052
053  @Override
054  public int hashCode() {
055    return Objects.hash(by, direction);
056  }
057
058  @Override
059  public String toString() {
060    return "ItemsOrderField{" + "by='" + by + '\'' + ", " + "direction='" + direction + '\'' + "}";
061  }
062
063  public static class Builder extends NullableFieldTracker {
064
065    protected String by;
066
067    protected EnumWrapper<ItemsOrderDirectionField> direction;
068
069    public Builder by(String by) {
070      this.by = by;
071      return this;
072    }
073
074    public Builder direction(ItemsOrderDirectionField direction) {
075      this.direction = new EnumWrapper<ItemsOrderDirectionField>(direction);
076      return this;
077    }
078
079    public Builder direction(EnumWrapper<ItemsOrderDirectionField> direction) {
080      this.direction = direction;
081      return this;
082    }
083
084    public ItemsOrderField build() {
085      return new ItemsOrderField(this);
086    }
087  }
088}