use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class UIOptionsMigratorTest method testMigration.
@Test
public void testMigration() {
UIOptionsMigrator migrator = new UIOptionsMigrator();
UIConfiguration uiModel = migrator.migrateToUIConfiguration(uiOptions);
assertNotNull(uiModel);
Schema schema = survey.getSchema();
{
EntityDefinition cluster = schema.getRootEntityDefinition("cluster");
UIFormSet formSet = uiModel.getFormSetByRootEntityId(cluster.getId());
List<UIForm> forms = formSet.getForms();
assertEquals(3, forms.size());
// cluster form
{
UIForm form = forms.get(0);
List<UIFormComponent> children = form.getChildren();
assertEquals(16, children.size());
{
// task
UIFormComponent component = children.get(0);
assertTrue(component instanceof UITable);
UITable taskTable = (UITable) component;
assertNotNull(taskTable.getEntityDefinition());
assertEquals("task", taskTable.getEntityDefinition().getName());
// task/task
assertEquals(3, taskTable.getHeadingComponents().size());
UITableHeadingComponent heading = taskTable.getHeadingComponents().get(0);
assertTrue(heading instanceof UIColumn);
UIColumn col = (UIColumn) heading;
assertEquals(Integer.valueOf(729), col.getAttributeDefinitionId());
}
}
// plot form
{
UIForm plotForm = forms.get(1);
List<UIFormComponent> plotFormChildren = plotForm.getChildren();
assertEquals(1, plotFormChildren.size());
UIFormComponent plotMultipleEntityComponent = plotFormChildren.get(0);
assertTrue(plotMultipleEntityComponent instanceof UIFormSection);
UIFormSection plotMultipleEntityFormSection = (UIFormSection) plotMultipleEntityComponent;
List<UIForm> subforms = plotMultipleEntityFormSection.getForms();
assertEquals(6, subforms.size());
UIForm detailForm = subforms.get(0);
List<UIFormComponent> children = detailForm.getChildren();
assertEquals(34, children.size());
{
// plot_no
{
UIFormComponent component = children.get(0);
assertTrue(component instanceof UIField);
UIField plotNoField = (UIField) component;
assertEquals(Integer.valueOf(749), plotNoField.getAttributeDefinitionId());
}
// time study (single entity -> form section)
{
UIFormComponent component = children.get(2);
assertTrue(component instanceof UIFormSection);
UIFormSection section = (UIFormSection) component;
assertEquals(3, section.getChildren().size());
// start time
UIFormComponent startTimeComp = section.getChildren().get(1);
assertTrue(startTimeComp instanceof UIField);
UIField startTimeField = (UIField) startTimeComp;
assertEquals(Integer.valueOf(753), startTimeField.getAttributeDefinitionId());
}
}
}
}
}
use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class CollectRecordIntegrationTest method createMultipleLevelCodeListTestSurvey.
private CollectSurvey createMultipleLevelCodeListTestSurvey() {
CollectSurvey survey = surveyManager.createTemporarySurvey("test", "en");
CodeList codeList = survey.createCodeList();
{
CodeListLevel codeListLevel = new CodeListLevel();
codeListLevel.setName("level1");
codeList.addLevel(codeListLevel);
}
{
CodeListLevel codeListLevel = new CodeListLevel();
codeListLevel.setName("level2");
codeList.addLevel(codeListLevel);
}
{
CodeListLevel codeListLevel = new CodeListLevel();
codeListLevel.setName("level3");
codeList.addLevel(codeListLevel);
}
{
CodeListItem item = codeList.createItem(1);
item.setCode("A");
codeList.addItem(item);
{
CodeListItem child = codeList.createItem(2);
child.setCode("1");
item.addChildItem(child);
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("a");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("b");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("c");
child.addChildItem(child2);
}
}
{
CodeListItem child = codeList.createItem(2);
child.setCode("2");
item.addChildItem(child);
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("a");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("b");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("c");
child.addChildItem(child2);
}
}
{
CodeListItem child = codeList.createItem(2);
child.setCode("3");
item.addChildItem(child);
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("a");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("b");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("c");
child.addChildItem(child2);
}
}
}
{
CodeListItem item = codeList.createItem(1);
item.setCode("B");
codeList.addItem(item);
{
CodeListItem child = codeList.createItem(2);
child.setCode("1");
item.addChildItem(child);
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("a");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("b");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("c");
child.addChildItem(child2);
}
}
{
CodeListItem child = codeList.createItem(2);
child.setCode("2");
item.addChildItem(child);
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("a");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("b");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("c");
child.addChildItem(child2);
}
}
{
CodeListItem child = codeList.createItem(2);
child.setCode("3");
item.addChildItem(child);
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("a");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("b");
child.addChildItem(child2);
}
{
CodeListItem child2 = codeList.createItem(3);
child2.setCode("c");
child.addChildItem(child2);
}
}
}
survey.addCodeList(codeList);
Schema schema = survey.getSchema();
EntityDefinition root = schema.createEntityDefinition();
root.setName("root");
schema.addRootEntityDefinition(root);
{
CodeAttributeDefinition codeAttrDefn = schema.createCodeAttributeDefinition();
codeAttrDefn.setList(codeList);
codeAttrDefn.setName("code1");
root.addChildDefinition(codeAttrDefn);
}
{
CodeAttributeDefinition codeAttrDefn = schema.createCodeAttributeDefinition();
codeAttrDefn.setList(codeList);
codeAttrDefn.setName("code2");
codeAttrDefn.setParentExpression("code1");
root.addChildDefinition(codeAttrDefn);
}
{
CodeAttributeDefinition codeAttrDefn = schema.createCodeAttributeDefinition();
codeAttrDefn.setList(codeList);
codeAttrDefn.setName("code3");
codeAttrDefn.setParentExpression("code2");
root.addChildDefinition(codeAttrDefn);
}
survey.init();
return survey;
}
use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class CalculatedAttributeTest method createTestSurvey.
/**
* Creates a test survey in which there is a bill with a list of items.
* For each item there is a price, a quantity and a total
* (calculated using the an expression or a constant).
*
* @return
*/
private Survey createTestSurvey() {
SurveyContext surveyContext = new TestSurveyContext();
Survey survey = surveyContext.createSurvey();
Schema schema = survey.getSchema();
EntityDefinition root = schema.createEntityDefinition();
root.setName("bill");
schema.addRootEntityDefinition(root);
EntityDefinition item = schema.createEntityDefinition();
item.setName("item");
root.addChildDefinition(item);
NumberAttributeDefinition qty = schema.createNumberAttributeDefinition();
qty.setType(Type.INTEGER);
qty.setName("qty");
item.addChildDefinition(qty);
NumberAttributeDefinition price = schema.createNumberAttributeDefinition();
price.setName("price");
item.addChildDefinition(price);
NumberAttributeDefinition total = schema.createNumberAttributeDefinition();
total.setName("total");
total.setCalculated(true);
total.addAttributeDefault(new AttributeDefault("qty * (price - (price * discount_percent div 100))"));
item.addChildDefinition(total);
TimeAttributeDefinition time = schema.createTimeAttributeDefinition();
time.setName("time");
time.addAttributeDefault(new AttributeDefault("idm:currentTime()"));
item.addChildDefinition(time);
TimeAttributeDefinition timeAlias = schema.createTimeAttributeDefinition();
timeAlias.setName("time_alias");
timeAlias.setCalculated(true);
timeAlias.addAttributeDefault(new AttributeDefault("time"));
item.addChildDefinition(timeAlias);
NumberAttributeDefinition discountPercent = schema.createNumberAttributeDefinition();
discountPercent.setType(Type.INTEGER);
discountPercent.setName("discount_percent");
discountPercent.setCalculated(true);
discountPercent.addAttributeDefault(new AttributeDefault("30", "qty > 50"));
discountPercent.addAttributeDefault(new AttributeDefault("20", "qty > 20"));
discountPercent.addAttributeDefault(new AttributeDefault("10", "qty > 10"));
discountPercent.addAttributeDefault(new AttributeDefault("0", "true()"));
item.addChildDefinition(discountPercent);
return survey;
}
use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class DefaultValueTest method createTestSurvey.
/**
* Creates a test survey in which there is a bill with a list of items.
* For each item there is a price, a quantity and a total
* (calculated using the an expression or a constant).
*
* @return
*/
protected Survey createTestSurvey() {
SurveyContext surveyContext = new TestSurveyContext();
Survey survey = surveyContext.createSurvey();
Schema schema = survey.getSchema();
EntityDefinition root = schema.createEntityDefinition();
root.setName("bill");
schema.addRootEntityDefinition(root);
EntityDefinition item = schema.createEntityDefinition();
item.setName("item");
root.addChildDefinition(item);
NumberAttributeDefinition qty = schema.createNumberAttributeDefinition();
qty.setType(Type.INTEGER);
qty.setName("qty");
item.addChildDefinition(qty);
NumberAttributeDefinition price = schema.createNumberAttributeDefinition();
price.setName("price");
item.addChildDefinition(price);
NumberAttributeDefinition total = schema.createNumberAttributeDefinition();
total.setName("total");
item.addChildDefinition(total);
{
AttributeDefault attributeDefault = new AttributeDefault();
attributeDefault.setExpression("qty * price");
attributeDefault.setCondition("price > 0");
total.addAttributeDefault(attributeDefault);
}
{
AttributeDefault attributeDefault = new AttributeDefault();
attributeDefault.setValue("0");
attributeDefault.setCondition("price = 0");
total.addAttributeDefault(attributeDefault);
}
return survey;
}
use of org.openforis.idm.metamodel.Schema in project collect by openforis.
the class DependencyGraphTest method createTestSurvey.
private void createTestSurvey() {
SurveyContext surveyContext = new TestSurveyContext();
survey = surveyContext.createSurvey();
Schema schema = survey.getSchema();
rootEntityDef = schema.createEntityDefinition();
rootEntityDef.setName(ROOT_ENTITY_NAME);
schema.addRootEntityDefinition(rootEntityDef);
}
Aggregations