use of org.activityinfo.model.query.QueryModel in project activityinfo by bedatadriven.
the class ImportWithMultiClassRangeTest method testMulti.
@Test
public void testMulti() throws IOException {
setUser(3);
FormTree formTree = assertResolves(locator.getFormTree(SCHOOL_FORM_CLASS));
FormTreePrettyPrinter.print(formTree);
importModel = new ImportModel(formTree);
importer = new Importer(locator, formTree, FieldImportStrategies.get(JvmConverterFactory.get()));
// Step 1: User pastes in data to import
PastedTable source = new PastedTable(Resources.toString(getResource(getClass(), "school-import.csv"), Charsets.UTF_8));
importModel.setSource(source);
dumpList("COLUMNS", source.getColumns());
importModel.setColumnAction(columnIndex("School"), target("Name"));
// Province is at the root of both hierarchies
importModel.setColumnAction(columnIndex("Province"), target("Province Name"));
// Admin hierarchy
importModel.setColumnAction(columnIndex("District"), target("District Name"));
importModel.setColumnAction(columnIndex("Territoire"), target("Territoire Name"));
importModel.setColumnAction(columnIndex("Secteur"), target("Secteur Name"));
importModel.setColumnAction(columnIndex("Groupement"), target("Groupement Name"));
// health ministry hierarchy
importModel.setColumnAction(columnIndex("Zone de Santé"), target("Zone de Santé Name"));
ValidatedRowTable validatedResult = assertResolves(importer.validateRows(importModel));
showValidationGrid(validatedResult);
assertResolves(importer.persist(importModel));
QueryModel resultQuery = new QueryModel(SCHOOL_FORM_CLASS);
resultQuery.selectResourceId().as("id");
resultQuery.selectField(CuidAdapter.field(SCHOOL_FORM_CLASS, CuidAdapter.NAME_FIELD)).as("name");
resultSet = assertResolves(locator.queryTable(resultQuery));
// we have 8 rows in school-import.csv
assertThat(resultSet.getNumRows(), equalTo(8));
assertThat(school("P"), equalTo(set(PROVINCE_KATANGA)));
assertThat(school("D"), equalTo(set(DISTRICT_TANGANIKA)));
assertThat(school("T"), equalTo(set(TERRITOIRE_KALEMIE)));
assertThat(school("S"), equalTo(set(SECTEUR_TUMBWE)));
assertThat(school("G"), equalTo(set(GROUPEMENT_LAMBO_KATENGA)));
// assertThat(school("GZ"), equalTo(set(GROUPEMENT_LAMBO_KATENGA, ZONE_SANTE_NYEMBA)));
// assertThat(school("TZ"), equalTo(set(TERRITOIRE_KALEMIE, ZONE_SANTE_NYEMBA)));
assertThat(school("GZ"), equalTo(set(ZONE_SANTE_NYEMBA)));
assertThat(school("TZ"), equalTo(set(ZONE_SANTE_NYEMBA)));
}
use of org.activityinfo.model.query.QueryModel in project activityinfo by bedatadriven.
the class InstanceScoreTest method query.
private Promise<ColumnSet> query(Map<FieldPath, Integer> referenceFields, int adminLevel) {
ResourceId formId = CuidAdapter.adminLevelFormClass(adminLevel);
QueryModel queryModel = new QueryModel(formId);
queryModel.selectResourceId().as("_id");
for (FieldPath fieldPath : referenceFields.keySet()) {
queryModel.selectField(fieldPath).as(fieldPath.toString());
}
return locator.queryTable(queryModel);
}
use of org.activityinfo.model.query.QueryModel in project activityinfo by bedatadriven.
the class HrdCatalogTest method subFormTest.
@Test
public void subFormTest() {
// Typical scenario with a household interview form
// and a repeating househould member form
FormClass hhForm = new FormClass(ResourceId.generateId());
FormClass memberForm = new FormClass(ResourceId.generateId());
memberForm.setParentFormId(hhForm.getId());
hhForm.setParentFormId(ResourceId.valueOf("foo"));
hhForm.setLabel("Household interview");
FormField hhIdField = hhForm.addField().setLabel("Household ID").setType(TextType.SIMPLE);
hhForm.addField().setLabel("Household Memmbers").setType(new SubFormReferenceType(memberForm.getId()));
memberForm.setLabel("Household Members");
FormField nameField = memberForm.addField().setLabel("Name").setType(TextType.SIMPLE);
FormField ageField = memberForm.addField().setLabel("Age").setType(new QuantityType("years"));
HrdStorageProvider catalog = new HrdStorageProvider();
catalog.create(hhForm);
catalog.create(memberForm);
TypedRecordUpdate hh1 = new TypedRecordUpdate();
hh1.setUserId(userId);
hh1.setRecordId(ResourceId.generateSubmissionId(hhForm));
hh1.set(hhIdField.getId(), TextValue.valueOf("HH1"));
TypedRecordUpdate hh2 = new TypedRecordUpdate();
hh2.setUserId(userId);
hh2.setRecordId(ResourceId.generateSubmissionId(hhForm));
hh2.set(hhIdField.getId(), TextValue.valueOf("HH2"));
TypedRecordUpdate father1 = new TypedRecordUpdate();
father1.setUserId(userId);
father1.setRecordId(ResourceId.generateSubmissionId(memberForm));
father1.setParentId(hh1.getRecordId());
father1.set(nameField.getId(), TextValue.valueOf("Homer"));
father1.set(ageField.getId(), new Quantity(40));
TypedRecordUpdate father2 = new TypedRecordUpdate();
father2.setUserId(userId);
father2.setRecordId(ResourceId.generateSubmissionId(memberForm));
father2.setParentId(hh2.getRecordId());
father2.set(nameField.getId(), TextValue.valueOf("Ned"));
father2.set(ageField.getId(), new Quantity(41));
Optional<FormStorage> hhCollection = catalog.getForm(hhForm.getId());
assertTrue(hhCollection.isPresent());
hhCollection.get().add(hh1);
hhCollection.get().add(hh2);
Optional<FormStorage> memberCollection = catalog.getForm(memberForm.getId());
assertTrue(memberCollection.isPresent());
memberCollection.get().add(father1);
memberCollection.get().add(father2);
QueryModel queryModel = new QueryModel(memberForm.getId());
queryModel.selectResourceId().as("id");
queryModel.selectField("Household ID").as("hh_id");
queryModel.selectField("Name").as("member_name");
queryModel.selectField("Age").as("member_age");
ColumnSetBuilder builder = new ColumnSetBuilder(catalog, new NullFormSupervisor());
ColumnSet columnSet = builder.build(queryModel);
System.out.println(columnSet);
assertThat(columnSet.getNumRows(), equalTo(2));
}
use of org.activityinfo.model.query.QueryModel in project activityinfo by bedatadriven.
the class HrdCatalogTest method createResource.
@Test
public void createResource() {
FormClass formClass = new FormClass(ResourceId.generateId());
formClass.setParentFormId(ResourceId.valueOf("foo"));
formClass.setLabel("NFI Distributions");
FormField nameField = formClass.addField(ResourceId.generateId()).setLabel("Village name").setCode("VILLAGE").setType(TextType.SIMPLE);
HrdStorageProvider catalog = new HrdStorageProvider();
Updater updater = new Updater(catalog, userId, new BlobAuthorizerStub(), new HrdSerialNumberProvider());
catalog.create(formClass);
String[] villageNames = new String[] { "Rutshuru", "Beni", "Goma" };
for (String villageName : villageNames) {
TypedRecordUpdate update = new TypedRecordUpdate();
update.setUserId(userId);
update.setFormId(formClass.getId());
update.setRecordId(ResourceId.generateSubmissionId(formClass));
update.set(nameField.getId(), TextValue.valueOf(villageName));
updater.execute(update);
}
QueryModel queryModel = new QueryModel(formClass.getId());
queryModel.selectResourceId().as("id");
queryModel.selectField("VILLAGE").as("village");
ColumnSetBuilder builder = new ColumnSetBuilder(catalog, new NullFormSupervisor());
ColumnSet columnSet = builder.build(queryModel);
System.out.println(columnSet);
}
use of org.activityinfo.model.query.QueryModel in project activityinfo by bedatadriven.
the class SubFormAggregationTest method subFormAggregationTest.
@Test
public void subFormAggregationTest() {
// Typical scenario with a household interview form
// and a repeating househould member form
FormClass siteForm = new FormClass(ResourceId.generateId());
siteForm.setParentFormId(ResourceId.ROOT_ID);
FormClass monthlyForm = new FormClass(ResourceId.generateId());
monthlyForm.setParentFormId(siteForm.getId());
monthlyForm.setSubFormKind(SubFormKind.MONTHLY);
siteForm.setLabel("Household interview");
FormField villageField = siteForm.addField().setLabel("Village Name").setType(TextType.SIMPLE);
siteForm.addField().setLabel("Maximum Beneficiaries").setCode("BENE").setType(new CalculatedFieldType("MAX(HH)"));
siteForm.addField().setLabel("Monthly Activities").setType(new SubFormReferenceType(monthlyForm.getId()));
monthlyForm.setLabel("Monthly Activities");
FormField countField = monthlyForm.addField().setLabel("Number of Beneficiaries").setCode("HH").setType(new QuantityType("households"));
HrdStorageProvider catalog = new HrdStorageProvider();
catalog.create(siteForm);
catalog.create(monthlyForm);
TypedRecordUpdate v1 = new TypedRecordUpdate();
v1.setUserId(userId);
v1.setRecordId(ResourceId.generateSubmissionId(siteForm));
v1.set(villageField.getId(), TextValue.valueOf("Rutshuru"));
TypedRecordUpdate v2 = new TypedRecordUpdate();
v2.setUserId(userId);
v2.setRecordId(ResourceId.generateSubmissionId(siteForm));
v2.set(villageField.getId(), TextValue.valueOf("Beni"));
TypedRecordUpdate month1 = new TypedRecordUpdate();
month1.setUserId(userId);
month1.setRecordId(ResourceId.generateSubmissionId(monthlyForm));
month1.setParentId(v1.getRecordId());
month1.set(countField.getId(), new Quantity(40));
TypedRecordUpdate month2 = new TypedRecordUpdate();
month2.setUserId(userId);
month2.setRecordId(ResourceId.generateSubmissionId(monthlyForm));
month2.setParentId(v1.getRecordId());
month2.set(countField.getId(), new Quantity(30));
TypedRecordUpdate month3 = new TypedRecordUpdate();
month3.setUserId(userId);
month3.setRecordId(ResourceId.generateSubmissionId(monthlyForm));
month3.setParentId(v2.getRecordId());
month3.set(countField.getId(), new Quantity(47));
FormStorage siteCollection = catalog.getForm(siteForm.getId()).get();
siteCollection.add(v1);
siteCollection.add(v2);
Optional<FormStorage> monthCollection = catalog.getForm(monthlyForm.getId());
assertTrue(monthCollection.isPresent());
monthCollection.get().add(month1);
monthCollection.get().add(month2);
monthCollection.get().add(month3);
QueryModel queryModel = new QueryModel(siteForm.getId());
queryModel.selectResourceId().as("id");
queryModel.selectField("Village Name").as("village");
queryModel.selectField("BENE").as("max_hh");
ColumnSetBuilder builder = new ColumnSetBuilder(catalog, new NullFormSupervisor());
ColumnSet columnSet = builder.build(queryModel);
System.out.println(columnSet);
assertThat(columnSet.getNumRows(), equalTo(2));
}
Aggregations