Search in sources :

Example 16 with Filter

use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.

the class GetSitesHandler method fetchLinkedActivityMetadata.

private void fetchLinkedActivityMetadata(List<Integer> linkedActivitiesToFetch) {
    TraceContext linkedActivityMetadataTrace = Trace.startSpan("ai/cmd/GetSites/fetchLinkedActivityMetadata");
    try {
        metadataTime.start();
        LOGGER.info("Fetching Linked Activity Metadata for: " + Arrays.toString(linkedActivitiesToFetch.toArray()));
        Filter linkedFilter = new Filter();
        linkedFilter.addRestriction(DimensionType.Activity, linkedActivitiesToFetch);
        linkedActivities = loadMetadata(linkedFilter);
    } catch (SQLException excp) {
        throw new CommandException("Could not fetch linked activity metadata from server");
    } finally {
        metadataTime.stop();
        Trace.endSpan(linkedActivityMetadataTrace);
    }
}
Also used : Filter(org.activityinfo.legacy.shared.command.Filter) QueryFilter(org.activityinfo.server.command.QueryFilter) SQLException(java.sql.SQLException) TraceContext(com.google.cloud.trace.core.TraceContext) CommandException(org.activityinfo.legacy.shared.exception.CommandException)

Example 17 with Filter

use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.

the class RenderReportHtmlHandler method execute.

@Override
public CommandResult execute(RenderReportHtml cmd, User user) throws CommandException {
    ReportElement model = cmd.getModel();
    LOGGER.fine("Model: " + model);
    // don't show the title: it will be rendered by the container
    model.setTitle(null);
    generator.generateElement(user, model, new Filter(), new DateRange());
    StringWriter writer = new StringWriter();
    try {
        renderer.render(model, writer);
    } catch (IOException e) {
        throw new CommandException(e);
    }
    return new HtmlResult(writer.toString());
}
Also used : DateRange(org.activityinfo.legacy.shared.reports.model.DateRange) StringWriter(java.io.StringWriter) Filter(org.activityinfo.legacy.shared.command.Filter) HtmlResult(org.activityinfo.legacy.shared.command.result.HtmlResult) ReportElement(org.activityinfo.legacy.shared.reports.model.ReportElement) IOException(java.io.IOException) CommandException(org.activityinfo.legacy.shared.exception.CommandException)

Example 18 with Filter

use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.

the class KmlDataServlet method querySites.

private List<SiteDTO> querySites(int activityId) {
    Filter filter = new Filter();
    filter.addRestriction(DimensionType.Activity, activityId);
    return dispatcher.execute(new GetSites(filter)).getData();
}
Also used : Filter(org.activityinfo.legacy.shared.command.Filter) GetSites(org.activityinfo.legacy.shared.command.GetSites)

Example 19 with Filter

use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.

the class CubeResource method pivot.

@GET
@Timed(name = "api.rest.sites.pivot")
@Produces("application/json")
public List<Bucket> pivot(@QueryParam("dimension") List<String> dimensions, @QueryParam("form") List<Integer> forms, @QueryParam("month") String monthName) {
    Filter filter = new Filter();
    if (forms.size() == 0) {
        throw new WebApplicationException(Response.status(Response.Status.BAD_REQUEST).entity("Must specify at least one ?form={formId}").build());
    }
    filter.addRestriction(DimensionType.Activity, forms);
    if (monthName != null) {
        Month month = Month.parseMonth(monthName);
        filter.setEndDateRange(new DateUtilCalendarImpl().monthRange(month));
    }
    Set<Dimension> pivotDimensions = Sets.newHashSet();
    if (forms.size() == 0) {
        throw new WebApplicationException(Response.status(Response.Status.BAD_REQUEST).entity("Must specify at least one ?dimension={indicator|form|database|...}").build());
    }
    for (String dimension : dimensions) {
        switch(dimension) {
            case "indicator":
                pivotDimensions.add(new Dimension(DimensionType.Indicator));
                break;
            case "site":
                pivotDimensions.add(new Dimension(DimensionType.Site));
                break;
            case "month":
                pivotDimensions.add(new DateDimension(DateUnit.MONTH));
                break;
            case "partner":
                pivotDimensions.add(new Dimension(DimensionType.Partner));
                break;
            default:
                throw new WebApplicationException(Response.status(Response.Status.BAD_REQUEST).entity("Invalid dimension '" + dimension + "'").build());
        }
    }
    PivotSites query = new PivotSites();
    query.setFilter(filter);
    query.setDimensions(pivotDimensions);
    if (query.isTooBroad()) {
        return Lists.newArrayList();
    }
    PivotSites.PivotResult result = dispatcherSync.execute(query);
    return result.getBuckets();
}
Also used : Month(org.activityinfo.model.type.time.Month) PivotSites(org.activityinfo.legacy.shared.command.PivotSites) WebApplicationException(javax.ws.rs.WebApplicationException) Filter(org.activityinfo.legacy.shared.command.Filter) DateUtilCalendarImpl(org.activityinfo.server.report.util.DateUtilCalendarImpl) Dimension(org.activityinfo.legacy.shared.reports.model.Dimension) DateDimension(org.activityinfo.legacy.shared.reports.model.DateDimension) DateDimension(org.activityinfo.legacy.shared.reports.model.DateDimension) Produces(javax.ws.rs.Produces) Timed(org.activityinfo.server.util.monitoring.Timed) GET(javax.ws.rs.GET)

Example 20 with Filter

use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.

the class MapGenerator method generate.

@Override
public void generate(User user, MapReportElement element, Filter inheritedFilter, DateRange dateRange) {
    Filter filter = GeneratorUtils.resolveElementFilter(element, dateRange);
    Filter effectiveFilter = inheritedFilter == null ? filter : new Filter(inheritedFilter, filter);
    MapContent content = new MapContent();
    content.setFilterDescriptions(generateFilterDescriptions(filter, Collections.<DimensionType>emptySet(), user));
    Map<Integer, Indicator> indicators = queryIndicators(element);
    // Set up layer generators
    List<LayerGenerator> layerGenerators = new ArrayList<LayerGenerator>();
    for (MapLayer layer : element.getLayers()) {
        if (layer.isVisible()) {
            LayerGenerator layerGtor = createGenerator(layer, indicators);
            layerGtor.query(getDispatcher(), effectiveFilter);
            layerGenerators.add(layerGtor);
        }
    }
    // FIRST PASS: calculate extents and margins
    int width = element.getWidth();
    int height = element.getHeight();
    AiLatLng center;
    int zoom;
    Extents extents = Extents.emptyExtents();
    Margins margins = new Margins(0);
    for (LayerGenerator layerGtor : layerGenerators) {
        extents.grow(layerGtor.calculateExtents());
        margins.grow(layerGtor.calculateMargins());
    }
    content.setExtents(extents);
    if (element.getCenter() == null) {
        // Now we're ready to calculate the zoom level
        // and the projection
        zoom = TileMath.zoomLevelForExtents(extents, width, height);
        center = extents.center();
    } else {
        center = element.getCenter();
        zoom = element.getZoomLevel();
    }
    content.setCenter(center);
    // Retrieve the basemap and clamp zoom level
    BaseMap baseMap = findBaseMap(element, indicators.values());
    if (zoom < baseMap.getMinZoom()) {
        zoom = baseMap.getMinZoom();
    }
    if (zoom > baseMap.getMaxZoom()) {
        zoom = baseMap.getMaxZoom();
    }
    if (zoom > element.getMaximumZoomLevel()) {
        zoom = element.getMaximumZoomLevel();
    }
    TiledMap map = new TiledMap(width, height, center, zoom);
    content.setBaseMap(baseMap);
    content.setZoomLevel(zoom);
    // Generate the actual content
    for (LayerGenerator layerGtor : layerGenerators) {
        layerGtor.generate(map, content);
    }
    content.setIndicators(toDTOs(indicators.values()));
    element.setContent(content);
}
Also used : DimensionType(org.activityinfo.legacy.shared.command.DimensionType) MapContent(org.activityinfo.legacy.shared.reports.content.MapContent) Extents(org.activityinfo.model.type.geo.Extents) Indicator(org.activityinfo.server.database.hibernate.entity.Indicator) BaseMap(org.activityinfo.legacy.shared.model.BaseMap) TileBaseMap(org.activityinfo.legacy.shared.model.TileBaseMap) GoogleBaseMap(org.activityinfo.legacy.shared.reports.content.GoogleBaseMap) Filter(org.activityinfo.legacy.shared.command.Filter) AiLatLng(org.activityinfo.model.type.geo.AiLatLng)

Aggregations

Filter (org.activityinfo.legacy.shared.command.Filter)60 Test (org.junit.Test)8 DimensionType (org.activityinfo.legacy.shared.command.DimensionType)5 GetSites (org.activityinfo.legacy.shared.command.GetSites)4 SqlQuery (com.bedatadriven.rebar.sql.client.query.SqlQuery)3 PivotSites (org.activityinfo.legacy.shared.command.PivotSites)3 SiteResult (org.activityinfo.legacy.shared.command.result.SiteResult)3 CommandException (org.activityinfo.legacy.shared.exception.CommandException)3 AdminEntityDTO (org.activityinfo.legacy.shared.model.AdminEntityDTO)3 PartnerDTO (org.activityinfo.legacy.shared.model.PartnerDTO)3 Dimension (org.activityinfo.legacy.shared.reports.model.Dimension)3 Indicator (org.activityinfo.server.database.hibernate.entity.Indicator)3 SqlResultCallback (com.bedatadriven.rebar.sql.client.SqlResultCallback)2 SqlResultSet (com.bedatadriven.rebar.sql.client.SqlResultSet)2 SqlResultSetRow (com.bedatadriven.rebar.sql.client.SqlResultSetRow)2 SqlTransaction (com.bedatadriven.rebar.sql.client.SqlTransaction)2 OutputStream (java.io.OutputStream)2 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 List (java.util.List)2