Search in sources :

Example 6 with Path

use of org.openforis.idm.path.Path in project collect by openforis.

the class DataTableDataExtractor method extractDataInternal.

private void extractDataInternal(DataTable table, Node<?> source, Dataset data) {
    // Extract data from this node
    Row row = extractRow(source);
    data.addRow(row);
    // Extract data from descendants
    for (DataTable childTable : table.getChildTables()) {
        Path path = childTable.getRelativePath();
        List<Node<?>> children = path.evaluate(source);
        for (Node<?> child : children) {
            extractDataInternal(childTable, child, data);
        }
    }
}
Also used : Path(org.openforis.idm.path.Path) DataTable(org.openforis.collect.relational.model.DataTable) Node(org.openforis.idm.model.Node) Row(org.openforis.collect.relational.data.Row)

Example 7 with Path

use of org.openforis.idm.path.Path in project collect by openforis.

the class RelationalSchemaGenerator method addAncestorKeyColumns.

protected void addAncestorKeyColumns(DataTable table) throws CollectRdbException {
    NodeDefinition nodeDefn = table.getNodeDefinition();
    List<EntityDefinition> ancestors = nodeDefn.getAncestorEntityDefinitionsInReverseOrder();
    for (int levelIdx = 0; levelIdx < ancestors.size(); levelIdx++) {
        EntityDefinition ancestor = ancestors.get(levelIdx);
        List<AttributeDefinition> keyAttrDefns = ancestor.getKeyAttributeDefinitions();
        for (AttributeDefinition keyDefn : keyAttrDefns) {
            FieldDefinition<?> fieldDefn = getKeyAttributeValueFieldDefinition(keyDefn);
            Path fieldRelativePath = createAncestorKeyRelativePath(ancestors.size() - levelIdx, fieldDefn);
            String colName = getAncestorKeyColumnName(keyDefn);
            AncestorKeyColumn col = new AncestorKeyColumn(colName, fieldDefn, fieldRelativePath);
            addColumn(table, col);
        }
    }
}
Also used : Path(org.openforis.idm.path.Path) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition) CoordinateAttributeDefinition(org.openforis.idm.metamodel.CoordinateAttributeDefinition) AttributeDefinition(org.openforis.idm.metamodel.AttributeDefinition) CodeAttributeDefinition(org.openforis.idm.metamodel.CodeAttributeDefinition) TextAttributeDefinition(org.openforis.idm.metamodel.TextAttributeDefinition) NumericAttributeDefinition(org.openforis.idm.metamodel.NumericAttributeDefinition) DateAttributeDefinition(org.openforis.idm.metamodel.DateAttributeDefinition) NumberAttributeDefinition(org.openforis.idm.metamodel.NumberAttributeDefinition) TimeAttributeDefinition(org.openforis.idm.metamodel.TimeAttributeDefinition) BooleanAttributeDefinition(org.openforis.idm.metamodel.BooleanAttributeDefinition)

Example 8 with Path

use of org.openforis.idm.path.Path in project collect by openforis.

the class RelationalSchemaGenerator method createAncestorKeyRelativePath.

protected Path createAncestorKeyRelativePath(int depth, FieldDefinition<?> field) {
    Path result = Path.relative(".");
    for (int i = 0; i < depth; i++) {
        result = result.append(new PathElement(".."));
    }
    NodeDefinition parentDefn = field.getParentDefinition();
    result = result.appendElement(parentDefn.getName());
    result = result.appendElement(field.getName());
    return result;
}
Also used : Path(org.openforis.idm.path.Path) PathElement(org.openforis.idm.path.PathElement) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition)

Aggregations

Path (org.openforis.idm.path.Path)8 EntityDefinition (org.openforis.idm.metamodel.EntityDefinition)5 NodeDefinition (org.openforis.idm.metamodel.NodeDefinition)4 CollectSurvey (org.openforis.collect.model.CollectSurvey)2 AttributeDefinition (org.openforis.idm.metamodel.AttributeDefinition)2 BooleanAttributeDefinition (org.openforis.idm.metamodel.BooleanAttributeDefinition)2 CodeAttributeDefinition (org.openforis.idm.metamodel.CodeAttributeDefinition)2 CoordinateAttributeDefinition (org.openforis.idm.metamodel.CoordinateAttributeDefinition)2 DateAttributeDefinition (org.openforis.idm.metamodel.DateAttributeDefinition)2 NumberAttributeDefinition (org.openforis.idm.metamodel.NumberAttributeDefinition)2 NumericAttributeDefinition (org.openforis.idm.metamodel.NumericAttributeDefinition)2 TextAttributeDefinition (org.openforis.idm.metamodel.TextAttributeDefinition)2 TimeAttributeDefinition (org.openforis.idm.metamodel.TimeAttributeDefinition)2 Transformation (org.openforis.idm.transform2.Transformation)2 LinkedList (java.util.LinkedList)1 List (java.util.List)1 CollectAnnotations (org.openforis.collect.metamodel.CollectAnnotations)1 Row (org.openforis.collect.relational.data.Row)1 DataTable (org.openforis.collect.relational.model.DataTable)1 Schema (org.openforis.idm.metamodel.Schema)1