Search in sources :

Example 1 with Value

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

the class CSVDataImportProcess method setRecordKeys.

private void setRecordKeys(DataLine line, CollectRecord record) {
    EntityDefinition rootEntityDefn = record.getRootEntity().getDefinition();
    Value[] recordKeyValues = line.getRecordKeyValues(rootEntityDefn);
    List<AttributeDefinition> keyAttributeDefinitions = rootEntityDefn.getKeyAttributeDefinitions();
    for (int i = 0; i < keyAttributeDefinitions.size(); i++) {
        AttributeDefinition keyDefn = keyAttributeDefinitions.get(i);
        // for record key attributes, absolute path must be equal to relative path
        Attribute<?, ?> keyAttr = record.findNodeByPath(keyDefn.getPath());
        Value keyVal = recordKeyValues[i];
        setValueInField(keyAttr, keyDefn.getMainFieldName(), ((AbstractValue) keyVal).toInternalString(), line.getLineNumber(), null);
    }
}
Also used : EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) AbstractValue(org.openforis.idm.model.AbstractValue) Value(org.openforis.idm.model.Value) NumericAttributeDefinition(org.openforis.idm.metamodel.NumericAttributeDefinition) CoordinateAttributeDefinition(org.openforis.idm.metamodel.CoordinateAttributeDefinition) AttributeDefinition(org.openforis.idm.metamodel.AttributeDefinition) NumberAttributeDefinition(org.openforis.idm.metamodel.NumberAttributeDefinition)

Example 2 with Value

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

the class CSVDataImportProcess method setKeyValues.

private void setKeyValues(Entity entity, Value[] values, Map<FieldValueKey, String> colNamesByField, long row) {
    // create key attribute values by name
    Map<FieldValueKey, String> keyValuesByField = new HashMap<FieldValueKey, String>();
    EntityDefinition entityDefn = entity.getDefinition();
    List<AttributeDefinition> keyDefns = entityDefn.getKeyAttributeDefinitions();
    for (int i = 0; i < keyDefns.size(); i++) {
        AttributeDefinition keyDefn = keyDefns.get(i);
        Value keyValue = values[i];
        Map<String, Object> keyValueMap = keyValue.toMap();
        List<String> keyFieldNames = keyDefn.getKeyFieldNames();
        for (String keyFieldName : keyFieldNames) {
            Object keyValueFieldVal = keyValueMap.get(keyFieldName);
            keyValuesByField.put(new FieldValueKey(keyDefn, keyFieldName), keyValueFieldVal.toString());
        }
    }
    setValuesInAttributes(entity, keyValuesByField, colNamesByField, row);
}
Also used : EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) HashMap(java.util.HashMap) FieldValueKey(org.openforis.collect.io.data.DataLine.FieldValueKey) AbstractValue(org.openforis.idm.model.AbstractValue) Value(org.openforis.idm.model.Value) NumericAttributeDefinition(org.openforis.idm.metamodel.NumericAttributeDefinition) CoordinateAttributeDefinition(org.openforis.idm.metamodel.CoordinateAttributeDefinition) AttributeDefinition(org.openforis.idm.metamodel.AttributeDefinition) NumberAttributeDefinition(org.openforis.idm.metamodel.NumberAttributeDefinition)

Example 3 with Value

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

the class UpdateAttributeCommandHandler method execute.

@Override
public List<RecordEvent> execute(UpdateAttributeCommand command) {
    CollectRecord record = findRecord(command);
    Attribute<?, Value> attribute = findAttribute(command, record);
    Value value = extractValue(command);
    NodeChangeSet changeSet = recordUpdater.updateAttribute(attribute, value);
    recordManager.save(record);
    List<RecordEvent> events = new EventProducer().produceFor(changeSet, command.getUsername());
    return events;
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) NodeChangeSet(org.openforis.collect.model.NodeChangeSet) BooleanValue(org.openforis.idm.model.BooleanValue) Value(org.openforis.idm.model.Value) EventProducer(org.openforis.collect.event.EventProducer) RecordEvent(org.openforis.collect.event.RecordEvent)

Example 4 with Value

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

the class NodeBuilder method createAttribute.

private Attribute<?, ?> createAttribute(Entity parent) {
    AttributeDefinition def = (AttributeDefinition) parent.getDefinition().getChildDefinition(name);
    @SuppressWarnings("unchecked") Attribute<?, Value> attr = (Attribute<?, Value>) def.createNode();
    if (value != null) {
        if (value instanceof Value) {
            attr.setValue((Value) value);
        } else {
            attr.setValue(def.<Value>createValue(value.toString()));
        }
        attr.updateSummaryInfo();
    }
    return attr;
}
Also used : Attribute(org.openforis.idm.model.Attribute) Value(org.openforis.idm.model.Value) AttributeDefinition(org.openforis.idm.metamodel.AttributeDefinition)

Example 5 with Value

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

the class EntityKeyValidator method evaluate.

@Override
public ValidationResultFlag evaluate(Attribute<?, ?> keyAttribute) {
    Entity multipleEntity = keyAttribute.getNearestMultipleEntityAncestor();
    EntityDefinition multipleEntityDef = multipleEntity.getDefinition();
    if (multipleEntityDef.isRoot()) {
        return ValidationResultFlag.OK;
    }
    Value[] keyValues = multipleEntity.getKeyAttributeValues();
    if (keyValues == null) {
        return null;
    }
    List<Entity> entities = multipleEntity.getParent().findChildEntitiesByKeys(multipleEntityDef, keyValues);
    if (entities.size() > 1) {
        return ValidationResultFlag.ERROR;
    } else {
        return ValidationResultFlag.OK;
    }
}
Also used : Entity(org.openforis.idm.model.Entity) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) Value(org.openforis.idm.model.Value)

Aggregations

Value (org.openforis.idm.model.Value)26 AttributeDefinition (org.openforis.idm.metamodel.AttributeDefinition)9 EntityDefinition (org.openforis.idm.metamodel.EntityDefinition)8 AbstractValue (org.openforis.idm.model.AbstractValue)6 Attribute (org.openforis.idm.model.Attribute)6 BooleanValue (org.openforis.idm.model.BooleanValue)6 ArrayList (java.util.ArrayList)5 Entity (org.openforis.idm.model.Entity)5 NodeChangeSet (org.openforis.collect.model.NodeChangeSet)4 CodeAttributeDefinition (org.openforis.idm.metamodel.CodeAttributeDefinition)4 BooleanAttribute (org.openforis.idm.model.BooleanAttribute)4 EventProducer (org.openforis.collect.event.EventProducer)3 RecordEvent (org.openforis.collect.event.RecordEvent)3 CollectRecord (org.openforis.collect.model.CollectRecord)3 CollectSurvey (org.openforis.collect.model.CollectSurvey)3 CodeAttribute (org.openforis.idm.model.CodeAttribute)3 EntityKeysIdentifier (org.openforis.collect.io.data.DataLine.EntityKeysIdentifier)2 EntityPositionIdentifier (org.openforis.collect.io.data.DataLine.EntityPositionIdentifier)2 CollectRecordSummary (org.openforis.collect.model.CollectRecordSummary)2 BooleanAttributeDefinition (org.openforis.idm.metamodel.BooleanAttributeDefinition)2