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);
}
}
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());
}
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();
}
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();
}
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);
}
Aggregations