use of org.activityinfo.model.type.number.QuantityType in project activityinfo by bedatadriven.
the class SchemaCsvWriterV3Test method setupSurveyForm.
private void setupSurveyForm() {
surveyForm = new FormClass(ResourceId.valueOf("FORM1"));
surveyForm.setLabel("Household Survey");
surveyForm.addElement(new FormField(ResourceId.valueOf("F1")).setCode("NAME").setLabel("What is your name?").setDescription("The head of household's name").setRequired(true).setType(TextType.SIMPLE));
surveyForm.addElement(new FormField(ResourceId.valueOf("F2")).setCode("AGE").setLabel("What is your age?").setType(new QuantityType("years")).setRequired(true));
surveyForm.addElement(new FormField(ResourceId.valueOf("F3")).setCode("GENDER").setLabel("Gender of head of household").setType(new EnumType(Cardinality.SINGLE, new EnumItem(ResourceId.valueOf("GF"), "Female"), new EnumItem(ResourceId.valueOf("GM"), "Male"))).setRequired(true));
surveyForm.addElement(new FormField(ResourceId.valueOf("F4")).setLabel("Are you currently pregnant?").setRelevanceConditionExpression("AGE > 18 && GENDER == 'Female'").setType(new EnumType(Cardinality.SINGLE, new EnumItem(ResourceId.valueOf("PY"), "Yes"), new EnumItem(ResourceId.valueOf("PN"), "No"))).setRequired(true));
surveyForm.addElement(new FormField(ResourceId.valueOf("F5")).setLabel("Remarks").setType(NarrativeType.INSTANCE).setRequired(false));
FormClass subFormClass = new FormClass(ResourceId.valueOf("FORM2"));
subFormClass.setSubFormKind(SubFormKind.REPEATING);
subFormClass.addElement(new FormField(ResourceId.valueOf("F21")).setLabel("Name").setType(TextType.SIMPLE).setRequired(true));
subFormClass.addElement(new FormField(ResourceId.valueOf("F22")).setLabel("Age").setType(new QuantityType("years")).setRequired(true));
subFormClass.addElement(new FormField(ResourceId.valueOf("F23")).setLabel("Gender").setType(new EnumType(Cardinality.SINGLE, new EnumItem(ResourceId.valueOf("GF"), "Female"), new EnumItem(ResourceId.valueOf("GM"), "Male"))).setRequired(true));
subFormClass.addElement(new FormField(ResourceId.valueOf("F24")).setLabel("Vaccinations").setType(new EnumType(Cardinality.MULTIPLE, new EnumItem(ResourceId.valueOf("V1"), "Measles"), new EnumItem(ResourceId.valueOf("V2"), "Mumps"), new EnumItem(ResourceId.valueOf("V3"), "Rubella"))));
surveyForm.addElement(new FormField(ResourceId.valueOf("SF")).setLabel("Household members").setType(new SubFormReferenceType(subFormClass.getId())));
formClassProvider.add(surveyForm);
formClassProvider.add(subFormClass);
}
use of org.activityinfo.model.type.number.QuantityType in project activityinfo by bedatadriven.
the class SchemaCsvWriterV3Test method setupMonthly.
private void setupMonthly() {
washForm = new FormClass(ResourceId.valueOf("FORM3"));
washForm.setLabel("Emergency WASH");
washForm.addElement(new FormField(ResourceId.valueOf("WF1")).setLabel("Partner").setRequired(true).setType(new ReferenceType(Cardinality.SINGLE, ResourceId.valueOf("PARTNER_FORM"))));
washForm.addElement(new FormField(ResourceId.valueOf("Population")).setCode("POP").setLabel("Affected Population Size").setType(new QuantityType("households")).setRequired(true));
washForm.addElement(new FormField(ResourceId.valueOf("Population")).setCode("POP").setLabel("Affected Population Size").setType(new QuantityType("households")).setRequired(true));
FormClass subFormClass = new FormClass(ResourceId.valueOf("FORM4"));
subFormClass.setSubFormKind(SubFormKind.WEEKLY);
subFormClass.addElement(new FormField(ResourceId.valueOf("WSF1")).setLabel("Water Trucking").setType(new QuantityType("households")).setRequired(true));
subFormClass.addElement(new FormField(ResourceId.valueOf("WSF2")).setLabel("Cholorination").setType(new QuantityType("households")).setRequired(true));
washForm.addElement(new FormField(ResourceId.valueOf("SF")).setLabel("Monthly Output").setType(new SubFormReferenceType(subFormClass.getId())));
formClassProvider.add(washForm);
formClassProvider.add(subFormClass);
}
use of org.activityinfo.model.type.number.QuantityType in project activityinfo by bedatadriven.
the class MySqlCatalogIntegrationTest method testActivity.
@Test
public void testActivity() throws IOException {
QueryModel model = new QueryModel(activityFormClass(33));
model.selectField("date1");
model.selectField("date2");
model.selectExpr("Partner.name");
FormTree formTree = new FormTreeBuilder(catalog).queryTree(activityFormClass(33));
FormTreePrettyPrinter.print(formTree);
FormClass formClass = catalog.getForm(activityFormClass(33)).get().getFormClass();
for (FormField field : formClass.getFields()) {
if (field.getType() instanceof QuantityType) {
model.selectField(field.getId()).as("I" + CuidAdapter.getLegacyIdFromCuid(field.getId()));
}
}
Stopwatch stopwatch = Stopwatch.createStarted();
ColumnSet columnSet = columnSetBuilder.build(model);
System.out.println("Query executed in " + stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms");
assertThat(columnSet.getNumRows(), equalTo(652));
StringWriter stringWriter = new StringWriter();
RowBasedJsonWriter writer = new RowBasedJsonWriter(stringWriter);
writer.write(columnSet);
System.out.println(stringWriter.toString());
}
use of org.activityinfo.model.type.number.QuantityType in project activityinfo by bedatadriven.
the class ActivityUpdater method insertIndicatorRow.
private void insertIndicatorRow(FormField formField, int sortOrder) {
SqlInsert insert = SqlInsert.insertInto("indicator");
insert.value("indicatorId", CuidAdapter.getLegacyIdFromCuid(formField.getId()));
insert.value("activityId", activityId);
insert.value("name", formField.getLabel());
insert.value("nameInExpression", formField.getCode());
insert.value("description", formField.getDescription());
if (formField.getType() instanceof QuantityType) {
insert.value("aggregation", ((QuantityType) formField.getType()).getAggregation().ordinal());
} else {
insert.value("aggregation", 0);
}
insert.value("sortOrder", sortOrder);
insert.value("type", formField.getType().getTypeClass().getId());
insert.value("mandatory", formField.isRequired());
if (formField.getType() instanceof QuantityType) {
QuantityType quantityType = (QuantityType) formField.getType();
insert.value("units", quantityType.getUnits());
}
if (formField.getType() instanceof CalculatedFieldType) {
CalculatedFieldType type = (CalculatedFieldType) formField.getType();
insert.value("calculatedAutomatically", true);
insert.value("expression", type.getExpression());
}
insert.execute(executor);
}
use of org.activityinfo.model.type.number.QuantityType in project activityinfo by bedatadriven.
the class ActivityUpdater method updateIndicatorRow.
private void updateIndicatorRow(ActivityField existingField, FormField formField, int sortOrder) {
SqlUpdate update = SqlUpdate.update("indicator");
update.where("indicatorId", existingField.getId());
update.setIfChanged("name", existingField.getFormField().getLabel(), formField.getLabel());
update.setIfChanged("nameInExpression", existingField.getFormField().getCode(), formField.getCode(), 255);
update.setIfChanged("sortOrder", existingField.getSortOrder(), sortOrder);
update.setIfChanged("description", existingField.getFormField().getDescription(), formField.getDescription());
update.setIfChanged("mandatory", existingField.getFormField().isRequired(), formField.isRequired());
if (existingField.getFormField().getType() instanceof QuantityType) {
QuantityType existingType = (QuantityType) existingField.getFormField().getType();
QuantityType updatedType = (QuantityType) formField.getType();
update.setIfChanged("units", existingType.getUnits(), updatedType.getUnits(), 255);
update.setIfChanged("aggregation", existingType.getAggregation(), updatedType.getAggregation());
}
if (existingField.getFormField().getType() instanceof CalculatedFieldType) {
CalculatedFieldType existingType = (CalculatedFieldType) existingField.getFormField().getType();
CalculatedFieldType updatedType = (CalculatedFieldType) formField.getType();
update.setIfChanged("expression", existingType.getExpression(), updatedType.getExpression());
}
update.execute(executor);
}
Aggregations