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);
}
}
}
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);
}
}
}
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;
}
Aggregations