Search in sources :

Example 61 with Schema

use of org.openforis.idm.metamodel.Schema in project collect by openforis.

the class DependencyGraphTest method attributeDefinition.

protected AttributeDefinition attributeDefinition(EntityDefinition parent, String name, String calculatedValueExpression, String relevantExpression, String validationExpression) {
    Schema schema = survey.getSchema();
    AttributeDefinition defn = schema.createTextAttributeDefinition();
    defn.setName(name);
    if (calculatedValueExpression != null) {
        defn.setCalculated(true);
        defn.addAttributeDefault(new AttributeDefault(calculatedValueExpression));
    }
    defn.setRelevantExpression(relevantExpression);
    if (validationExpression != null) {
        defn.addCheck(new CustomCheck(validationExpression));
    }
    parent.addChildDefinition(defn);
    survey.refreshSurveyDependencies();
    return defn;
}
Also used : CustomCheck(org.openforis.idm.metamodel.validation.CustomCheck) Schema(org.openforis.idm.metamodel.Schema) AttributeDefault(org.openforis.idm.metamodel.AttributeDefault) AttributeDefinition(org.openforis.idm.metamodel.AttributeDefinition)

Example 62 with Schema

use of org.openforis.idm.metamodel.Schema in project collect by openforis.

the class CollectEarthBalloonGenerator method getHiddenNodeDefinitions.

private List<AttributeDefinition> getHiddenNodeDefinitions() {
    final List<AttributeDefinition> nodesFromCSV = new ArrayList<AttributeDefinition>();
    final CollectAnnotations annotations = survey.getAnnotations();
    Schema schema = survey.getSchema();
    schema.traverse(new NodeDefinitionVisitor() {

        public void visit(NodeDefinition definition) {
            if (definition instanceof AttributeDefinition) {
                AttributeDefinition attrDef = (AttributeDefinition) definition;
                if (annotations.isFromCollectEarthCSV(attrDef) && !annotations.isShowReadOnlyFieldInCollectEarth(attrDef) || attrDef.isKey() && definition.getParentEntityDefinition().isRoot()) {
                    nodesFromCSV.add(attrDef);
                }
            }
        }
    });
    return nodesFromCSV;
}
Also used : Schema(org.openforis.idm.metamodel.Schema) ArrayList(java.util.ArrayList) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition) CoordinateAttributeDefinition(org.openforis.idm.metamodel.CoordinateAttributeDefinition) AttributeDefinition(org.openforis.idm.metamodel.AttributeDefinition) CodeAttributeDefinition(org.openforis.idm.metamodel.CodeAttributeDefinition) TextAttributeDefinition(org.openforis.idm.metamodel.TextAttributeDefinition) NumericAttributeDefinition(org.openforis.idm.metamodel.NumericAttributeDefinition) RangeAttributeDefinition(org.openforis.idm.metamodel.RangeAttributeDefinition) DateAttributeDefinition(org.openforis.idm.metamodel.DateAttributeDefinition) NumberAttributeDefinition(org.openforis.idm.metamodel.NumberAttributeDefinition) TimeAttributeDefinition(org.openforis.idm.metamodel.TimeAttributeDefinition) KeyAttributeDefinition(org.openforis.idm.metamodel.KeyAttributeDefinition) BooleanAttributeDefinition(org.openforis.idm.metamodel.BooleanAttributeDefinition) CollectAnnotations(org.openforis.collect.metamodel.CollectAnnotations) NodeDefinitionVisitor(org.openforis.idm.metamodel.NodeDefinitionVisitor)

Example 63 with Schema

use of org.openforis.idm.metamodel.Schema in project collect by openforis.

the class VersioningVM method getReferencesInSchema.

protected List<VersionableSurveyObject> getReferencesInSchema(ModelVersion version) {
    List<VersionableSurveyObject> references = new ArrayList<VersionableSurveyObject>();
    Schema schema = survey.getSchema();
    List<EntityDefinition> rootEntities = schema.getRootEntityDefinitions();
    Stack<NodeDefinition> stack = new Stack<NodeDefinition>();
    stack.addAll(rootEntities);
    while (!stack.isEmpty()) {
        NodeDefinition defn = stack.pop();
        if (isVersionInUse(version, defn)) {
            references.add(defn);
        }
        if (defn instanceof EntityDefinition) {
            stack.addAll(((EntityDefinition) defn).getChildDefinitions());
        }
    }
    return references;
}
Also used : EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) VersionableSurveyObject(org.openforis.idm.metamodel.VersionableSurveyObject) Schema(org.openforis.idm.metamodel.Schema) ArrayList(java.util.ArrayList) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition) Stack(java.util.Stack)

Example 64 with Schema

use of org.openforis.idm.metamodel.Schema in project collect by openforis.

the class SurveyCreator method createTemporarySimpleSurvey.

private CollectSurvey createTemporarySimpleSurvey(String name, List<SimpleCodeList> simpleCodeLists) {
    CollectSurvey survey = surveyManager.createTemporarySurvey(name, languageCode);
    for (int codeListIdx = 0; codeListIdx < simpleCodeLists.size(); codeListIdx++) {
        SimpleCodeList simpleCodeList = simpleCodeLists.get(codeListIdx);
        CodeList codeList = survey.createCodeList();
        codeList.setName("values_" + (codeListIdx + 1));
        codeList.setLabel(CodeListLabel.Type.ITEM, survey.getDefaultLanguage(), simpleCodeList.getName());
        List<ListItem> items = simpleCodeList.getItems();
        for (int itemIdx = 0; itemIdx < items.size(); itemIdx++) {
            ListItem paramItem = items.get(itemIdx);
            CodeListItem item = codeList.createItem(1);
            // specified code or item index
            item.setCode(ObjectUtils.defaultIfNull(paramItem.getCode(), String.valueOf(itemIdx + 1)));
            item.setLabel(languageCode, paramItem.getLabel());
            item.setColor(paramItem.getColor());
            codeList.addItem(item);
        }
        survey.addCodeList(codeList);
    }
    Schema schema = survey.getSchema();
    EntityDefinition rootEntityDef = schema.createEntityDefinition();
    rootEntityDef.setName(singleAttributeSurveyRootEntityName);
    schema.addRootEntityDefinition(rootEntityDef);
    CodeAttributeDefinition idAttrDef = schema.createCodeAttributeDefinition();
    idAttrDef.setName(singleAttributeSurveyKeyAttributeName);
    idAttrDef.setKey(true);
    idAttrDef.setList(survey.getSamplingDesignCodeList());
    rootEntityDef.addChildDefinition(idAttrDef);
    TextAttributeDefinition operatorAttrDef = schema.createTextAttributeDefinition();
    operatorAttrDef.setName(singleAttributeSurveyOperatorAttributeName);
    operatorAttrDef.setKey(true);
    operatorAttrDef.setLabel(Type.INSTANCE, languageCode, singleAttributeSurveyOperatorAttributeLabel);
    survey.getAnnotations().setMeasurementAttribute(operatorAttrDef, true);
    rootEntityDef.addChildDefinition(operatorAttrDef);
    EntityDefinition secondLevelEntityDef = schema.createEntityDefinition();
    secondLevelEntityDef.setName(singleAttributeSurveySecondLevelEntityName);
    secondLevelEntityDef.setMultiple(true);
    rootEntityDef.addChildDefinition(secondLevelEntityDef);
    CodeAttributeDefinition secondLevelIdAttrDef = schema.createCodeAttributeDefinition();
    secondLevelIdAttrDef.setName(singleAttributeSurveySecondLevelIdAttributeName);
    secondLevelIdAttrDef.setKey(true);
    secondLevelIdAttrDef.setList(survey.getSamplingDesignCodeList());
    secondLevelIdAttrDef.setParentCodeAttributeDefinition(idAttrDef);
    secondLevelEntityDef.addChildDefinition(secondLevelIdAttrDef);
    for (int i = 0; i < simpleCodeLists.size(); i++) {
        String codeListName = "values_" + (i + 1);
        CodeList codeList = survey.getCodeList(codeListName);
        CodeAttributeDefinition valueAttrDef = schema.createCodeAttributeDefinition();
        valueAttrDef.setName(codeListName);
        valueAttrDef.setList(codeList);
        secondLevelEntityDef.addChildDefinition(valueAttrDef);
    }
    // create root tab set
    UIOptions uiOptions = survey.getUIOptions();
    UITabSet rootTabSet = uiOptions.createRootTabSet((EntityDefinition) rootEntityDef);
    UITab mainTab = uiOptions.getMainTab(rootTabSet);
    mainTab.setLabel(languageCode, singleAttributeSurveyTabLabel);
    UIConfiguration uiConfiguration = new UIOptionsMigrator().migrateToUIConfiguration(uiOptions);
    survey.setUIConfiguration(uiConfiguration);
    SurveyObjectsGenerator surveyObjectsGenerator = new SurveyObjectsGenerator();
    surveyObjectsGenerator.addPredefinedObjects(survey);
    if (survey.getSamplingDesignCodeList() == null) {
        survey.addSamplingDesignCodeList();
    }
    return survey;
}
Also used : Schema(org.openforis.idm.metamodel.Schema) UIOptions(org.openforis.collect.metamodel.ui.UIOptions) UITabSet(org.openforis.collect.metamodel.ui.UITabSet) SurveyObjectsGenerator(org.openforis.collect.manager.SurveyObjectsGenerator) UIOptionsMigrator(org.openforis.collect.metamodel.ui.UIOptionsMigrator) UIConfiguration(org.openforis.collect.metamodel.ui.UIConfiguration) SimpleCodeList(org.openforis.collect.metamodel.SimpleSurveyCreationParameters.SimpleCodeList) SimpleCodeList(org.openforis.collect.metamodel.SimpleSurveyCreationParameters.SimpleCodeList) CodeList(org.openforis.idm.metamodel.CodeList) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) UITab(org.openforis.collect.metamodel.ui.UITab) CodeAttributeDefinition(org.openforis.idm.metamodel.CodeAttributeDefinition) TextAttributeDefinition(org.openforis.idm.metamodel.TextAttributeDefinition) ListItem(org.openforis.collect.metamodel.SimpleSurveyCreationParameters.ListItem) CodeListItem(org.openforis.idm.metamodel.CodeListItem) CollectSurvey(org.openforis.collect.model.CollectSurvey) CodeListItem(org.openforis.idm.metamodel.CodeListItem)

Example 65 with Schema

use of org.openforis.idm.metamodel.Schema in project collect by openforis.

the class SchemaSummaryCSVExportJob method buildTasks.

@Override
protected void buildTasks() throws Throwable {
    Task task = new Task() {

        @Override
        protected void execute() throws Throwable {
            FileOutputStream out = new FileOutputStream(outputFile);
            final CsvWriter csvWriter = new CsvWriter(new BufferedWriter(new OutputStreamWriter(out, "UTF-8")), ',', '"');
            try {
                csvWriter.writeHeaders(HEADERS);
                Schema schema = survey.getSchema();
                schema.traverse(new NodeDefinitionVisitor() {

                    @Override
                    public void visit(NodeDefinition nodeDefn) {
                        csvWriter.writeNext(new String[] { Integer.toString(nodeDefn.getId()), nodeDefn.getPath(), nodeDefn instanceof EntityDefinition ? "entity" : "attribute", nodeDefn instanceof AttributeDefinition ? AttributeType.valueOf((AttributeDefinition) nodeDefn).getLabel() : "", nodeDefn.getLabel(Type.INSTANCE, labelLanguage), String.valueOf(nodeDefn.isAlwaysRelevant()), nodeDefn.isAlwaysRelevant() ? "" : nodeDefn.getRelevantExpression(), String.valueOf(nodeDefn.isAlwaysRequired()), nodeDefn.isAlwaysRequired() ? "" : nodeDefn.getMinCountExpression(), extractValidationRules(nodeDefn) });
                    }
                });
            } finally {
                IOUtils.closeQuietly(csvWriter);
            }
        }
    };
    addTask(task);
}
Also used : EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) Task(org.openforis.concurrency.Task) CsvWriter(org.openforis.commons.io.csv.CsvWriter) FileOutputStream(java.io.FileOutputStream) Schema(org.openforis.idm.metamodel.Schema) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition) AttributeDefinition(org.openforis.idm.metamodel.AttributeDefinition) OutputStreamWriter(java.io.OutputStreamWriter) NodeDefinitionVisitor(org.openforis.idm.metamodel.NodeDefinitionVisitor) BufferedWriter(java.io.BufferedWriter)

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