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}