@@ -27,6 +27,66 @@ public static CountAggregateField count() {
27
27
return new CountAggregateField ();
28
28
}
29
29
30
+ @ NonNull
31
+ public static MinAggregateField min (@ NonNull String field ) {
32
+ return min (FieldPath .fromDotSeparatedPath (field ));
33
+ }
34
+
35
+ @ NonNull
36
+ public static MinAggregateField min (@ NonNull FieldPath field ) {
37
+ return new MinAggregateField (field );
38
+ }
39
+
40
+ @ NonNull
41
+ public static MaxAggregateField max (@ NonNull String field ) {
42
+ return max (FieldPath .fromDotSeparatedPath (field ));
43
+ }
44
+
45
+ @ NonNull
46
+ public static MaxAggregateField max (@ NonNull FieldPath field ) {
47
+ return new MaxAggregateField (field );
48
+ }
49
+
50
+ @ NonNull
51
+ public static AverageAggregateField average (@ NonNull String field ) {
52
+ return average (FieldPath .fromDotSeparatedPath (field ));
53
+ }
54
+
55
+ @ NonNull
56
+ public static AverageAggregateField average (@ NonNull FieldPath field ) {
57
+ return new AverageAggregateField (field );
58
+ }
59
+
60
+ @ NonNull
61
+ public static SumAggregateField sum (@ NonNull String field ) {
62
+ return sum (FieldPath .fromDotSeparatedPath (field ));
63
+ }
64
+
65
+ @ NonNull
66
+ public static SumAggregateField sum (@ NonNull FieldPath field ) {
67
+ return new SumAggregateField (field );
68
+ }
69
+
70
+ @ NonNull
71
+ public static FirstAggregateField first (@ NonNull String field ) {
72
+ return first (FieldPath .fromDotSeparatedPath (field ));
73
+ }
74
+
75
+ @ NonNull
76
+ public static FirstAggregateField first (@ NonNull FieldPath field ) {
77
+ return new FirstAggregateField (field );
78
+ }
79
+
80
+ @ NonNull
81
+ public static LastAggregateField last (@ NonNull String field ) {
82
+ return last (FieldPath .fromDotSeparatedPath (field ));
83
+ }
84
+
85
+ @ NonNull
86
+ public static LastAggregateField last (@ NonNull FieldPath field ) {
87
+ return new LastAggregateField (field );
88
+ }
89
+
30
90
@ Override
31
91
public abstract boolean equals (Object obj );
32
92
@@ -76,4 +136,166 @@ public String toString() {
76
136
}
77
137
}
78
138
}
139
+
140
+ public static final class MinAggregateField extends AggregateField {
141
+
142
+ @ NonNull private FieldPath field ;
143
+
144
+ MinAggregateField (@ NonNull FieldPath field ) {
145
+ this .field = field ;
146
+ }
147
+
148
+ @ Override
149
+ public boolean equals (Object obj ) {
150
+ if (obj == null || obj .getClass () != this .getClass ()) {
151
+ return false ;
152
+ }
153
+ return field .equals (((MinAggregateField ) obj ).field );
154
+ }
155
+
156
+ @ Override
157
+ public int hashCode () {
158
+ return toString ().hashCode ();
159
+ }
160
+
161
+ @ Override
162
+ public String toString () {
163
+ return "MIN(" + field .toString () + ")" ;
164
+ }
165
+ }
166
+
167
+ public static final class MaxAggregateField extends AggregateField {
168
+
169
+ @ NonNull private FieldPath field ;
170
+
171
+ MaxAggregateField (@ NonNull FieldPath field ) {
172
+ this .field = field ;
173
+ }
174
+
175
+ @ Override
176
+ public boolean equals (Object obj ) {
177
+ if (obj == null || obj .getClass () != this .getClass ()) {
178
+ return false ;
179
+ }
180
+ return field .equals (((MaxAggregateField ) obj ).field );
181
+ }
182
+
183
+ @ Override
184
+ public int hashCode () {
185
+ return toString ().hashCode ();
186
+ }
187
+
188
+ @ Override
189
+ public String toString () {
190
+ return "MAX(" + field .toString () + ")" ;
191
+ }
192
+ }
193
+
194
+ public static final class AverageAggregateField extends AggregateField {
195
+
196
+ @ NonNull private FieldPath field ;
197
+
198
+ AverageAggregateField (@ NonNull FieldPath field ) {
199
+ this .field = field ;
200
+ }
201
+
202
+ @ Override
203
+ public boolean equals (Object obj ) {
204
+ if (obj == null || obj .getClass () != this .getClass ()) {
205
+ return false ;
206
+ }
207
+ return field .equals (((AverageAggregateField ) obj ).field );
208
+ }
209
+
210
+ @ Override
211
+ public int hashCode () {
212
+ return toString ().hashCode ();
213
+ }
214
+
215
+ @ Override
216
+ public String toString () {
217
+ return "AVERAGE(" + field .toString () + ")" ;
218
+ }
219
+ }
220
+
221
+ public static final class SumAggregateField extends AggregateField {
222
+
223
+ @ NonNull private FieldPath field ;
224
+
225
+ SumAggregateField (@ NonNull FieldPath field ) {
226
+ this .field = field ;
227
+ }
228
+
229
+ @ Override
230
+ public boolean equals (Object obj ) {
231
+ if (obj == null || obj .getClass () != this .getClass ()) {
232
+ return false ;
233
+ }
234
+ return field .equals (((SumAggregateField ) obj ).field );
235
+ }
236
+
237
+ @ Override
238
+ public int hashCode () {
239
+ return toString ().hashCode ();
240
+ }
241
+
242
+ @ Override
243
+ public String toString () {
244
+ return "SUM(" + field .toString () + ")" ;
245
+ }
246
+ }
247
+
248
+ public static final class FirstAggregateField extends AggregateField {
249
+
250
+ @ NonNull private FieldPath field ;
251
+
252
+ FirstAggregateField (@ NonNull FieldPath field ) {
253
+ this .field = field ;
254
+ }
255
+
256
+ @ Override
257
+ public boolean equals (Object obj ) {
258
+ if (obj == null || obj .getClass () != this .getClass ()) {
259
+ return false ;
260
+ }
261
+ return field .equals (((FirstAggregateField ) obj ).field );
262
+ }
263
+
264
+ @ Override
265
+ public int hashCode () {
266
+ return toString ().hashCode ();
267
+ }
268
+
269
+ @ Override
270
+ public String toString () {
271
+ return "FIRST(" + field .toString () + ")" ;
272
+ }
273
+ }
274
+
275
+ public static final class LastAggregateField extends AggregateField {
276
+
277
+ @ NonNull private FieldPath field ;
278
+
279
+ LastAggregateField (@ NonNull FieldPath field ) {
280
+ this .field = field ;
281
+ }
282
+
283
+ @ Override
284
+ public boolean equals (Object obj ) {
285
+ if (obj == null || obj .getClass () != this .getClass ()) {
286
+ return false ;
287
+ }
288
+ return field .equals (((LastAggregateField ) obj ).field );
289
+ }
290
+
291
+ @ Override
292
+ public int hashCode () {
293
+ return toString ().hashCode ();
294
+ }
295
+
296
+ @ Override
297
+ public String toString () {
298
+ return "LAST(" + field .toString () + ")" ;
299
+ }
300
+ }
79
301
}
0 commit comments