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));
}
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));
}
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));
}
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));
}
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;
}
Aggregations