Search in sources :

Example 1 with AggregationsRequest

use of io.arlas.server.core.model.request.AggregationsRequest in project ARLAS-server by gisaia.

the class AggregateRESTService method aggregatePost.

@Timed
@Path("{collection}/_aggregate")
@POST
@Produces(UTF8JSON)
@Consumes(UTF8JSON)
@ApiOperation(value = "Aggregate", produces = UTF8JSON, notes = Documentation.AGGREGATION_OPERATION, consumes = UTF8JSON, response = AggregationResponse.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "Successful operation", response = AggregationResponse.class, responseContainer = "ArlasAggregation"), @ApiResponse(code = 500, message = "Arlas Server Error.", response = Error.class), @ApiResponse(code = 400, message = "Bad request.", response = Error.class) })
public Response aggregatePost(// --------------------------------------------------------
@ApiParam(name = "collection", value = "collection", required = true) @PathParam(value = "collection") String collection, // --------------------------------------------------------
AggregationsRequest aggregationsRequest, @ApiParam(hidden = true) @HeaderParam(value = "partition-filter") String partitionFilter, @ApiParam(hidden = true) @HeaderParam(value = "Column-Filter") Optional<String> columnFilter, // --------------------------------------------------------
@ApiParam(name = "pretty", value = Documentation.FORM_PRETTY, defaultValue = "false") @QueryParam(value = "pretty") Boolean pretty, // --------------------------------------------------------
@ApiParam(value = "max-age-cache") @QueryParam(value = "max-age-cache") Integer maxagecache) throws NotFoundException, ArlasException {
    long startArlasTime = System.nanoTime();
    CollectionReference collectionReference = exploreService.getCollectionReferenceService().getCollectionReference(collection);
    if (collectionReference == null) {
        throw new NotFoundException(collection);
    }
    AggregationsRequest aggregationsRequestHeader = new AggregationsRequest();
    aggregationsRequestHeader.filter = ParamsParser.getFilter(partitionFilter);
    MixedRequest request = new MixedRequest();
    exploreService.setValidGeoFilters(collectionReference, aggregationsRequest);
    exploreService.setValidGeoFilters(collectionReference, aggregationsRequestHeader);
    ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, aggregationsRequest);
    request.basicRequest = aggregationsRequest;
    request.headerRequest = aggregationsRequestHeader;
    request.columnFilter = ColumnFilterUtil.getCollectionRelatedColumnFilter(columnFilter, collectionReference);
    AggregationResponse aggregationResponse = getArlasAggregation(request, collectionReference, (aggregationsRequest.form != null && Boolean.TRUE.equals(aggregationsRequest.form.flat)));
    aggregationResponse.totalTime = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startArlasTime);
    return cache(Response.ok(aggregationResponse), maxagecache);
}
Also used : AggregationsRequest(io.arlas.server.core.model.request.AggregationsRequest) MixedRequest(io.arlas.server.core.model.request.MixedRequest) AggregationResponse(io.arlas.server.core.model.response.AggregationResponse) CollectionReference(io.arlas.server.core.model.CollectionReference) Timed(com.codahale.metrics.annotation.Timed) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 2 with AggregationsRequest

use of io.arlas.server.core.model.request.AggregationsRequest in project ARLAS-server by gisaia.

the class AggregateRESTService method aggregate.

@Timed
@Path("{collection}/_aggregate")
@GET
@Produces(UTF8JSON)
@Consumes(UTF8JSON)
@ApiOperation(value = "Aggregate", produces = UTF8JSON, notes = Documentation.AGGREGATION_OPERATION, consumes = UTF8JSON, response = AggregationResponse.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "Successful operation", response = AggregationResponse.class, responseContainer = "ArlasAggregation"), @ApiResponse(code = 500, message = "Arlas Server Error.", response = Error.class), @ApiResponse(code = 400, message = "Bad request.", response = Error.class) })
public Response aggregate(// --------------------------------------------------------
@ApiParam(name = "collection", value = "collection", required = true) @PathParam(value = "collection") String collection, // --------------------------------------------------------
@ApiParam(name = "agg", value = Documentation.AGGREGATION_PARAM_AGG, required = true) @QueryParam(value = "agg") List<String> agg, // --------------------------------------------------------
@ApiParam(name = "f", value = Documentation.FILTER_PARAM_F, allowMultiple = true) @QueryParam(value = "f") List<String> f, @ApiParam(name = "q", value = Documentation.FILTER_PARAM_Q, allowMultiple = true) @QueryParam(value = "q") List<String> q, @ApiParam(name = "dateformat", value = Documentation.FILTER_DATE_FORMAT) @QueryParam(value = "dateformat") String dateformat, @ApiParam(hidden = true) @HeaderParam(value = "partition-filter") String partitionFilter, @ApiParam(hidden = true) @HeaderParam(value = "Column-Filter") Optional<String> columnFilter, // --------------------------------------------------------
@ApiParam(name = "pretty", value = Documentation.FORM_PRETTY, defaultValue = "false") @QueryParam(value = "pretty") Boolean pretty, @ApiParam(name = "flat", value = Documentation.FORM_FLAT, defaultValue = "false") @QueryParam(value = "flat") Boolean flat, // --------------------------------------------------------
@ApiParam(value = "max-age-cache") @QueryParam(value = "max-age-cache") Integer maxagecache) throws ArlasException {
    long startArlasTime = System.nanoTime();
    CollectionReference collectionReference = exploreService.getCollectionReferenceService().getCollectionReference(collection);
    if (collectionReference == null) {
        throw new NotFoundException(collection);
    }
    AggregationsRequest aggregationsRequest = new AggregationsRequest();
    aggregationsRequest.filter = ParamsParser.getFilter(collectionReference, f, q, dateformat);
    aggregationsRequest.aggregations = ParamsParser.getAggregations(collectionReference, agg);
    exploreService.setValidGeoFilters(collectionReference, aggregationsRequest);
    ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, aggregationsRequest);
    AggregationsRequest aggregationsRequestHeader = new AggregationsRequest();
    aggregationsRequestHeader.filter = ParamsParser.getFilter(partitionFilter);
    MixedRequest request = new MixedRequest();
    request.basicRequest = aggregationsRequest;
    exploreService.setValidGeoFilters(collectionReference, aggregationsRequestHeader);
    request.headerRequest = aggregationsRequestHeader;
    request.columnFilter = ColumnFilterUtil.getCollectionRelatedColumnFilter(columnFilter, collectionReference);
    AggregationResponse aggregationResponse = getArlasAggregation(request, collectionReference, Boolean.TRUE.equals(flat));
    aggregationResponse.totalTime = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startArlasTime);
    return cache(Response.ok(aggregationResponse), maxagecache);
}
Also used : AggregationsRequest(io.arlas.server.core.model.request.AggregationsRequest) MixedRequest(io.arlas.server.core.model.request.MixedRequest) AggregationResponse(io.arlas.server.core.model.response.AggregationResponse) CollectionReference(io.arlas.server.core.model.CollectionReference) Timed(com.codahale.metrics.annotation.Timed) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Aggregations

Timed (com.codahale.metrics.annotation.Timed)2 CollectionReference (io.arlas.server.core.model.CollectionReference)2 AggregationsRequest (io.arlas.server.core.model.request.AggregationsRequest)2 MixedRequest (io.arlas.server.core.model.request.MixedRequest)2 AggregationResponse (io.arlas.server.core.model.response.AggregationResponse)2 ApiOperation (io.swagger.annotations.ApiOperation)2 ApiResponses (io.swagger.annotations.ApiResponses)2