001package com.box.sdkgen.schemas.v2026r0.queryinsightsgroupbyv2026r0;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.fasterxml.jackson.annotation.JsonFilter;
006import com.fasterxml.jackson.annotation.JsonProperty;
007import java.util.Objects;
008
009/**
010 * Defines a single grouping criterion for an insights request. Currently only a single grouping
011 * field is supported.
012 */
013@JsonFilter("nullablePropertyFilter")
014public class QueryInsightsGroupByV2026R0 extends SerializableObject {
015
016  /** The fully qualified field name to group by. Supports metadata and item properties. */
017  protected final String field;
018
019  /** The maximum number of buckets to return for the grouping. Defaults to `5`. */
020  @JsonProperty("bucket_limit")
021  protected Integer bucketLimit;
022
023  public QueryInsightsGroupByV2026R0(@JsonProperty("field") String field) {
024    super();
025    this.field = field;
026  }
027
028  protected QueryInsightsGroupByV2026R0(Builder builder) {
029    super();
030    this.field = builder.field;
031    this.bucketLimit = builder.bucketLimit;
032    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
033  }
034
035  public String getField() {
036    return field;
037  }
038
039  public Integer getBucketLimit() {
040    return bucketLimit;
041  }
042
043  @Override
044  public boolean equals(Object o) {
045    if (this == o) {
046      return true;
047    }
048    if (o == null || getClass() != o.getClass()) {
049      return false;
050    }
051    QueryInsightsGroupByV2026R0 casted = (QueryInsightsGroupByV2026R0) o;
052    return Objects.equals(field, casted.field) && Objects.equals(bucketLimit, casted.bucketLimit);
053  }
054
055  @Override
056  public int hashCode() {
057    return Objects.hash(field, bucketLimit);
058  }
059
060  @Override
061  public String toString() {
062    return "QueryInsightsGroupByV2026R0{"
063        + "field='"
064        + field
065        + '\''
066        + ", "
067        + "bucketLimit='"
068        + bucketLimit
069        + '\''
070        + "}";
071  }
072
073  public static class Builder extends NullableFieldTracker {
074
075    protected final String field;
076
077    protected Integer bucketLimit;
078
079    public Builder(String field) {
080      super();
081      this.field = field;
082    }
083
084    public Builder bucketLimit(Integer bucketLimit) {
085      this.bucketLimit = bucketLimit;
086      return this;
087    }
088
089    public QueryInsightsGroupByV2026R0 build() {
090      return new QueryInsightsGroupByV2026R0(this);
091    }
092  }
093}