/** * Extends the default implementation to add results of aggregates * * @since 7.4 */ @Override protected void incorporateAggregates(Map<String, Serializable> eventProps) { super.incorporateAggregates(eventProps); if (currentAggregates != null) { HashMap<String, Serializable> aggregateMatches = new HashMap<>(); for (String key : currentAggregates.keySet()) { Aggregate<? extends Bucket> ag = currentAggregates.get(key); ArrayList<HashMap<String, Serializable>> buckets = new ArrayList<>(); for (Bucket bucket : ag.getBuckets()) { HashMap<String, Serializable> b = new HashMap<>(); b.put("key", bucket.getKey()); b.put("count", bucket.getDocCount()); buckets.add(b); } aggregateMatches.put(key, buckets); } eventProps.put("aggregatesMatches", aggregateMatches); } }
public Map<String, Bucket> getBucketMap() { if (bucketMap == null && getBuckets() != null) { bucketMap = new HashMap<String, Bucket>(); for (Bucket b : getBuckets()) { bucketMap.put(b.getKey(), b); } } return bucketMap; }
protected static String getClauseFromBucket(Bucket bucket, String field) { String clause; // Replace potential '.' path separator with '/' character field = field.replaceAll("\\.", "/"); if (bucket instanceof BucketTerm) { clause = field + "='" + bucket.getKey() + "'"; } else if (bucket instanceof BucketRange) { BucketRange bucketRange = (BucketRange) bucket; clause = getRangeClause(field, bucketRange); } else if (bucket instanceof BucketRangeDate) { BucketRangeDate bucketRangeDate = (BucketRangeDate) bucket; clause = getRangeDateClause(field, bucketRangeDate); } else { throw new NuxeoException("Unknown bucket instance for NXQL translation : " + bucket.getClass()); } return clause; }
jg.writeStartObject(); jg.writeObjectField("key", bucket.getKey()); prop.setValue(bucket.getKey()); jg.writeNumberField("docCount", bucket.getDocCount()); jg.writeEndObject();
.filter(bucket -> keys.contains(bucket.getKey())) .map(bucket -> getClauseFromBucket(bucket, aggregate.getField())) .collect(Collectors.joining(" OR "));