|
40 | 40 | * @author Thomas Darimont
|
41 | 41 | * @author Oliver Gierke
|
42 | 42 | * @author Gustavo de Geus
|
| 43 | + * @author Christoph Strobl |
43 | 44 | * @since 1.3
|
44 | 45 | */
|
45 | 46 | public class GroupOperation implements FieldsExposingAggregationOperation {
|
@@ -312,23 +313,47 @@ public GroupOperationBuilder max(AggregationExpression expr) {
|
312 | 313 | * Generates an {@link GroupOperationBuilder} for an {@code $stdDevSamp}-expression that for the given
|
313 | 314 | * field-reference.
|
314 | 315 | *
|
315 |
| - * @param reference |
316 |
| - * @return |
| 316 | + * @param reference must not be {@literal null}. |
| 317 | + * @return never {@literal null}. |
| 318 | + * @since 1.10 |
317 | 319 | */
|
318 | 320 | public GroupOperationBuilder stdDevSamp(String reference) {
|
319 | 321 | return newBuilder(GroupOps.STD_DEV_SAMP, reference, null);
|
320 | 322 | }
|
321 | 323 |
|
| 324 | + /** |
| 325 | + * Generates an {@link GroupOperationBuilder} for an {@code $stdDevSamp}-expression that for the given {@link AggregationExpression}. |
| 326 | + * |
| 327 | + * @param expr must not be {@literal null}. |
| 328 | + * @return never {@literal null}. |
| 329 | + * @since 1.10 |
| 330 | + */ |
| 331 | + public GroupOperationBuilder stdDevSamp(AggregationExpression expr) { |
| 332 | + return newBuilder(GroupOps.STD_DEV_SAMP, null, expr); |
| 333 | + } |
| 334 | + |
322 | 335 | /**
|
323 | 336 | * Generates an {@link GroupOperationBuilder} for an {@code $stdDevPop}-expression that for the given field-reference.
|
324 | 337 | *
|
325 |
| - * @param reference |
326 |
| - * @return |
| 338 | + * @param reference must not be {@literal null}. |
| 339 | + * @return never {@literal null}. |
| 340 | + * @since 1.10 |
327 | 341 | */
|
328 | 342 | public GroupOperationBuilder stdDevPop(String reference) {
|
329 | 343 | return newBuilder(GroupOps.STD_DEV_POP, reference, null);
|
330 | 344 | }
|
331 | 345 |
|
| 346 | + /** |
| 347 | + * Generates an {@link GroupOperationBuilder} for an {@code $stdDevPop}-expression that for the given {@link AggregationExpression}. |
| 348 | + * |
| 349 | + * @param expr must not be {@literal null}. |
| 350 | + * @return never {@literal null}. |
| 351 | + * @since 1.10 |
| 352 | + */ |
| 353 | + public GroupOperationBuilder stdDevPop(AggregationExpression expr) { |
| 354 | + return newBuilder(GroupOps.STD_DEV_POP, null, expr); |
| 355 | + } |
| 356 | + |
332 | 357 | private GroupOperationBuilder newBuilder(Keyword keyword, String reference, Object value) {
|
333 | 358 | return new GroupOperationBuilder(this, new Operation(keyword, null, reference, value));
|
334 | 359 | }
|
@@ -393,21 +418,18 @@ interface Keyword {
|
393 | 418 |
|
394 | 419 | private static enum GroupOps implements Keyword {
|
395 | 420 |
|
396 |
| - SUM, LAST, FIRST, PUSH, AVG, MIN, MAX, ADD_TO_SET, COUNT, STD_DEV_SAMP, STD_DEV_POP; |
397 |
| - |
398 |
| - @Override |
399 |
| - public String toString() { |
| 421 | + SUM("$sum"), LAST("$last"), FIRST("$first"), PUSH("$push"), AVG("$avg"), MIN("$min"), MAX("$max"), ADD_TO_SET("$addToSet"), STD_DEV_POP("$stdDevPop"), STD_DEV_SAMP("$stdDevSamp"); |
400 | 422 |
|
401 |
| - String[] parts = name().split("_"); |
| 423 | + private String mongoOperator; |
402 | 424 |
|
403 |
| - StringBuilder builder = new StringBuilder(); |
| 425 | + GroupOps(String mongoOperator) { |
| 426 | + this.mongoOperator = mongoOperator; |
| 427 | + } |
404 | 428 |
|
405 |
| - for (String part : parts) { |
406 |
| - String lowerCase = part.toLowerCase(Locale.US); |
407 |
| - builder.append(builder.length() == 0 ? lowerCase : StringUtils.capitalize(lowerCase)); |
408 |
| - } |
409 | 429 |
|
410 |
| - return "$" + builder.toString(); |
| 430 | + @Override |
| 431 | + public String toString() { |
| 432 | + return mongoOperator; |
411 | 433 | }
|
412 | 434 | }
|
413 | 435 |
|
|
0 commit comments