Search in sources :

Example 11 with Unit

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

the class CSVDataImportProcess method setUnitField.

private void setUnitField(Attribute<?, ?> attr, String value, long row, String colName) {
    if (StringUtils.isBlank(value)) {
        ((NumberAttribute<?, ?>) attr).setUnit(null);
    } else {
        Survey survey = attr.getSurvey();
        Unit unit = survey.getUnit(value);
        NumericAttributeDefinition defn = (NumericAttributeDefinition) attr.getDefinition();
        if (unit == null || !defn.getUnits().contains(unit)) {
            ParsingError parsingError = new ParsingError(ErrorType.INVALID_VALUE, row, colName, UNIT_NOT_FOUND_MESSAGE_KEY);
            parsingError.setMessageArgs(new String[] { value });
            status.addParsingError(parsingError);
        } else {
            Field<Integer> field = ((NumberAttribute<?, ?>) attr).getUnitField();
            NodeChangeSet changes = recordUpdater.updateField(field, unit.getId());
            if (nodeChangeBatchProcessor != null) {
                nodeChangeBatchProcessor.add(changes, adminUser.getUsername());
            }
        }
    }
}
Also used : NodeChangeSet(org.openforis.collect.model.NodeChangeSet) CollectSurvey(org.openforis.collect.model.CollectSurvey) Survey(org.openforis.idm.metamodel.Survey) ParsingError(org.openforis.collect.io.metadata.parsing.ParsingError) NumberAttribute(org.openforis.idm.model.NumberAttribute) Unit(org.openforis.idm.metamodel.Unit) NumericAttributeDefinition(org.openforis.idm.metamodel.NumericAttributeDefinition)

Example 12 with Unit

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

the class NumberColumnProvider method extractValue.

@Override
protected String extractValue(Attribute<?, ?> attr, String fieldName) {
    if (NumberAttributeDefinition.UNIT_NAME_FIELD.equals(fieldName)) {
        NumberAttribute<?, ?> numAttr = (NumberAttribute<?, ?>) attr;
        Unit unit = numAttr.getUnit();
        if (unit == null) {
            return "";
        } else {
            return unit.getName();
        }
    } else {
        return super.extractValue(attr, fieldName);
    }
}
Also used : NumberAttribute(org.openforis.idm.model.NumberAttribute) Unit(org.openforis.idm.metamodel.Unit)

Example 13 with Unit

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

the class JSONValueParser method parseRealRange.

public RealRange parseRealRange(RangeAttributeDefinition attrDef, String value) {
    Map<String, Object> map = parseJSONToMap(value);
    if (map == null) {
        return null;
    }
    Double from = getDouble(map, RealRange.FROM_FIELD);
    Double to = getDouble(map, RealRange.TO_FIELD);
    if (to == null) {
        to = from;
    }
    Integer unitId = getInteger(map, RealRange.UNIT_ID_FIELD);
    Unit unit = attrDef.getActualUnit(unitId);
    return new RealRange(from, to, unit);
}
Also used : RealRange(org.openforis.idm.model.RealRange) Unit(org.openforis.idm.metamodel.Unit)

Example 14 with Unit

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

the class JSONValueParser method parseReal.

public RealValue parseReal(NumberAttributeDefinition attrDef, String value) {
    Map<String, Object> map = parseJSONToMap(value, RealValue.VALUE_FIELD);
    if (map == null) {
        return null;
    }
    Integer unitId = getInteger(map, RealValue.UNIT_ID_FIELD);
    Unit unit = attrDef.getActualUnit(unitId);
    return new RealValue(getDouble(map, RealValue.VALUE_FIELD), unit);
}
Also used : RealValue(org.openforis.idm.model.RealValue) Unit(org.openforis.idm.metamodel.Unit)

Example 15 with Unit

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

the class BaseAttributeUpdateRequestProxy method parseCompositeAttributeValue.

protected Value parseCompositeAttributeValue(CodeListManager codeListManager, Entity parentEntity, String attributeName, Object value) {
    EntityDefinition parentEntityDefn = parentEntity.getDefinition();
    AttributeDefinition defn = (AttributeDefinition) parentEntityDefn.getChildDefinition(attributeName);
    if (defn instanceof CodeAttributeDefinition) {
        if (value instanceof String) {
            String stringVal = (String) value;
            Value result = parseCode(codeListManager, parentEntity, (CodeAttributeDefinition) defn, stringVal);
            return result;
        } else {
            throw new IllegalArgumentException("Invalid value type: expected String");
        }
    } else if (defn instanceof RangeAttributeDefinition) {
        if (value instanceof String) {
            String stringVal = (String) value;
            RangeAttributeDefinition rangeDef = (RangeAttributeDefinition) defn;
            RangeAttributeDefinition.Type type = rangeDef.getType();
            NumericRange<?> range = null;
            // todo check if unit is required here or is set later by the client
            Unit unit = null;
            switch(type) {
                case INTEGER:
                    range = IntegerRange.parseIntegerRange(stringVal, unit);
                    break;
                case REAL:
                    range = RealRange.parseRealRange(stringVal, unit);
                    break;
            }
            return range;
        } else {
            throw new IllegalArgumentException("Invalid value type: expected String");
        }
    } else {
        throw new IllegalArgumentException("Invalid AttributeDefinition: expected CodeAttributeDefinition or RangeAttributeDefinition");
    }
}
Also used : NumericRange(org.openforis.idm.model.NumericRange) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) CodeAttributeDefinition(org.openforis.idm.metamodel.CodeAttributeDefinition) Value(org.openforis.idm.model.Value) AttributeDefinition(org.openforis.idm.metamodel.AttributeDefinition) CodeAttributeDefinition(org.openforis.idm.metamodel.CodeAttributeDefinition) RangeAttributeDefinition(org.openforis.idm.metamodel.RangeAttributeDefinition) Unit(org.openforis.idm.metamodel.Unit) RangeAttributeDefinition(org.openforis.idm.metamodel.RangeAttributeDefinition)

Aggregations

Unit (org.openforis.idm.metamodel.Unit)23 CollectSurvey (org.openforis.collect.model.CollectSurvey)3 RangeAttributeDefinition (org.openforis.idm.metamodel.RangeAttributeDefinition)3 Test (org.junit.Test)2 NumberAttributeDefinition (org.openforis.idm.metamodel.NumberAttributeDefinition)2 IntegerRange (org.openforis.idm.model.IntegerRange)2 NumberAttribute (org.openforis.idm.model.NumberAttribute)2 RealAttribute (org.openforis.idm.model.RealAttribute)2 RealRange (org.openforis.idm.model.RealRange)2 ParsingError (org.openforis.collect.io.metadata.parsing.ParsingError)1 NodeChangeSet (org.openforis.collect.model.NodeChangeSet)1 AttributeDefinition (org.openforis.idm.metamodel.AttributeDefinition)1 CodeAttributeDefinition (org.openforis.idm.metamodel.CodeAttributeDefinition)1 EntityDefinition (org.openforis.idm.metamodel.EntityDefinition)1 NumericAttributeDefinition (org.openforis.idm.metamodel.NumericAttributeDefinition)1 Survey (org.openforis.idm.metamodel.Survey)1 IntegerRangeAttribute (org.openforis.idm.model.IntegerRangeAttribute)1 IntegerValue (org.openforis.idm.model.IntegerValue)1 NumericRange (org.openforis.idm.model.NumericRange)1 RealValue (org.openforis.idm.model.RealValue)1