Search in sources :

Example 6 with Entity

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

the class CSVDataImportProcess method setValuesInRecord.

private boolean setValuesInRecord(DataLine line, CollectRecord record, Step step) {
    // LOG.info("Setting values in record: " + record.getId() + "[" + record.getRootEntityKeyValues() + "]" + " step: " + step);
    record.setStep(step);
    Entity parentEntity = getOrCreateParentEntity(record, line);
    if (parentEntity == null) {
        // TODO add parsing error?
        return false;
    } else {
        setValuesInAttributes(parentEntity, line);
        return true;
    }
}
Also used : Entity(org.openforis.idm.model.Entity)

Example 7 with Entity

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

the class DataRestoreSummaryTask method findAlreadyExistingFullRecordSummary.

private CollectRecordSummary findAlreadyExistingFullRecordSummary(int entryId, Step step, CollectRecord parsedRecord) {
    List<String> keyValues = parsedRecord.getRootEntityKeyValues();
    Entity rootEntity = parsedRecord.getRootEntity();
    int rootEntityDefId = rootEntity.getDefinition().getId();
    RecordFilter filter = new RecordFilter(survey);
    filter.setRootEntityId(rootEntityDefId);
    filter.setKeyValues(keyValues);
    List<CollectRecordSummary> oldRecordSummaries = recordManager.loadSummaries(filter);
    if (oldRecordSummaries == null || oldRecordSummaries.isEmpty()) {
        return null;
    } else if (oldRecordSummaries.size() == 1) {
        CollectRecordSummary summary = oldRecordSummaries.get(0);
        CollectRecord record = recordManager.load(survey, summary.getId(), summary.getStep(), fullSummary);
        CollectRecordSummary recordSummary = CollectRecordSummary.fromRecord(record);
        recordSummary.setFiles(recordFileManager.getAllFiles(record));
        return recordSummary;
    } else {
        String errorMessage = String.format("Data file: %s - multiple records found in survey %s with key(s) %s", getEntryName(entryId, step), survey.getName(), keyValues);
        throw new IllegalStateException(errorMessage);
    }
}
Also used : Entity(org.openforis.idm.model.Entity) CollectRecord(org.openforis.collect.model.CollectRecord) CollectRecordSummary(org.openforis.collect.model.CollectRecordSummary) RecordFilter(org.openforis.collect.model.RecordFilter)

Example 8 with Entity

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

the class AddNodeCommandHandler method execute.

@Override
public List<RecordEvent> execute(C command) {
    CollectRecord record = findRecord(command);
    Entity parentEntity = record.findNodeByPath(command.getParentEntityPath());
    NodeDefinition nodeDef = parentEntity.getDefinition().getChildDefinition(command.getNodeDefId());
    NodeChangeSet changeSet = recordUpdater.addNode(parentEntity, nodeDef);
    recordManager.save(record);
    List<RecordEvent> events = new EventProducer().produceFor(changeSet, command.getUsername());
    return events;
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) Entity(org.openforis.idm.model.Entity) NodeChangeSet(org.openforis.collect.model.NodeChangeSet) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition) EventProducer(org.openforis.collect.event.EventProducer) RecordEvent(org.openforis.collect.event.RecordEvent)

Example 9 with Entity

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

the class EventProducer method produceFor.

public List<RecordEvent> produceFor(CollectRecord record, final String userName) {
    final List<RecordEvent> events = new ArrayList<RecordEvent>();
    final Integer recordId = record.getId();
    final RecordStep recordStep = record.getStep().toRecordStep();
    record.getRootEntity().traverse(new NodeVisitor() {

        public void visit(Node<? extends NodeDefinition> node, int idx) {
            NodeDefinition nodeDef = node.getDefinition();
            List<String> ancestorIds = getAncestorIds(nodeDef, node.getAncestorIds());
            EventFactory factory = new EventFactory(recordId, recordStep, ancestorIds, node, userName);
            if (node instanceof Entity) {
                events.addAll(factory.entityCreated());
            } else if (node instanceof Attribute) {
                if (nodeDef.isMultiple()) {
                    events.addAll(factory.attributeCreated());
                } else {
                    events.addAll(factory.attributeUpdated());
                }
            }
        }
    });
    return events;
}
Also used : Entity(org.openforis.idm.model.Entity) CoordinateAttribute(org.openforis.idm.model.CoordinateAttribute) CodeAttribute(org.openforis.idm.model.CodeAttribute) Attribute(org.openforis.idm.model.Attribute) DateAttribute(org.openforis.idm.model.DateAttribute) TimeAttribute(org.openforis.idm.model.TimeAttribute) NumberAttribute(org.openforis.idm.model.NumberAttribute) BooleanAttribute(org.openforis.idm.model.BooleanAttribute) TextAttribute(org.openforis.idm.model.TextAttribute) NumericRangeAttribute(org.openforis.idm.model.NumericRangeAttribute) TaxonAttribute(org.openforis.idm.model.TaxonAttribute) ArrayList(java.util.ArrayList) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition) NodeVisitor(org.openforis.idm.model.NodeVisitor) ArrayList(java.util.ArrayList) Arrays.asList(java.util.Arrays.asList) Collections.emptyList(java.util.Collections.emptyList) List(java.util.List)

Example 10 with Entity

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

the class RecordDaoTest method createRecord.

private CollectRecord createRecord(CollectSurvey survey, int sequenceNumber) {
    int skippedCount = new Double(Math.ceil((double) (Math.random() * 40))).intValue();
    int missingCount = new Double(Math.ceil((double) (Math.random() * 50))).intValue();
    int errorsCount = new Double(Math.ceil((double) (Math.random() * 10))).intValue();
    int warningsCount = new Double(Math.ceil((double) (Math.random() * 30))).intValue();
    int numberOfPlots = new Double(Math.ceil((double) (Math.random() * 20))).intValue();
    int numberOfTrees = new Double(Math.ceil((double) (Math.random() * 30))).intValue();
    ;
    CollectRecord record = new CollectRecord(recordManager, survey, "2.0");
    record.setCreationDate(new GregorianCalendar(2011, 0, sequenceNumber, 8, 30).getTime());
    // record.setCreatedBy("ModelDaoIntegrationTest");
    record.setStep(Step.ENTRY);
    record.setModifiedDate(new GregorianCalendar(2011, 1, sequenceNumber, 8, 30).getTime());
    record.setSkipped(skippedCount);
    record.setMissing(missingCount);
    record.setErrors(errorsCount);
    record.setWarnings(warningsCount);
    Entity cluster = record.createRootEntity("cluster");
    String keyId = Integer.toString(sequenceNumber);
    EntityBuilder.addValue(cluster, "id", new Code(keyId));
    EntityBuilder.addValue(cluster, "gps_realtime", Boolean.TRUE);
    EntityBuilder.addValue(cluster, "region", new Code("001"));
    EntityBuilder.addValue(cluster, "district", new Code("002"));
    EntityBuilder.addValue(cluster, "vehicle_location", new Coordinate(432423423l, 4324324l, "srs"));
    EntityBuilder.addValue(cluster, "gps_model", "TomTom 1.232");
    {
        Entity ts = EntityBuilder.addEntity(cluster, "time_study");
        ts.addValue("date", new Date(2011, 2, 14));
        ts.addValue("start_time", new Time(8, 15));
        ts.addValue("end_time", new Time(15, 29));
    }
    {
        Entity ts = EntityBuilder.addEntity(cluster, "time_study");
        ts.addValue("date", new Date(2011, 2, 15));
        ts.addValue("start_time", new Time(8, 32));
        ts.addValue("end_time", new Time(11, 20));
    }
    for (int i = 0; i < numberOfPlots; i++) {
        Entity plot = EntityBuilder.addEntity(cluster, "plot");
        EntityBuilder.addValue(plot, "no", new Code(Integer.toString(i + 1)));
        for (int j = 0; j < numberOfTrees; j++) {
            Entity tree = EntityBuilder.addEntity(plot, "tree");
            tree.addValue("dbh", 54.2);
            tree.addValue("total_height", 2.0);
            RealAttribute boleHeight = tree.addValue("bole_height", (Double) null);
            boleHeight.getField().setSymbol('*');
            boleHeight.getField().setRemarks("No value specified");
        // .setMetadata(new CollectAttributeMetadata('*',null,"No value specified"));
        }
    }
    // set counts
    record.getEntityCounts().add(numberOfPlots);
    // set keys
    record.getRootEntityKeys().add(keyId);
    return record;
}
Also used : CollectRecord(org.openforis.collect.model.CollectRecord) Entity(org.openforis.idm.model.Entity) Coordinate(org.openforis.idm.model.Coordinate) RealAttribute(org.openforis.idm.model.RealAttribute) GregorianCalendar(java.util.GregorianCalendar) Time(org.openforis.idm.model.Time) Code(org.openforis.idm.model.Code) Date(org.openforis.idm.model.Date)

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