Search in sources :

Example 46 with Entity

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

Example 47 with Entity

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

the class RecordUpdaterTest method testCardinalityRevalidatedOnAttributeUpdate.

@Test
public void testCardinalityRevalidatedOnAttributeUpdate() {
    record(rootEntityDef(attributeDef("min_time_study"), entityDef("time_study", attributeDef("start_time")).multiple().minCount("min_time_study")), attribute("min_time_study", "2"), entity("time_study", attribute("start_time", "2011")), entity("time_study", attribute("start_time", "2012")));
    Entity rootEntity = record.getRootEntity();
    assertEquals(ValidationResultFlag.OK, rootEntity.getMinCountValidationResult("time_study"));
    Attribute<?, ?> minTimeStudy = record.findNodeByPath("/root/min_time_study");
    NodeChangeSet nodeChangeSet = update(minTimeStudy, "3");
    assertNotNull(nodeChangeSet.getChange(rootEntity));
    assertEquals(ValidationResultFlag.ERROR, rootEntity.getMinCountValidationResult("time_study"));
}
Also used : Entity(org.openforis.idm.model.Entity) Test(org.junit.Test)

Example 48 with Entity

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

the class RecordUpdaterTest method testRemoveEntityWithCalculatedAttribute.

@Test
public void testRemoveEntityWithCalculatedAttribute() {
    record(rootEntityDef(entityDef("plot_details", attributeDef("dbh_sum").calculated("sum(parent()/tree/dbh)"), attributeDef("tree_health").relevant("dbh_sum > 0").required()), entityDef("tree", attributeDef("dbh")).multiple()), entity("plot_details", attribute("dbh_sum"), attribute("tree_health")), entity("tree", attribute("dbh", "1")));
    Entity plotDetails = entityByPath("/root/plot_details");
    Entity tree1 = entityByPath("/root/tree[1]");
    NodeChangeSet changeSet = updater.deleteNode(tree1);
    Attribute<?, ?> dbhSum = (Attribute<?, ?>) plotDetails.getChild("dbh_sum");
    assertEquals(new TextValue("0.0"), dbhSum.getValue());
    NodeChange<?> dbhSumChange = changeSet.getChange(dbhSum);
    assertNotNull(dbhSumChange);
}
Also used : Entity(org.openforis.idm.model.Entity) Attribute(org.openforis.idm.model.Attribute) TextAttribute(org.openforis.idm.model.TextAttribute) TextValue(org.openforis.idm.model.TextValue) Test(org.junit.Test)

Example 49 with Entity

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

the class RecordUpdaterTest method testCardinalityRevalidatedOnRequiredAttributeUpdate.

@Test
public void testCardinalityRevalidatedOnRequiredAttributeUpdate() {
    record(rootEntityDef(attributeDef("source"), attributeDef("dependent").required("source = 1")), attribute("source", "2"), attribute("dependent", null));
    Entity rootEntity = record.getRootEntity();
    assertEquals(ValidationResultFlag.OK, rootEntity.getMinCountValidationResult("dependent"));
    Attribute<?, ?> source = record.findNodeByPath("/root/source");
    NodeChangeSet nodeChangeSet = update(source, "1");
    EntityChange rootEntityChange = (EntityChange) nodeChangeSet.getChange(rootEntity);
    assertNotNull(rootEntityChange);
    ValidationResultFlag dependentValidationResult = rootEntityChange.getChildrenMinCountValidation().get("dependent");
    assertEquals(ValidationResultFlag.ERROR, dependentValidationResult);
    assertEquals(ValidationResultFlag.ERROR, rootEntity.getMinCountValidationResult("dependent"));
}
Also used : Entity(org.openforis.idm.model.Entity) ValidationResultFlag(org.openforis.idm.metamodel.validation.ValidationResultFlag) Test(org.junit.Test)

Example 50 with Entity

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

the class RecordUpdaterTest method testMinCountValidationInitializedOnNestedEntity.

@Test
public void testMinCountValidationInitializedOnNestedEntity() {
    record(rootEntityDef(entityDef("time_study", attributeDef("start_time").required()).minCount("1")));
    Entity timeStudy = entityByPath("/root/time_study");
    assertEquals(ValidationResultFlag.ERROR, timeStudy.getMinCountValidationResult("start_time"));
}
Also used : Entity(org.openforis.idm.model.Entity) Test(org.junit.Test)

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