/** * Builds a mapped result set by running through ResultSetMappers. * * @param resultSet The result set being processed * * @return a mapped resultSet */ protected ResultSet mapResultSet(ResultSet resultSet) { ResultSet mappedResultSet = resultSet; for (ResultSetMapper resultSetMapper : getMappers()) { mappedResultSet = resultSetMapper.map(mappedResultSet); } return mappedResultSet; }
@Override public boolean handleRequest( RequestContext context, DataApiRequest request, DruidAggregationQuery<?> druidQuery, ResponseProcessor response ) { if (request.getTopN().isPresent() && !(druidQuery instanceof TopNQuery)) { TopNResultSetMapper mapper = new TopNResultSetMapper(request.getTopN().getAsInt()); // Add topN mapper after partial data mapper and before any other mapper try { // Index is 1 because we assume that partial data result set mapper has been injected already // by the PartialDataRequestHandler ((MappingResponseProcessor) response).getMappers().add(1, mapper); } catch (ClassCastException cce) { throw new IllegalStateException("TopN request handler requires a mapping response processor.", cce); } } return next.handleRequest(context, request, druidQuery, response); } }
@Override public boolean handleRequest( RequestContext context, DataApiRequest request, DruidAggregationQuery<?> druidQuery, ResponseProcessor response ) { MappingResponseProcessor mappingResponse = (MappingResponseProcessor) response; if (request.getDateTimeSort().isPresent()) { mappingResponse.getMappers().add(new DateTimeSortMapper(request.getDateTimeSort().get().getDirection())); } return next.handleRequest(context, request, druidQuery, mappingResponse); } }
@Override public boolean handleRequest( RequestContext context, DataApiRequest request, DruidAggregationQuery<?> druidQuery, ResponseProcessor response ) { if (!(response instanceof MappingResponseProcessor)) { throw new IllegalStateException("Pagination request handler requires a mapping response."); } MappingResponseProcessor mappingResponse = (MappingResponseProcessor) response; if (request.getPaginationParameters().isPresent()) { PaginationParameters paginationParameters = request.getPaginationParameters().get(); mappingResponse.getMappers().add( new PaginationMapper( paginationParameters, mappingResponse, context.getUriBuilder() ) ); } return next.handleRequest(context, request, druidQuery, mappingResponse); } }
() -> VolatileDataRequestHandler.getVolatileIntervalsWithDefault(responseContext) ); mappingResponse.getMappers().add(0, mapper);