/** * Extract a Projection. * * @return A Projection based on selectFields and aliases. */ public Projection extractProjection() { Projection projection = new Projection(); Map<String, String> fields = createFields(); projection.setFields(fields); return projection; }
private void addTransientFieldsFor(PostStrategy postStrategy) { Projection projection = runningQuery.getQuery().getProjection(); Aggregation aggregation = runningQuery.getQuery().getAggregation(); if (aggregation.getType() == Aggregation.Type.RAW && projection != null) { Map<String, String> projectionFields = projection.getFields(); if (projectionFields != null) { postStrategy.getRequiredFields().stream().filter(field -> !projectionFields.containsValue(field)) .forEach(field -> transientFields.put(field, field)); } } } }
projection.initialize().ifPresent(errors::addAll);
@Override @SuppressWarnings("unchecked") public void configure(BulletConfig config) { if (filters != null) { filters = rewriteClauses(filters); filters.forEach(f -> f.configure(config)); } if (projection != null) { projection.configure(config); } // Must have an aggregation if (aggregation == null) { aggregation = new Aggregation(); } aggregation.configure(config); boolean disableWindowing = config.getAs(BulletConfig.WINDOW_DISABLE, Boolean.class); if (disableWindowing) { window = null; } else if (window != null) { window.configure(config); } long durationDefault = config.getAs(BulletConfig.QUERY_DEFAULT_DURATION, Long.class); long durationMax = config.getAs(BulletConfig.QUERY_MAX_DURATION, Long.class); // Null or negative, then default, else min of duration and max. duration = (duration == null || duration <= 0) ? durationDefault : Math.min(duration, durationMax); if (postAggregations != null) { postAggregations.forEach(p -> p.configure(config)); } }
Map<String, String> projectionFields = projection.getFields(); if (projectionFields != null) { fields.putAll(projectionFields);