Search in sources :

Example 16 with Schema

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());
                }
            }
        }
    }
}
Also used : Schema(org.openforis.idm.metamodel.Schema) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) List(java.util.List) CollectIntegrationTest(org.openforis.collect.CollectIntegrationTest) Test(org.junit.Test)

Example 17 with Schema

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;
}
Also used : CodeList(org.openforis.idm.metamodel.CodeList) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) CodeListLevel(org.openforis.idm.metamodel.CodeListLevel) CodeAttributeDefinition(org.openforis.idm.metamodel.CodeAttributeDefinition) Schema(org.openforis.idm.metamodel.Schema) CodeListItem(org.openforis.idm.metamodel.CodeListItem)

Example 18 with Schema

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;
}
Also used : EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) Survey(org.openforis.idm.metamodel.Survey) TimeAttributeDefinition(org.openforis.idm.metamodel.TimeAttributeDefinition) Schema(org.openforis.idm.metamodel.Schema) NumberAttributeDefinition(org.openforis.idm.metamodel.NumberAttributeDefinition) AttributeDefault(org.openforis.idm.metamodel.AttributeDefault) SurveyContext(org.openforis.idm.metamodel.SurveyContext)

Example 19 with Schema

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;
}
Also used : EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) Survey(org.openforis.idm.metamodel.Survey) Schema(org.openforis.idm.metamodel.Schema) NumberAttributeDefinition(org.openforis.idm.metamodel.NumberAttributeDefinition) AttributeDefault(org.openforis.idm.metamodel.AttributeDefault) SurveyContext(org.openforis.idm.metamodel.SurveyContext)

Example 20 with Schema

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);
}
Also used : Schema(org.openforis.idm.metamodel.Schema) SurveyContext(org.openforis.idm.metamodel.SurveyContext)

Aggregations

Schema (org.openforis.idm.metamodel.Schema)65 EntityDefinition (org.openforis.idm.metamodel.EntityDefinition)46 NodeDefinition (org.openforis.idm.metamodel.NodeDefinition)23 CollectSurvey (org.openforis.collect.model.CollectSurvey)19 ArrayList (java.util.ArrayList)10 AttributeDefinition (org.openforis.idm.metamodel.AttributeDefinition)10 Survey (org.openforis.idm.metamodel.Survey)10 CodeAttributeDefinition (org.openforis.idm.metamodel.CodeAttributeDefinition)6 UIOptions (org.openforis.collect.metamodel.ui.UIOptions)5 NumericAttributeDefinition (org.openforis.idm.metamodel.NumericAttributeDefinition)5 Test (org.junit.Test)4 UITab (org.openforis.collect.metamodel.ui.UITab)4 UITabSet (org.openforis.collect.metamodel.ui.UITabSet)4 Step (org.openforis.collect.model.CollectRecord.Step)4 CollectRecordSummary (org.openforis.collect.model.CollectRecordSummary)4 RecordFilter (org.openforis.collect.model.RecordFilter)4 NodeDefinitionVisitor (org.openforis.idm.metamodel.NodeDefinitionVisitor)4 NumberAttributeDefinition (org.openforis.idm.metamodel.NumberAttributeDefinition)4 Entity (org.openforis.idm.model.Entity)4 List (java.util.List)3