Search in sources :

Example 1 with Path

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

the class RelationalTransformer method initDataTableTransformations.

/**
 * Recursively init table transformations
 * @param defn
 */
private void initDataTableTransformations(EntityDefinition defn) {
    List<NodeDefinition> children = defn.getChildDefinitions();
    for (NodeDefinition child : children) {
        if (child instanceof EntityDefinition) {
            initDataTableTransformations((EntityDefinition) child);
        }
    }
    if (defn.isMultiple()) {
        Transformation xform = Transformation.createDefaultTransformation(defn);
        Path path = (Path) xform.getRowAxis();
        dataTransforms.put(path, xform);
        System.out.println(path);
    }
}
Also used : Path(org.openforis.idm.path.Path) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) Transformation(org.openforis.idm.transform2.Transformation) NodeDefinition(org.openforis.idm.metamodel.NodeDefinition)

Example 2 with Path

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

the class RelationalTransformer method initDataTableTransformations.

private void initDataTableTransformations() {
    this.dataTransforms = new LinkedHashMap<Path, Transformation>();
    this.schema = survey.getSchema();
    List<EntityDefinition> roots = schema.getRootEntityDefinitions();
    for (EntityDefinition root : roots) {
        initDataTableTransformations(root);
    }
}
Also used : Path(org.openforis.idm.path.Path) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) Transformation(org.openforis.idm.transform2.Transformation)

Example 3 with Path

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

the class RelationalSchemaGenerator method addDataObjects.

/**
 * Recursively creates and adds tables and columns
 *
 * @param rs
 * @param parentTable
 * @param defn
 * @throws CollectRdbException
 */
private void addDataObjects(RelationalSchema rs, DataTable table, NodeDefinition defn, Path relativePath) throws CollectRdbException {
    if (defn instanceof EntityDefinition) {
        if (defn.isMultiple()) {
            // Create table for multiple entity
            table = createDataTable(rs, table, defn, relativePath);
            rs.addTable(table);
        } else {
            // just keep a reference
            rs.assignAncestorTable((EntityDefinition) defn);
        }
        // Add child tables and columns
        EntityDefinition entityDefn = (EntityDefinition) defn;
        for (NodeDefinition child : entityDefn.getChildDefinitions()) {
            Path childPath;
            if (defn.isMultiple()) {
                childPath = Path.relative(child.getName());
            } else {
                childPath = relativePath.appendElement(child.getName());
            }
            addDataObjects(rs, table, child, childPath);
        }
    } else if (defn instanceof AttributeDefinition) {
        AttributeDefinition attrDefn = (AttributeDefinition) defn;
        CollectSurvey survey = (CollectSurvey) defn.getSurvey();
        CollectAnnotations annotations = survey.getAnnotations();
        // do not include if it's a calculated attribute and it has not to be included in data export
        if (!attrDefn.isCalculated() || annotations.isIncludedInDataExport(defn)) {
            if (defn.isMultiple()) {
                // Create table for multiple attributes
                table = createDataTable(rs, table, defn, relativePath);
                rs.addTable(table);
                relativePath = Path.relative(".");
            }
            // Add columns for attributes in entity tables or attribute tables
            addDataColumns(rs, table, (AttributeDefinition) defn, relativePath);
        }
    }
}
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) CollectAnnotations(org.openforis.collect.metamodel.CollectAnnotations) CollectSurvey(org.openforis.collect.model.CollectSurvey)

Example 4 with Path

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

the class RelationalSchemaGenerator method addDataTables.

private void addDataTables(RelationalSchema rs) throws CollectRdbException {
    Survey survey = rs.getSurvey();
    Schema schema = survey.getSchema();
    // Recursively create tables, columns and constraints
    List<EntityDefinition> roots = schema.getRootEntityDefinitions();
    for (EntityDefinition root : roots) {
        Path relativePath = Path.relative(root.getName());
        addDataObjects(rs, null, root, relativePath);
    }
}
Also used : Path(org.openforis.idm.path.Path) EntityDefinition(org.openforis.idm.metamodel.EntityDefinition) Survey(org.openforis.idm.metamodel.Survey) CollectSurvey(org.openforis.collect.model.CollectSurvey) Schema(org.openforis.idm.metamodel.Schema)

Example 5 with Path

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

the class Record method findNodesByPath.

public <N extends Node<?>> List<N> findNodesByPath(String path) {
    Path p = Path.parse(path);
    @SuppressWarnings("unchecked") List<N> result = (List<N>) p.evaluate(this);
    return result;
}
Also used : Path(org.openforis.idm.path.Path) List(java.util.List) LinkedList(java.util.LinkedList)

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