use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.
the class LeafletMarkerDrilldownEventHandler method handle.
@Override
public void handle(Event event) {
final JSObject targetOptions = event.getTarget().getProperty("options");
MapMarker markerModel = LeafletMarkerFactory.getModel(targetOptions);
final Filter effectiveFilter = new Filter();
effectiveFilter.addRestriction(DimensionType.Site, markerModel.getSiteIds());
effectiveFilter.addRestriction(DimensionType.Indicator, markerModel.getIndicatorIds());
drillDownEditor.drillDown(effectiveFilter);
}
use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.
the class PivotTableBinder method executeLoad.
@Override
protected void executeLoad(final AsyncCallback<PivotContent> callback) {
final Filter filter = new Filter(getModel().getFilter());
final Set<Dimension> dimensions = new HashSet<>(getModel().allDimensions());
if (filter.equals(cachedFilter) && dimensions.equals(cachedDimensions)) {
try {
callback.onSuccess(generateElement());
} catch (Exception e) {
callback.onFailure(e);
}
} else {
PivotSites query = new PivotSites(dimensions, filter);
if (query.isTooBroad()) {
callback.onSuccess(new PivotContent());
return;
}
dispatcher.execute(query, new AsyncCallback<PivotSites.PivotResult>() {
@Override
public void onFailure(Throwable throwable) {
callback.onFailure(throwable);
}
@Override
public void onSuccess(PivotSites.PivotResult pivotResult) {
cachedFilter = filter;
cachedDimensions = dimensions;
cachedResult = pivotResult;
try {
callback.onSuccess(generateElement());
} catch (Exception e) {
callback.onFailure(e);
}
}
});
}
}
use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.
the class OldGetSitesHandler method applyFilter.
private void applyFilter(SqlQuery query, GetSites command) {
Filter filter = command.getFilter();
if (filter != null) {
if (filter.getRestrictedDimensions() != null && filter.getRestrictedDimensions().size() > 0) {
query.onlyWhere(" AND (");
boolean isFirst = true;
boolean isRestricted = false;
for (DimensionType type : filter.getRestrictedDimensions()) {
if (isQueryableType(type)) {
addJoint(query, isFirst);
isRestricted = true;
}
if (type == DimensionType.Activity) {
query.onlyWhere("activity.ActivityId").in(filter.getRestrictions(type));
} else if (type == DimensionType.Database) {
query.onlyWhere("activity.DatabaseId").in(filter.getRestrictions(type));
} else if (type == DimensionType.Partner) {
query.onlyWhere("site.PartnerId").in(filter.getRestrictions(type));
} else if (type == DimensionType.Project) {
query.onlyWhere("site.ProjectId").in(filter.getRestrictions(type));
} else if (type == DimensionType.AdminLevel) {
query.onlyWhere("site.LocationId").in(SqlQuery.select("Link.LocationId").from(Tables.LOCATION_ADMIN_LINK, "Link").where("Link.AdminEntityId").in(filter.getRestrictions(type)));
} else if (type == DimensionType.Site) {
query.onlyWhere("site.SiteId").in(filter.getRestrictions(type));
} else if (type == DimensionType.Attribute) {
Set<Integer> attributes = filter.getRestrictions(DimensionType.Attribute);
boolean isFirstAttr = true;
for (Integer attribute : attributes) {
SqlQuery attributefilter = SqlQuery.select().appendColumn("1", "__VAL_EXISTS").from("attributevalue", "av").whereTrue("av.value=1").and("av.SiteId = site.SiteId").where("av.AttributeId").equalTo(attribute);
addJoint(query, isFirstAttr);
if (isFirstAttr) {
isFirstAttr = false;
}
query.onlyWhere("EXISTS (" + attributefilter.sql() + ") ");
query.appendParameter(attribute);
}
} else if (type == DimensionType.Location) {
query.onlyWhere("location.locationId").in(filter.getRestrictions(type));
}
if (isQueryableType(type) && isFirst) {
isFirst = false;
}
}
if (!isRestricted) {
query.onlyWhere(" 1=1 ");
}
query.onlyWhere(")");
}
if (!command.isFetchAllReportingPeriods()) {
// it does not make sense to filter monthly activity by site dates (filter by reporting period instead)
applyDateRangeFilter("site.Date1", filter.getStartDateRange(), query);
applyDateRangeFilter("site.Date2", filter.getEndDateRange(), query);
}
}
}
use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.
the class CalculatedIndicatorsQuery method composeSiteFilter.
private Filter composeSiteFilter() {
Filter siteFilter = new Filter();
siteFilter.addRestriction(DimensionType.Activity, activityIds);
siteFilter.setEndDateRange(query.getFilter().getEndDateRange());
for (DimensionType type : query.getFilter().getRestrictedDimensions()) {
if (type != DimensionType.Activity && type != DimensionType.Database && type != DimensionType.Indicator) {
siteFilter.addRestriction(type, query.getFilter().getRestrictions(type));
}
}
return siteFilter;
}
use of org.activityinfo.legacy.shared.command.Filter in project activityinfo by bedatadriven.
the class FilterAdapter method unmarshal.
@Override
public Filter unmarshal(FilterElement element) throws Exception {
Filter filter = new Filter();
filter.setStartDateRange(element.startDateRange);
filter.setEndDateRange(element.endDateRange);
for (Restriction r : element.restrictions) {
for (String s : r.categories) {
filter.addRestriction(findDimType(r.dimension), Integer.parseInt(s));
}
}
return filter;
}
Aggregations