001package com.box.sdkgen.schemas.groups;
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 GroupsOrderField 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 = GroupsOrderDirectionField.GroupsOrderDirectionFieldDeserializer.class)
019  @JsonSerialize(using = GroupsOrderDirectionField.GroupsOrderDirectionFieldSerializer.class)
020  protected EnumWrapper<GroupsOrderDirectionField> direction;
021
022  public GroupsOrderField() {
023    super();
024  }
025
026  protected GroupsOrderField(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<GroupsOrderDirectionField> 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    GroupsOrderField casted = (GroupsOrderField) 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 "GroupsOrderField{" + "by='" + by + '\'' + ", " + "direction='" + direction + '\'' + "}";
061  }
062
063  public static class Builder extends NullableFieldTracker {
064
065    protected String by;
066
067    protected EnumWrapper<GroupsOrderDirectionField> direction;
068
069    public Builder by(String by) {
070      this.by = by;
071      return this;
072    }
073
074    public Builder direction(GroupsOrderDirectionField direction) {
075      this.direction = new EnumWrapper<GroupsOrderDirectionField>(direction);
076      return this;
077    }
078
079    public Builder direction(EnumWrapper<GroupsOrderDirectionField> direction) {
080      this.direction = direction;
081      return this;
082    }
083
084    public GroupsOrderField build() {
085      return new GroupsOrderField(this);
086    }
087  }
088}