Search in sources :

Example 31 with Survey

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

the class CodeListManager method delete.

@Transactional
public void delete(CodeList codeList) {
    Survey survey = codeList.getSurvey();
    deleteAllItems(codeList);
    survey.removeCodeList(codeList);
}
Also used : Survey(org.openforis.idm.metamodel.Survey) CollectSurvey(org.openforis.collect.model.CollectSurvey) Transactional(org.springframework.transaction.annotation.Transactional)

Example 32 with Survey

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

the class CodeListManager method isInUse.

public boolean isInUse(final CodeList list) {
    Survey survey = list.getSurvey();
    Schema schema = survey.getSchema();
    NodeDefinition attrDefnUsingCodeList = schema.findNodeDefinition(new NodeDefinitionVerifier() {

        @Override
        public boolean verify(NodeDefinition definition) {
            return definition instanceof CodeAttributeDefinition && ((CodeAttributeDefinition) definition).getList() == list;
        }
    });
    return attrDefnUsingCodeList != null;
}
Also used : Survey(org.openforis.idm.metamodel.Survey) CollectSurvey(org.openforis.collect.model.CollectSurvey) CodeAttributeDefinition(org.openforis.idm.metamodel.CodeAttributeDefinition) Schema(org.openforis.idm.metamodel.Schema) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition) NodeDefinitionVerifier(org.openforis.idm.metamodel.NodeDefinitionVerifier)

Example 33 with Survey

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

the class RecordFileManager method getRepositoryRelativePath.

public static String getRepositoryRelativePath(FileAttributeDefinition defn, String directorySeparator, boolean surveyRelative) {
    Survey survey = defn.getSurvey();
    StringBuilder sb = new StringBuilder();
    if (surveyRelative) {
        sb.append(survey.getId());
        sb.append(directorySeparator);
    }
    sb.append(defn.getId());
    return sb.toString();
}
Also used : Survey(org.openforis.idm.metamodel.Survey)

Example 34 with Survey

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

the class RecordUpdater method addEmptyEnumeratedEntities.

private void addEmptyEnumeratedEntities(Entity parentEntity, EntityDefinition enumerableEntityDefn) {
    Record record = parentEntity.getRecord();
    ModelVersion version = record.getVersion();
    CodeAttributeDefinition enumeratingCodeDefn = enumerableEntityDefn.getEnumeratingKeyCodeAttribute(version);
    if (enumeratingCodeDefn != null) {
        CodeList list = enumeratingCodeDefn.getList();
        Survey survey = record.getSurvey();
        CodeListService codeListService = survey.getContext().getCodeListService();
        List<CodeListItem> items = codeListService.loadRootItems(list);
        int i = 0;
        for (CodeListItem item : items) {
            if (version == null || version.isApplicable(item)) {
                String code = item.getCode();
                Entity enumeratedEntity = parentEntity.getEnumeratedEntity(enumerableEntityDefn, enumeratingCodeDefn, code);
                if (enumeratedEntity == null) {
                    Entity addedEntity = performEntityAdd(parentEntity, enumerableEntityDefn, i);
                    addEmptyNodes(addedEntity);
                    // set the value of the key CodeAttribute
                    CodeAttribute addedCode = (CodeAttribute) addedEntity.getChild(enumeratingCodeDefn, 0);
                    addedCode.setValue(new Code(code));
                    addedCode.updateSummaryInfo();
                } else if (enumeratedEntity.getIndex() != i) {
                    parentEntity.move(enumerableEntityDefn, enumeratedEntity.getIndex(), i);
                }
                i++;
            }
        }
    }
}
Also used : Entity(org.openforis.idm.model.Entity) CodeListService(org.openforis.idm.metamodel.CodeListService) Code(org.openforis.idm.model.Code) CodeList(org.openforis.idm.metamodel.CodeList) Survey(org.openforis.idm.metamodel.Survey) CodeAttributeDefinition(org.openforis.idm.metamodel.CodeAttributeDefinition) CodeAttribute(org.openforis.idm.model.CodeAttribute) Record(org.openforis.idm.model.Record) ModelVersion(org.openforis.idm.metamodel.ModelVersion) CodeListItem(org.openforis.idm.metamodel.CodeListItem)

Example 35 with Survey

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

the class CSVDataImportProcess method getOrCreateParentEntity.

// @SuppressWarnings("unchecked")
// private <T extends Value> void setValueInAttribute(Attribute<?, T> attr, String strVal) {
// T val;
// if ( attr instanceof DateAttribute ) {
// val = (T) Date.parseDate(strVal);
// } else if ( attr instanceof CodeAttribute ) {
// val = (T) new Code(strVal);
// } else if ( attr instanceof CoordinateAttribute ) {
// val = (T) Coordinate.parseCoordinate(strVal);
// } else if ( attr instanceof TextAttribute ) {
// val = (T) new TextValue(strVal);
// } else {
// throw new UnsupportedOperationException("Attribute type not supported: " + attr.getClass().getName());
// }
// attr.setValue(val);
// }
private Entity getOrCreateParentEntity(CollectRecord record, DataLine line) {
    Survey survey = record.getSurvey();
    Schema schema = survey.getSchema();
    EntityDefinition parentEntityDefn = (EntityDefinition) schema.getDefinitionById(parentEntityDefinitionId);
    Entity rootEntity = record.getRootEntity();
    Entity currentParent = rootEntity;
    List<EntityDefinition> ancestorEntityDefns = parentEntityDefn.getAncestorEntityDefinitionsInReverseOrder();
    ancestorEntityDefns.add(parentEntityDefn);
    // skip the root entity
    for (int i = 1; i < ancestorEntityDefns.size(); i++) {
        EntityDefinition ancestorDefn = ancestorEntityDefns.get(i);
        String ancestorName = ancestorDefn.getName();
        EntityIdentifier<?> identifier = line.getAncestorIdentifier(ancestorDefn.getId());
        Entity childEntity;
        if (ancestorDefn.isMultiple()) {
            List<Entity> childEntities = findChildEntities(currentParent, ancestorName, identifier);
            switch(childEntities.size()) {
                case 0:
                    if (settings.isCreateAncestorEntities() || ancestorDefn == parentEntityDefn) {
                        childEntity = createChildEntity(currentParent, ancestorName, identifier, line.getColumnNamesByField(), line.getLineNumber());
                    } else {
                        status.addParsingError(createParentEntitySearchError(record, line, identifier, PARENT_ENTITY_NOT_FOUND_MESSAGE_KEY));
                        return null;
                    }
                    break;
                case 1:
                    childEntity = childEntities.get(0);
                    break;
                default:
                    status.addParsingError(createParentEntitySearchError(record, line, identifier, MULTIPLE_PARENT_ENTITY_FOUND_MESSAGE_KEY));
                    return null;
            }
        } else {
            if (currentParent.getCount(ancestorDefn) == 0) {
                Node<?> newNode = ancestorDefn.createNode();
                currentParent.add(newNode);
            }
            childEntity = (Entity) currentParent.getChild(ancestorDefn);
        }
        currentParent = childEntity;
    }
    return currentParent;
}
Also used : EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) Entity(org.openforis.idm.model.Entity) CollectSurvey(org.openforis.collect.model.CollectSurvey) Survey(org.openforis.idm.metamodel.Survey) Schema(org.openforis.idm.metamodel.Schema)

Aggregations

Survey (org.openforis.idm.metamodel.Survey)67 Test (org.junit.Test)19 CollectSurvey (org.openforis.collect.model.CollectSurvey)13 NodeDefinition (org.openforis.idm.metamodel.NodeDefinition)11 EntityDefinition (org.openforis.idm.metamodel.EntityDefinition)10 Schema (org.openforis.idm.metamodel.Schema)10 SurveyContext (org.openforis.idm.metamodel.SurveyContext)8 Entity (org.openforis.idm.model.Entity)4 CollectIntegrationTest (org.openforis.collect.CollectIntegrationTest)3 ParsingError (org.openforis.collect.io.metadata.parsing.ParsingError)3 CodeAttributeDefinition (org.openforis.idm.metamodel.CodeAttributeDefinition)3 LookupProvider (org.openforis.idm.metamodel.validation.LookupProvider)3 TestSurveyContext (org.openforis.idm.model.TestSurveyContext)3 IOException (java.io.IOException)2 UIOptions (org.openforis.collect.metamodel.ui.UIOptions)2 NodeChangeSet (org.openforis.collect.model.NodeChangeSet)2 AttributeDefault (org.openforis.idm.metamodel.AttributeDefault)2 CodeList (org.openforis.idm.metamodel.CodeList)2 CodeListService (org.openforis.idm.metamodel.CodeListService)2 ModelVersion (org.openforis.idm.metamodel.ModelVersion)2