001package com.box.sdkgen.schemas.groupmemberships;
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 GroupMembershipsOrderField 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(
019      using =
020          GroupMembershipsOrderDirectionField.GroupMembershipsOrderDirectionFieldDeserializer.class)
021  @JsonSerialize(
022      using =
023          GroupMembershipsOrderDirectionField.GroupMembershipsOrderDirectionFieldSerializer.class)
024  protected EnumWrapper<GroupMembershipsOrderDirectionField> direction;
025
026  public GroupMembershipsOrderField() {
027    super();
028  }
029
030  protected GroupMembershipsOrderField(Builder builder) {
031    super();
032    this.by = builder.by;
033    this.direction = builder.direction;
034    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
035  }
036
037  public String getBy() {
038    return by;
039  }
040
041  public EnumWrapper<GroupMembershipsOrderDirectionField> getDirection() {
042    return direction;
043  }
044
045  @Override
046  public boolean equals(Object o) {
047    if (this == o) {
048      return true;
049    }
050    if (o == null || getClass() != o.getClass()) {
051      return false;
052    }
053    GroupMembershipsOrderField casted = (GroupMembershipsOrderField) o;
054    return Objects.equals(by, casted.by) && Objects.equals(direction, casted.direction);
055  }
056
057  @Override
058  public int hashCode() {
059    return Objects.hash(by, direction);
060  }
061
062  @Override
063  public String toString() {
064    return "GroupMembershipsOrderField{"
065        + "by='"
066        + by
067        + '\''
068        + ", "
069        + "direction='"
070        + direction
071        + '\''
072        + "}";
073  }
074
075  public static class Builder extends NullableFieldTracker {
076
077    protected String by;
078
079    protected EnumWrapper<GroupMembershipsOrderDirectionField> direction;
080
081    public Builder by(String by) {
082      this.by = by;
083      return this;
084    }
085
086    public Builder direction(GroupMembershipsOrderDirectionField direction) {
087      this.direction = new EnumWrapper<GroupMembershipsOrderDirectionField>(direction);
088      return this;
089    }
090
091    public Builder direction(EnumWrapper<GroupMembershipsOrderDirectionField> direction) {
092      this.direction = direction;
093      return this;
094    }
095
096    public GroupMembershipsOrderField build() {
097      return new GroupMembershipsOrderField(this);
098    }
099  }
100}