Search in sources :

Example 36 with Code

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

the class CollectRecordIntegrationTest method testUpdateValue.

@Test
public void testUpdateValue() throws Exception {
    CollectSurvey survey = loadSurvey();
    CollectRecord record = createTestRecord(survey);
    Entity cluster = record.getRootEntity();
    CodeAttribute region = (CodeAttribute) cluster.getChild("region", 0);
    {
        NodeChangeSet nodeChangeSet = recordUpdater.updateAttribute(region, FieldSymbol.BLANK_ON_FORM);
        assertTrue(region.isEmpty());
        assertEquals(FieldSymbol.BLANK_ON_FORM, FieldSymbol.valueOf(region.getCodeField().getSymbol()));
        assertEquals(FieldSymbol.BLANK_ON_FORM, FieldSymbol.valueOf(region.getQualifierField().getSymbol()));
        NodeChange<?> regionChange = nodeChangeSet.getChange(region);
        assertTrue(regionChange instanceof AttributeChange);
        assertEquals(region, regionChange.getNode());
        Map<Integer, Object> updatedFieldValues = ((AttributeChange) regionChange).getUpdatedFieldValues();
        Map<Integer, Object> expectedValues = new HashMap<Integer, Object>();
        expectedValues.put(Integer.valueOf(0), null);
        expectedValues.put(Integer.valueOf(1), null);
        assertEquals(expectedValues, updatedFieldValues);
    }
    {
        NodeChangeSet nodeChangeSet = recordUpdater.updateAttribute(region, new Code("AAA"));
        assertFalse(region.isEmpty());
        assertEquals(null, FieldSymbol.valueOf(region.getCodeField().getSymbol()));
        assertEquals(null, FieldSymbol.valueOf(region.getQualifierField().getSymbol()));
        NodeChange<?> regionChange = nodeChangeSet.getChange(region);
        assertTrue(regionChange instanceof AttributeChange);
        assertEquals(region, regionChange.getNode());
        Map<Integer, Object> updatedFieldValues = ((AttributeChange) regionChange).getUpdatedFieldValues();
        Map<Integer, Object> expectedValues = new HashMap<Integer, Object>();
        expectedValues.put(Integer.valueOf(0), "AAA");
        expectedValues.put(Integer.valueOf(1), null);
        assertEquals(expectedValues, updatedFieldValues);
    }
}
Also used : Entity(org.openforis.idm.model.Entity) CodeAttribute(org.openforis.idm.model.CodeAttribute) HashMap(java.util.HashMap) Map(java.util.Map) Code(org.openforis.idm.model.Code) CollectIntegrationTest(org.openforis.collect.CollectIntegrationTest) Test(org.junit.Test)

Example 37 with Code

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

the class CollectRecordIntegrationTest method testMultipleCodeListLevelValidation.

@Test
public void testMultipleCodeListLevelValidation() {
    CollectRecord record = createTestMultipleCodeListLevelRecord();
    assertEquals(Integer.valueOf(0), record.getErrors());
    assertEquals(Integer.valueOf(0), record.getWarnings());
    Entity rootEntity = record.getRootEntity();
    CodeAttribute code1 = (CodeAttribute) rootEntity.getChild("code1", 0);
    CodeAttribute code2 = (CodeAttribute) rootEntity.getChild("code2", 0);
    CodeAttribute code3 = (CodeAttribute) rootEntity.getChild("code3", 0);
    recordUpdater.updateAttribute(code1, new Code("WRONG"));
    assertEquals(Integer.valueOf(1), record.getErrors());
    assertEquals(Integer.valueOf(2), record.getWarnings());
    checkHasError(record, code1.getInternalId(), CodeValidator.class);
    checkHasWarning(record, code2.getInternalId(), CodeParentValidator.class);
    checkHasWarning(record, code3.getInternalId(), CodeParentValidator.class);
    recordUpdater.updateAttribute(code1, new Code("A"));
    assertEquals(Integer.valueOf(0), record.getErrors());
    assertEquals(Integer.valueOf(0), record.getWarnings());
    recordUpdater.updateAttribute(code2, new Code("WRONG"));
    assertEquals(Integer.valueOf(1), record.getErrors());
    assertEquals(Integer.valueOf(1), record.getWarnings());
    checkHasError(record, code2.getInternalId(), CodeValidator.class);
    checkHasWarning(record, code3.getInternalId(), CodeParentValidator.class);
}
Also used : Entity(org.openforis.idm.model.Entity) CodeAttribute(org.openforis.idm.model.CodeAttribute) Code(org.openforis.idm.model.Code) CollectIntegrationTest(org.openforis.collect.CollectIntegrationTest) Test(org.junit.Test)

Example 38 with Code

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

the class CollectRecordIntegrationTest method createTestMultipleCodeListLevelRecord.

@SuppressWarnings("unchecked")
private CollectRecord createTestMultipleCodeListLevelRecord() {
    CollectSurvey survey = createMultipleLevelCodeListTestSurvey();
    CollectRecord record = new CollectRecord(survey, null, "root");
    record.setCreationDate(new GregorianCalendar(2011, 11, 31, 23, 59).getTime());
    record.setStep(Step.ENTRY);
    recordUpdater.initializeRecord(record);
    recordUpdater.updateAttribute((Attribute<?, Code>) record.findNodeByPath("root/code1"), new Code("A"));
    recordUpdater.updateAttribute((Attribute<?, Code>) record.findNodeByPath("root/code2"), new Code("2"));
    recordUpdater.updateAttribute((Attribute<?, Code>) record.findNodeByPath("root/code3"), new Code("b"));
    return record;
}
Also used : GregorianCalendar(java.util.GregorianCalendar) Code(org.openforis.idm.model.Code)

Example 39 with Code

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

the class DataMarshallerIntegrationTest method createTestRecord.

private CollectRecord createTestRecord(CollectSurvey survey) {
    RecordBuilder recordBuilder = record(attribute("id", "123_456"), attribute("gps_realtime", "true"), attribute("region", "001"), attribute("district", "XXX"), attribute("crew_no", 10), attribute("map_sheet", "value 1"), attribute("map_sheet", "value 2"), attribute("vehicle_location", new Coordinate(432423423d, 4324324d, "srs")), attribute("gps_model", "TomTom 1.232"), attribute("remarks", "Remarks with UTF-8 character: Í"), entity("time_study", attribute("date", new Date(2011, 2, 14)), attribute("start_time", new Time(8, 15)), attribute("end_time", new Time(15, 29))), entity("time_study", attribute("date", new Date(2011, 2, 15)), attribute("start_time", new Time(8, 32)), attribute("end_time", new Time(11, 20))), entity("plot", attribute("no", new Code("1")), entity("tree", attribute("tree_no", 1), attribute("dbh", 54.2), attribute("total_height", 2.0), attribute("bole_height", (Double) null)), entity("tree", attribute("tree_no", 2), attribute("dbh", 82.8), attribute("total_height", 3.0))), entity("plot", attribute("no", new Code("2")), entity("tree", attribute("tree_no", 1), attribute("dbh", 34.2), attribute("total_height", 2.0)), entity("tree", attribute("tree_no", 2), attribute("dbh", 85.8), attribute("total_height", 4.0))));
    CollectRecord record = recordBuilder.build(survey, "cluster", "2.0");
    User user = userManager.loadByUserName("admin");
    record.setCreatedBy(user);
    record.setModifiedBy(user);
    record.setCreationDate(new GregorianCalendar(2011, 11, 31, 23, 59).getTime());
    record.setModifiedDate(new GregorianCalendar(2012, 2, 3, 9, 30).getTime());
    record.setStep(Step.ENTRY);
    record.setState(State.REJECTED);
    record.updateSummaryFields();
    RecordUpdater recordUpdater = new RecordUpdater();
    recordUpdater.initializeRecord(record);
    Entity cluster = record.getRootEntity();
    recordUpdater.confirmError((Attribute<?, ?>) record.findNodeByPath("/cluster/district"));
    recordUpdater.approveMissingValue(cluster, "accessibility");
    NumberAttribute<?, ?> boleHeight = (NumberAttribute<?, ?>) record.findNodeByPath("/cluster/plot[1]/tree[1]/bole_height");
    recordUpdater.updateAttribute(boleHeight, FieldSymbol.BLANK_ON_FORM);
    recordUpdater.updateRemarks(boleHeight.getNumberField(), "No value specified");
    return record;
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) Entity(org.openforis.idm.model.Entity) User(org.openforis.collect.model.User) RecordBuilder(org.openforis.idm.testfixture.RecordBuilder) GregorianCalendar(java.util.GregorianCalendar) Time(org.openforis.idm.model.Time) Code(org.openforis.idm.model.Code) Date(org.openforis.idm.model.Date) Coordinate(org.openforis.idm.model.Coordinate) NumberAttribute(org.openforis.idm.model.NumberAttribute) RecordUpdater(org.openforis.collect.model.RecordUpdater)

Example 40 with Code

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

the class ModelSerializationTest method createTestRecord.

private CollectRecord createTestRecord(CollectSurvey survey) {
    RecordBuilder recordBuilder = record(attribute("id", new Code("123_456")), attribute("gps_realtime", "true"), attribute("region", "001"), attribute("district", "002"), attribute("crew_no", 10), attribute("map_sheet", "value 1"), attribute("map_sheet", "value 2"), attribute("vehicle_location", new Coordinate(432423423d, 4324324d, "srs")), attribute("gps_model", "TomTom 1.232"), entity("time_study", attribute("date", new Date(2011, 2, 14)), attribute("start_time", new Time(8, 15)), attribute("end_time", new Time(15, 29))), entity("time_study", attribute("date", new Date(2011, 2, 15)), attribute("start_time", new Time(8, 32)), attribute("end_time", new Time(11, 20))), entity("plot", attribute("no", new Code("1")), entity("tree", attribute("tree_no", 1), attribute("dbh", 54.2), attribute("total_height", 2.0), attribute("bole_height", (Double) null)), entity("tree", attribute("tree_no", 2), attribute("dbh", 82.8), attribute("total_height", 3.0))), entity("plot", attribute("no", new Code("2")), entity("tree", attribute("tree_no", 1), attribute("dbh", 34.2), attribute("total_height", 2.0)), entity("tree", attribute("tree_no", 2), attribute("dbh", 85.8), attribute("total_height", 4.0))));
    CollectRecord record = recordBuilder.build(survey, "cluster", "2.0");
    record.setCreationDate(new GregorianCalendar(2011, 11, 31, 23, 59).getTime());
    // record.setCreatedBy("ModelDaoIntegrationTest");
    record.setStep(Step.ENTRY);
    record.updateSummaryFields();
    updater.initializeRecord(record);
    Entity cluster = record.getRootEntity();
    updater.confirmError((Attribute<?, ?>) record.findNodeByPath("/cluster/district"));
    updater.approveMissingValue(cluster, "accessibility");
    NumberAttribute<?, ?> boleHeight = (NumberAttribute<?, ?>) record.findNodeByPath("/cluster/plot[1]/tree[1]/bole_height");
    updater.updateAttribute(boleHeight, FieldSymbol.BLANK_ON_FORM);
    updater.updateRemarks(boleHeight.getNumberField(), "No value specified");
    return record;
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) Entity(org.openforis.idm.model.Entity) Coordinate(org.openforis.idm.model.Coordinate) RecordBuilder(org.openforis.idm.testfixture.RecordBuilder) GregorianCalendar(java.util.GregorianCalendar) NumberAttribute(org.openforis.idm.model.NumberAttribute) Time(org.openforis.idm.model.Time) Code(org.openforis.idm.model.Code) Date(org.openforis.idm.model.Date)

Aggregations

Code (org.openforis.idm.model.Code)68 Test (org.junit.Test)45 Entity (org.openforis.idm.model.Entity)35 CodeAttribute (org.openforis.idm.model.CodeAttribute)16 AbstractTest (org.openforis.idm.AbstractTest)14 Coordinate (org.openforis.idm.model.Coordinate)14 Date (org.openforis.idm.model.Date)10 Time (org.openforis.idm.model.Time)10 CollectRecord (org.openforis.collect.model.CollectRecord)9 RealAttribute (org.openforis.idm.model.RealAttribute)9 GregorianCalendar (java.util.GregorianCalendar)8 CodeAttributeDefinition (org.openforis.idm.metamodel.CodeAttributeDefinition)6 CodeList (org.openforis.idm.metamodel.CodeList)6 CollectIntegrationTest (org.openforis.collect.CollectIntegrationTest)5 CoordinateAttribute (org.openforis.idm.model.CoordinateAttribute)5 RecordUpdater (org.openforis.collect.model.RecordUpdater)4 ModelVersion (org.openforis.idm.metamodel.ModelVersion)4 ValidationResults (org.openforis.idm.metamodel.validation.ValidationResults)4 Node (org.openforis.idm.model.Node)4 User (org.openforis.collect.model.User)3