Search in sources :

Example 76 with Entity

use of org.openforis.idm.model.Entity in project collect by openforis.

the class RecordUpdater method addEntity.

public NodeChangeSet addEntity(Entity parentEntity, EntityDefinition entityDef) {
    Entity entity = performEntityAdd(parentEntity, entityDef, null);
    setMissingValueApproved(parentEntity, entityDef.getName(), false);
    NodeChangeMap changeMap = initializeEntity(entity, true);
    return changeMap;
}
Also used : Entity(org.openforis.idm.model.Entity)

Example 77 with Entity

use of org.openforis.idm.model.Entity 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 78 with Entity

use of org.openforis.idm.model.Entity in project collect by openforis.

the class RecordUpdater method moveNode.

public void moveNode(CollectRecord record, int nodeId, int index) {
    Node<?> node = record.getNodeByInternalId(nodeId);
    Entity parent = node.getParent();
    List<Node<?>> siblings = parent.getChildren(node.getDefinition());
    int oldIndex = siblings.indexOf(node);
    parent.move(node.getDefinition(), oldIndex, index);
}
Also used : Entity(org.openforis.idm.model.Entity) Node(org.openforis.idm.model.Node)

Example 79 with Entity

use of org.openforis.idm.model.Entity in project collect by openforis.

the class RecordValidationCache method getTotalMissingCount.

protected int getTotalMissingCount(Map<Integer, Set<NodeDefinition>> nodeDefsByEntityId) {
    int result = 0;
    Set<Integer> keySet = nodeDefsByEntityId.keySet();
    for (Integer id : keySet) {
        Entity entity = (Entity) record.getNodeByInternalId(id);
        Set<NodeDefinition> nodeDefs = nodeDefsByEntityId.get(id);
        for (NodeDefinition childDef : nodeDefs) {
            int missingCount = entity.getMissingCount(childDef);
            result += missingCount;
        }
    }
    return result;
}
Also used : Entity(org.openforis.idm.model.Entity) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition)

Example 80 with Entity

use of org.openforis.idm.model.Entity in project collect by openforis.

the class CollectRecord method getFileAttributes.

public List<FileAttribute> getFileAttributes() {
    final List<FileAttribute> result = new ArrayList<FileAttribute>();
    Entity rootEntity = getRootEntity();
    rootEntity.traverse(new NodeVisitor() {

        @Override
        public void visit(Node<? extends NodeDefinition> node, int pos) {
            if (node instanceof FileAttribute) {
                result.add((FileAttribute) node);
            }
        }
    });
    return result;
}
Also used : Entity(org.openforis.idm.model.Entity) ArrayList(java.util.ArrayList) FileAttribute(org.openforis.idm.model.FileAttribute) NodeVisitor(org.openforis.idm.model.NodeVisitor)

Aggregations

Entity (org.openforis.idm.model.Entity)164 Test (org.junit.Test)88 CollectRecord (org.openforis.collect.model.CollectRecord)37 EntityDefinition (org.openforis.idm.metamodel.EntityDefinition)36 Code (org.openforis.idm.model.Code)35 RealAttribute (org.openforis.idm.model.RealAttribute)25 CollectIntegrationTest (org.openforis.collect.CollectIntegrationTest)23 NodeDefinition (org.openforis.idm.metamodel.NodeDefinition)19 Node (org.openforis.idm.model.Node)19 AbstractTest (org.openforis.idm.AbstractTest)18 Date (org.openforis.idm.model.Date)16 ArrayList (java.util.ArrayList)14 CodeAttribute (org.openforis.idm.model.CodeAttribute)14 Time (org.openforis.idm.model.Time)12 GregorianCalendar (java.util.GregorianCalendar)9 ParsingError (org.openforis.collect.io.metadata.parsing.ParsingError)9 AttributeDefinition (org.openforis.idm.metamodel.AttributeDefinition)9 TextAttribute (org.openforis.idm.model.TextAttribute)9 CodeAttributeDefinition (org.openforis.idm.metamodel.CodeAttributeDefinition)8 Attribute (org.openforis.idm.model.Attribute)8