Search in sources :

Example 1 with Bucket

use of org.activityinfo.shared.command.result.Bucket in project activityinfo by bedatadriven.

the class PolygonLayerGenerator method queryBuckets.

private void queryBuckets(DispatcherSync dispatcher, Filter layerFilter) {
    PivotSites query = new PivotSites();
    query.setFilter(layerFilter);
    AdminDimension adminDimension = new AdminDimension(layer.getAdminLevelId());
    query.setDimensions(adminDimension);
    MagnitudeScaleBuilder scaleBuilder = new MagnitudeScaleBuilder(layer);
    this.pivotResult = dispatcher.execute(query);
    for (Bucket bucket : pivotResult.getBuckets()) {
        EntityCategory category = (EntityCategory) bucket.getCategory(adminDimension);
        if (category != null) {
            int adminEntityId = category.getId();
            AdminMarker polygon = overlay.getPolygon(adminEntityId);
            if (polygon != null) {
                polygon.setValue(bucket.doubleValue());
                scaleBuilder.addValue(bucket.doubleValue());
            }
        }
    }
    colorScale = scaleBuilder.build();
}
Also used : PivotSites(org.activityinfo.shared.command.PivotSites) Bucket(org.activityinfo.shared.command.result.Bucket) AdminMarker(org.activityinfo.shared.report.content.AdminMarker) AdminDimension(org.activityinfo.shared.report.model.AdminDimension) EntityCategory(org.activityinfo.shared.report.content.EntityCategory)

Example 2 with Bucket

use of org.activityinfo.shared.command.result.Bucket in project activityinfo by bedatadriven.

the class GetAttributeGroupsDimensionHandler method execute.

@Override
public void execute(GetAttributeGroupsDimension cmd, final ExecutionContext context, final AsyncCallback<AttributeGroupResult> callback) {
    // if the filter doesn't contain any activity, database or indicator values, just return an empty list
    if (!cmd.getFilter().isRestricted(DimensionType.Database) && !cmd.getFilter().isRestricted(DimensionType.Activity) && !cmd.getFilter().isRestricted(DimensionType.Indicator)) {
        callback.onSuccess(new AttributeGroupResult());
        return;
    }
    final Dimension dimension = new Dimension(DimensionType.AttributeGroup);
    final PivotSites query = new PivotSites();
    query.setFilter(cmd.getFilter());
    query.setDimensions(dimension);
    query.setValueType(ValueType.DIMENSION);
    context.execute(query, new AsyncCallback<PivotSites.PivotResult>() {

        @Override
        public void onSuccess(PivotSites.PivotResult result) {
            final List<AttributeGroupDTO> list = new ArrayList<AttributeGroupDTO>();
            // populate the resultlist
            for (Bucket bucket : result.getBuckets()) {
                EntityCategory category = (EntityCategory) bucket.getCategory(dimension);
                if (category != null) {
                    AttributeGroupDTO attributeGroup = new AttributeGroupDTO();
                    attributeGroup.setId(category.getId());
                    attributeGroup.setName(category.getLabel());
                    list.add(attributeGroup);
                }
            }
            // sort the groups in the list by name (fallback on id)
            Collections.sort(list, new Comparator<AttributeGroupDTO>() {

                @Override
                public int compare(AttributeGroupDTO g1, AttributeGroupDTO g2) {
                    int result = g1.getName().compareToIgnoreCase(g2.getName());
                    if (result != 0) {
                        return result;
                    } else {
                        return ((Integer) g1.getId()).compareTo(g2.getId());
                    }
                }
            });
            callback.onSuccess(new AttributeGroupResult(list));
        }

        @Override
        public void onFailure(Throwable caught) {
            callback.onFailure(caught);
        }
    });
}
Also used : AttributeGroupDTO(org.activityinfo.shared.dto.AttributeGroupDTO) Dimension(org.activityinfo.shared.report.model.Dimension) GetAttributeGroupsDimension(org.activityinfo.shared.command.GetAttributeGroupsDimension) Comparator(java.util.Comparator) PivotSites(org.activityinfo.shared.command.PivotSites) AttributeGroupResult(org.activityinfo.shared.command.result.AttributeGroupResult) Bucket(org.activityinfo.shared.command.result.Bucket) ArrayList(java.util.ArrayList) List(java.util.List) EntityCategory(org.activityinfo.shared.report.content.EntityCategory)

Example 3 with Bucket

use of org.activityinfo.shared.command.result.Bucket in project activityinfo by bedatadriven.

the class PivotQuery method execute.

public void execute(final AsyncCallback<Void> callback) {
    baseTable.setupQuery(command, query);
    if (command.isPivotedBy(DimensionType.Location) || command.isPointRequested()) {
        query.leftJoin(Tables.LOCATION, "Location").on("Location.LocationId=" + baseTable.getDimensionIdColumn(DimensionType.Location));
    }
    if (command.isPivotedBy(DimensionType.Partner)) {
        query.leftJoin(Tables.PARTNER, "Partner").on("Partner.PartnerId=" + baseTable.getDimensionIdColumn(DimensionType.Partner));
    }
    if (command.isPivotedBy(DimensionType.Project)) {
        SqlQuery activeProjects = SqlQuery.selectAll().from(Tables.PROJECT, "AllProjects").where("AllProjects.dateDeleted").isNull();
        query.leftJoin(activeProjects, "Project").on("Project.ProjectId=" + baseTable.getDimensionIdColumn(DimensionType.Project));
    }
    if (command.isPointRequested()) {
        if (command.isPivotedBy(DimensionType.Location)) {
            query.appendColumn("Location.X", "LX");
            query.appendColumn("Location.Y", "LY");
        } else {
            query.appendColumn("AVG(Location.X)", "LX");
            query.appendColumn("AVG(Location.Y)", "LY");
        }
        // Build the derived table that identifies the MBR for each
        // location using the admin MBRs
        SqlQuery adminBoundsQuery = SqlQuery.select().appendColumn("link.LocationId", "LocationId").appendColumn("(MAX(X1)+MIN(X2))/2.0", "AX").appendColumn("(MAX(Y1)+MIN(Y2))/2.0", "AY").from(Tables.LOCATION_ADMIN_LINK, "link").leftJoin(Tables.ADMIN_ENTITY, "e").on("link.adminentityid=e.adminentityid").groupBy("link.locationid");
        query.leftJoin(adminBoundsQuery, "ambr").on("Location.LocationId=ambr.LocationId");
        query.appendColumn("ambr.AX", "AX");
        query.appendColumn("ambr.AY", "AY");
        System.out.println(adminBoundsQuery.sql());
        bundlers.add(new PointBundler());
    }
    addDimensionBundlers();
    // otherwise permissions have already been taken into account during synchronization
    if (isRemote()) {
        appendVisibilityFilter();
    }
    if (filter.getMinDate() != null) {
        query.where(baseTable.getDateCompleteColumn()).greaterThanOrEqualTo(filter.getMinDate());
    }
    if (filter.getMaxDate() != null) {
        query.where(baseTable.getDateCompleteColumn()).lessThanOrEqualTo(filter.getMaxDate());
    }
    appendDimensionRestrictions();
    if (Log.isDebugEnabled()) {
        Log.debug("PivotQuery (" + baseTable.getClass() + ") executing query: " + query.sql());
    }
    query.execute(tx, new SqlResultCallback() {

        @Override
        public void onSuccess(SqlTransaction tx, SqlResultSet results) {
            for (SqlResultSetRow row : results.getRows()) {
                Bucket bucket = new Bucket();
                bucket.setAggregationMethod(row.getInt(ValueFields.AGGREGATION));
                bucket.setCount(row.getInt(ValueFields.COUNT));
                if (!row.isNull(ValueFields.SUM)) {
                    bucket.setSum(row.getDouble(ValueFields.SUM));
                }
                bucket.setCategory(new Dimension(DimensionType.Target), baseTable.getTargetCategory());
                for (Bundler bundler : bundlers) {
                    bundler.bundle(row, bucket);
                }
                context.addBucket(bucket);
            }
            callback.onSuccess(null);
        }
    });
}
Also used : SqlResultSet(com.bedatadriven.rebar.sql.client.SqlResultSet) SqlQuery(com.bedatadriven.rebar.sql.client.query.SqlQuery) Bucket(org.activityinfo.shared.command.result.Bucket) SqlResultCallback(com.bedatadriven.rebar.sql.client.SqlResultCallback) SqlTransaction(com.bedatadriven.rebar.sql.client.SqlTransaction) Dimension(org.activityinfo.shared.report.model.Dimension) AttributeGroupDimension(org.activityinfo.shared.report.model.AttributeGroupDimension) AdminDimension(org.activityinfo.shared.report.model.AdminDimension) DateDimension(org.activityinfo.shared.report.model.DateDimension) PointBundler(org.activityinfo.shared.command.handler.pivot.bundler.PointBundler) SqlResultSetRow(com.bedatadriven.rebar.sql.client.SqlResultSetRow) QuarterBundler(org.activityinfo.shared.command.handler.pivot.bundler.QuarterBundler) OrderedEntityBundler(org.activityinfo.shared.command.handler.pivot.bundler.OrderedEntityBundler) PointBundler(org.activityinfo.shared.command.handler.pivot.bundler.PointBundler) Bundler(org.activityinfo.shared.command.handler.pivot.bundler.Bundler) MySqlYearWeekBundler(org.activityinfo.shared.command.handler.pivot.bundler.MySqlYearWeekBundler) YearBundler(org.activityinfo.shared.command.handler.pivot.bundler.YearBundler) MonthBundler(org.activityinfo.shared.command.handler.pivot.bundler.MonthBundler) AttributeBundler(org.activityinfo.shared.command.handler.pivot.bundler.AttributeBundler) SimpleBundler(org.activityinfo.shared.command.handler.pivot.bundler.SimpleBundler) EntityBundler(org.activityinfo.shared.command.handler.pivot.bundler.EntityBundler)

Example 4 with Bucket

use of org.activityinfo.shared.command.result.Bucket in project activityinfo by bedatadriven.

the class PivotTableGeneratorTest method test2x2.

@Test
public void test2x2() {
    // test input data: user
    User user = new User();
    user.setLocale("fr");
    // test input data: PivotTableElement
    PivotTableReportElement element = new PivotTableReportElement();
    AdminDimension provinceDim = new AdminDimension(1);
    element.addRowDimension(provinceDim);
    Dimension partnerDim = new Dimension(DimensionType.Partner);
    element.addColDimension(partnerDim);
    // test input data: aggregated results
    List<Bucket> buckets = new ArrayList<Bucket>();
    buckets.add(newBucket(433, category(provinceDim, 2, "Sud Kivu"), category(partnerDim, 1, "IRC")));
    buckets.add(newBucket(1032, category(provinceDim, 1, "Nord Kivu"), category(partnerDim, 2, "Solidarites")));
    buckets.add(newBucket(310, category(provinceDim, 1, "Nord Kivu"), category(partnerDim, 1, "IRC")));
    buckets.add(newBucket(926, category(provinceDim, 1, "Nord Kivu"), category(partnerDim, 3, "AVSI")));
    // collaborator : PivotDAO
    DispatcherSync dispatcher = createMock(DispatcherSync.class);
    expect(dispatcher.execute(isA(PivotSites.class))).andReturn(new PivotSites.PivotResult(buckets));
    replay(dispatcher);
    // CLASS UNDER TEST!!
    PivotTableGenerator generator = new PivotTableGenerator(dispatcher);
    generator.generate(user, element, null, null);
    Assert.assertNotNull("element content", element.getContent());
    PivotTableData data = element.getContent().getData();
    Assert.assertEquals("rows", 2, data.getRootRow().getChildCount());
    Assert.assertEquals("rows sorted", "Nord Kivu", data.getRootRow().getChildren().get(0).getLabel());
    Assert.assertEquals("cols", 3, data.getRootColumn().getChildCount());
}
Also used : PivotSites(org.activityinfo.shared.command.PivotSites) User(org.activityinfo.server.database.hibernate.entity.User) Bucket(org.activityinfo.shared.command.result.Bucket) PivotTableData(org.activityinfo.shared.report.content.PivotTableData) ArrayList(java.util.ArrayList) Dimension(org.activityinfo.shared.report.model.Dimension) AdminDimension(org.activityinfo.shared.report.model.AdminDimension) PivotTableReportElement(org.activityinfo.shared.report.model.PivotTableReportElement) AdminDimension(org.activityinfo.shared.report.model.AdminDimension) DispatcherSync(org.activityinfo.server.command.DispatcherSync) Test(org.junit.Test)

Example 5 with Bucket

use of org.activityinfo.shared.command.result.Bucket in project activityinfo by bedatadriven.

the class PivotSitesHandlerTest method testIndicatorOrder.

@Test
public void testIndicatorOrder() {
    withIndicatorAsDimension();
    filter.addRestriction(DimensionType.Indicator, 1);
    filter.addRestriction(DimensionType.Indicator, 2);
    execute();
    assertEquals(2, buckets.size());
    Bucket indicator1 = findBucketsByCategory(buckets, indicatorDim, new EntityCategory(1)).get(0);
    Bucket indicator2 = findBucketsByCategory(buckets, indicatorDim, new EntityCategory(2)).get(0);
    EntityCategory cat1 = (EntityCategory) indicator1.getCategory(indicatorDim);
    EntityCategory cat2 = (EntityCategory) indicator2.getCategory(indicatorDim);
    assertEquals(2, cat1.getSortOrder().intValue());
    assertEquals(OWNER_USER_ID, cat2.getSortOrder().intValue());
}
Also used : Bucket(org.activityinfo.shared.command.result.Bucket) EntityCategory(org.activityinfo.shared.report.content.EntityCategory) Test(org.junit.Test)

Aggregations

Bucket (org.activityinfo.shared.command.result.Bucket)16 Dimension (org.activityinfo.shared.report.model.Dimension)11 EntityCategory (org.activityinfo.shared.report.content.EntityCategory)9 AdminDimension (org.activityinfo.shared.report.model.AdminDimension)9 Test (org.junit.Test)8 AttributeGroupDimension (org.activityinfo.shared.report.model.AttributeGroupDimension)6 DateDimension (org.activityinfo.shared.report.model.DateDimension)6 PivotSites (org.activityinfo.shared.command.PivotSites)5 ArrayList (java.util.ArrayList)4 OnDataSet (org.activityinfo.server.database.OnDataSet)4 Comparator (java.util.Comparator)3 List (java.util.List)2 DispatcherSync (org.activityinfo.server.command.DispatcherSync)2 User (org.activityinfo.server.database.hibernate.entity.User)2 CommandException (org.activityinfo.shared.exception.CommandException)2 PivotTableData (org.activityinfo.shared.report.content.PivotTableData)2 PivotTableReportElement (org.activityinfo.shared.report.model.PivotTableReportElement)2 SqlResultCallback (com.bedatadriven.rebar.sql.client.SqlResultCallback)1 SqlResultSet (com.bedatadriven.rebar.sql.client.SqlResultSet)1 SqlResultSetRow (com.bedatadriven.rebar.sql.client.SqlResultSetRow)1