Search in sources :

Example 31 with ColumnSet

use of org.activityinfo.model.query.ColumnSet in project activityinfo by bedatadriven.

the class EnumerationQueryTest method enumRefTests.

@Test
public void enumRefTests() {
    TestingStorageProvider catalog = new TestingStorageProvider();
    ColumnSetBuilder builder = new ColumnSetBuilder(catalog, new NullFormScanCache(), new NullFormSupervisor());
    IntakeForm intakeForm = catalog.getIntakeForm();
    QueryModel queryModel = new QueryModel(intakeForm.getFormId());
    queryModel.selectField(intakeForm.getNationalityFieldId()).as("nationality");
    queryModel.selectExpr(intakeForm.getNationalityFieldId() + "==" + "\"" + intakeForm.getPalestinianId() + "\"").as("palestinian");
    queryModel.selectExpr("\"" + intakeForm.getPalestinianId() + "\"" + "==" + intakeForm.getNationalityFieldId()).as("palestinianInverse");
    ColumnSet columnSet = builder.build(queryModel);
    ColumnView nationality = columnSet.getColumnView("nationality");
    ColumnView palestinian = columnSet.getColumnView("palestinian");
    ColumnView palestinianInverse = columnSet.getColumnView("palestinianInverse");
    // Correct Tests
    assertThat(nationality.get(1).toString(), equalTo(NAT_PAL));
    assertThat(Boolean.valueOf(palestinian.get(1).toString()), equalTo(true));
    assertThat(Boolean.valueOf(palestinianInverse.get(1).toString()), equalTo(true));
    // Incorrect Tests
    // Multiple selected values should return null
    assertThat(nationality.get(5), equalTo(null));
}
Also used : ColumnSetBuilder(org.activityinfo.store.query.server.ColumnSetBuilder) NullFormScanCache(org.activityinfo.store.query.shared.NullFormScanCache) ColumnView(org.activityinfo.model.query.ColumnView) EnumColumnView(org.activityinfo.model.query.EnumColumnView) ColumnSet(org.activityinfo.model.query.ColumnSet) NullFormSupervisor(org.activityinfo.store.query.shared.NullFormSupervisor) QueryModel(org.activityinfo.model.query.QueryModel) Test(org.junit.Test)

Example 32 with ColumnSet

use of org.activityinfo.model.query.ColumnSet in project activityinfo by bedatadriven.

the class SubFormDeletionTest method deleteParent.

@Test
public void deleteParent() {
    QueryModel queryModel = new QueryModel(ReferralSubForm.FORM_ID);
    queryModel.selectResourceId().as("id");
    queryModel.selectExpr(new CompoundExpr(IncidentForm.FORM_ID, ColumnModel.ID_SYMBOL)).as("parent");
    queryModel.selectExpr(new ConstantNode(1)).as("count");
    ColumnSet columnSet = query(queryModel);
    assertThat(columnSet.getNumRows(), equalTo(ReferralSubForm.ROW_COUNT));
    System.out.println(columnSet.getColumnView("parent"));
    // Now delete a number of parent records
    delete(IncidentForm.FORM_ID, "c528");
    // The query results should reflect the change
    columnSet = query(queryModel);
    assertThat(columnSet.getNumRows(), equalTo(ReferralSubForm.ROW_COUNT - 2));
}
Also used : CompoundExpr(org.activityinfo.model.formula.CompoundExpr) ConstantNode(org.activityinfo.model.formula.ConstantNode) ColumnSet(org.activityinfo.model.query.ColumnSet) QueryModel(org.activityinfo.model.query.QueryModel) Test(org.junit.Test)

Example 33 with ColumnSet

use of org.activityinfo.model.query.ColumnSet in project activityinfo by bedatadriven.

the class UnaryFunctionQueryTest method plusFunctionTest.

@Test
public void plusFunctionTest() {
    QueryModel queryModel = new QueryModel(intakeForm.getFormId());
    queryModel.selectExpr("+1").as("posOne");
    queryModel.selectExpr("+1.0").as("posOneDouble");
    queryModel.selectExpr("+1*2").as("posOneByTwo");
    queryModel.selectExpr("+1.0*2.0").as("posOneByTwoDouble");
    queryModel.selectExpr("2*(+1)").as("twoByPosOne");
    queryModel.selectExpr("2.0*(+1.0)").as("twoByPosOneDouble");
    ColumnSet columnSet = builder.build(queryModel);
    ColumnView posOne = columnSet.getColumnView("posOne");
    ColumnView posOneDouble = columnSet.getColumnView("posOneDouble");
    ColumnView posOneByTwo = columnSet.getColumnView("posOneByTwo");
    ColumnView posOneByTwoDouble = columnSet.getColumnView("posOneByTwoDouble");
    ColumnView twoByPosOne = columnSet.getColumnView("twoByPosOne");
    ColumnView twoByPosOneDouble = columnSet.getColumnView("twoByPosOneDouble");
    assertThat(posOne.numRows(), equalTo(IntakeForm.ROW_COUNT));
    assertThat(posOne.getDouble(0), equalTo(1.0));
    assertThat(posOneDouble.getDouble(0), equalTo(1.0));
    assertThat(posOneByTwo.getDouble(0), equalTo(2.0));
    assertThat(posOneByTwoDouble.getDouble(0), equalTo(2.0));
    assertThat(twoByPosOne.getDouble(0), equalTo(2.0));
    assertThat(twoByPosOneDouble.getDouble(0), equalTo(2.0));
}
Also used : ColumnView(org.activityinfo.model.query.ColumnView) ColumnSet(org.activityinfo.model.query.ColumnSet) QueryModel(org.activityinfo.model.query.QueryModel) Test(org.junit.Test)

Example 34 with ColumnSet

use of org.activityinfo.model.query.ColumnSet in project activityinfo by bedatadriven.

the class UnaryFunctionQueryTest method minusFunctionTest.

@Test
public void minusFunctionTest() {
    QueryModel queryModel = new QueryModel(intakeForm.getFormId());
    queryModel.selectExpr("-1").as("negOne");
    queryModel.selectExpr("-1.0").as("negOneDouble");
    queryModel.selectExpr("-1*2").as("negOneByTwo");
    queryModel.selectExpr("-1.0*2.0").as("negOneByTwoDouble");
    queryModel.selectExpr("2*(-1)").as("twoByNegOne");
    queryModel.selectExpr("2.0*(-1.0)").as("twoByNegOneDouble");
    ColumnSet columnSet = builder.build(queryModel);
    ColumnView negOne = columnSet.getColumnView("negOne");
    ColumnView negOneDouble = columnSet.getColumnView("negOneDouble");
    ColumnView negOneByTwo = columnSet.getColumnView("negOneByTwo");
    ColumnView negOneByTwoDouble = columnSet.getColumnView("negOneByTwoDouble");
    ColumnView twoByNegOne = columnSet.getColumnView("twoByNegOne");
    ColumnView twoByNegOneDouble = columnSet.getColumnView("twoByNegOneDouble");
    assertThat(negOne.numRows(), equalTo(IntakeForm.ROW_COUNT));
    assertThat(negOne.getDouble(0), equalTo(-1.0));
    assertThat(negOneDouble.getDouble(0), equalTo(-1.0));
    assertThat(negOneByTwo.getDouble(0), equalTo(-2.0));
    assertThat(negOneByTwoDouble.getDouble(0), equalTo(-2.0));
    assertThat(twoByNegOne.getDouble(0), equalTo(-2.0));
    assertThat(twoByNegOneDouble.getDouble(0), equalTo(-2.0));
}
Also used : ColumnView(org.activityinfo.model.query.ColumnView) ColumnSet(org.activityinfo.model.query.ColumnSet) QueryModel(org.activityinfo.model.query.QueryModel) Test(org.junit.Test)

Example 35 with ColumnSet

use of org.activityinfo.model.query.ColumnSet in project activityinfo by bedatadriven.

the class AnalysisResult method computePoints.

private static Observable<MeasureResultSet> computePoints(FormStore formStore, EffectiveMeasure measure) {
    QueryModel queryModel = new QueryModel(measure.getFormId());
    queryModel.selectExpr(measure.getModel().getFormula()).as("value");
    for (EffectiveMapping dim : measure.getDimensions()) {
        queryModel.addColumns(dim.getRequiredColumns());
    }
    Observable<ColumnSet> columnSet = formStore.query(queryModel);
    Observable<MeasureResultSet> resultSet = columnSet.transform(columns -> {
        MeasureResultBuilder builder = new MeasureResultBuilder(measure, columns);
        builder.execute();
        return builder.getResult();
    });
    return resultSet;
}
Also used : ColumnSet(org.activityinfo.model.query.ColumnSet) QueryModel(org.activityinfo.model.query.QueryModel)

Aggregations

ColumnSet (org.activityinfo.model.query.ColumnSet)50 QueryModel (org.activityinfo.model.query.QueryModel)42 Test (org.junit.Test)28 ColumnView (org.activityinfo.model.query.ColumnView)24 ColumnSetBuilder (org.activityinfo.store.query.server.ColumnSetBuilder)14 FormTree (org.activityinfo.model.formTree.FormTree)12 NullFormSupervisor (org.activityinfo.store.query.shared.NullFormSupervisor)12 ResourceId (org.activityinfo.model.resource.ResourceId)10 FormClass (org.activityinfo.model.form.FormClass)7 NullFormScanCache (org.activityinfo.store.query.shared.NullFormScanCache)7 Nullable (javax.annotation.Nullable)6 Charsets (com.google.common.base.Charsets)5 Operation (io.swagger.v3.oas.annotations.Operation)5 FormTreeBuilder (org.activityinfo.model.formTree.FormTreeBuilder)5 ColumnModel (org.activityinfo.model.query.ColumnModel)5 RowBasedJsonWriter (org.activityinfo.store.query.output.RowBasedJsonWriter)5 PrintWriter (java.io.PrintWriter)4 DimensionCategory (org.activityinfo.legacy.shared.reports.content.DimensionCategory)4 FormField (org.activityinfo.model.form.FormField)4 RecordRef (org.activityinfo.model.type.RecordRef)4