Search in sources :

Example 11 with Filter

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);
}
Also used : MapMarker(org.activityinfo.legacy.shared.reports.content.MapMarker) Filter(org.activityinfo.legacy.shared.command.Filter) JSObject(org.discotools.gwt.leaflet.client.jsobject.JSObject)

Example 12 with Filter

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);
                }
            }
        });
    }
}
Also used : PivotSites(org.activityinfo.legacy.shared.command.PivotSites) Filter(org.activityinfo.legacy.shared.command.Filter) PivotContent(org.activityinfo.legacy.shared.reports.content.PivotContent) Dimension(org.activityinfo.legacy.shared.reports.model.Dimension) HashSet(java.util.HashSet)

Example 13 with Filter

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);
        }
    }
}
Also used : DimensionType(org.activityinfo.legacy.shared.command.DimensionType) SqlQuery(com.bedatadriven.rebar.sql.client.query.SqlQuery) Filter(org.activityinfo.legacy.shared.command.Filter)

Example 14 with Filter

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;
}
Also used : DimensionType(org.activityinfo.legacy.shared.command.DimensionType) Filter(org.activityinfo.legacy.shared.command.Filter)

Example 15 with Filter

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;
}
Also used : Filter(org.activityinfo.legacy.shared.command.Filter)

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