use of org.activityinfo.shared.report.model.DimensionType in project activityinfo by bedatadriven.
the class ReportJsonFactory method encodeRestrictions.
public JsonArray encodeRestrictions(Map<DimensionType, Set<Integer>> restrictions) {
JsonArray jsonRestrictions = new JsonArray();
for (Entry<DimensionType, Set<Integer>> entry : restrictions.entrySet()) {
JsonObject jsonEntry = new JsonObject();
jsonEntry.addProperty("type", entry.getKey().toString());
Set<Integer> set = entry.getValue();
JsonArray jsonSet = new JsonArray();
for (Integer val : set) {
jsonSet.add(new JsonPrimitive(val));
}
jsonEntry.add("set", jsonSet);
jsonRestrictions.add(jsonEntry);
}
return jsonRestrictions;
}
use of org.activityinfo.shared.report.model.DimensionType in project activityinfo by bedatadriven.
the class ReportJsonFactory method encodeDimensionList.
public JsonArray encodeDimensionList(List<Dimension> dims) {
JsonArray jsonDims = new JsonArray();
for (int i = 0; i < dims.size(); i++) {
JsonObject jsonDim = new JsonObject();
DimensionType type = dims.get(i).getType();
if (type.equals(DimensionType.Date)) {
DateDimension dim = (DateDimension) dims.get(i);
jsonDim.addProperty("type", dim.getType().toString());
jsonDim.addProperty("dateUnit", dim.getUnit().toString());
if (dim.getColor() != null) {
jsonDim.addProperty("color", dim.getColor());
}
if (!dim.getCategories().isEmpty()) {
jsonDim.add("categories", encodeCategories(dim.getCategories()));
}
} else if (type.equals(DimensionType.AdminLevel)) {
AdminDimension dim = (AdminDimension) dims.get(i);
jsonDim.addProperty("type", dim.getType().toString());
jsonDim.addProperty("level", dim.getLevelId());
if (dim.getColor() != null) {
jsonDim.addProperty("color", dim.getColor());
}
if (!dim.getCategories().isEmpty()) {
jsonDim.add("categories", encodeCategories(dim.getCategories()));
}
} else {
Dimension dim = dims.get(i);
jsonDim.addProperty("type", dim.getType().toString());
if (dim.getColor() != null) {
jsonDim.addProperty("color", dim.getColor());
}
if (!dim.getCategories().isEmpty()) {
jsonDim.add("categories", encodeCategories(dim.getCategories()));
}
}
jsonDims.add(jsonDim);
}
return jsonDims;
}
use of org.activityinfo.shared.report.model.DimensionType in project activityinfo by bedatadriven.
the class BaseGenerator method generateFilterDescriptions.
protected List<FilterDescription> generateFilterDescriptions(Filter filter, Set<DimensionType> excludeDims, User user) {
List<FilterDescription> list = new ArrayList<FilterDescription>();
Set<DimensionType> filterDims = filter.getRestrictedDimensions();
filterDims.removeAll(excludeDims);
for (DimensionType type : filterDims) {
DimensionLabels labels = dispatcher.execute(new GetDimensionLabels(type, filter.getRestrictions(type)));
list.add(new FilterDescription(type, labels.getLabels()));
}
return list;
}
use of org.activityinfo.shared.report.model.DimensionType 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);
if (baseMap == null) {
baseMap = TileBaseMap.createNullMap(element.getBaseMapId());
LOGGER.log(Level.SEVERE, "Could not find base map id=" + element.getBaseMapId());
}
// Generate the actual content
for (LayerGenerator layerGtor : layerGenerators) {
layerGtor.generate(map, content);
}
content.setIndicators(toDTOs(indicators.values()));
element.setContent(content);
}
use of org.activityinfo.shared.report.model.DimensionType in project activityinfo by bedatadriven.
the class TableGenerator method generate.
@Override
public void generate(User user, TableElement element, Filter inheritedFilter, DateRange dateRange) {
Filter filter = GeneratorUtils.resolveElementFilter(element, dateRange);
Filter effectiveFilter = inheritedFilter == null ? filter : new Filter(inheritedFilter, filter);
TableContent content = new TableContent();
content.setFilterDescriptions(generateFilterDescriptions(filter, Collections.<DimensionType>emptySet(), user));
TableData data = generateData(element, effectiveFilter);
content.setData(data);
if (element.getMap() != null) {
mapGenerator.generate(user, element.getMap(), effectiveFilter, dateRange);
Map<Integer, String> siteLabels = element.getMap().getContent().siteLabelMap();
for (SiteDTO row : data.getRows()) {
row.set("map", siteLabels.get(row.getId()));
}
}
element.setContent(content);
}
Aggregations