use of mondrian.olap.MondrianDef.Dimension in project collect by openforis.
the class Mondrian4SchemaGenerator method createCube.
private Cube createCube(DataTable dataTable) {
NodeDefinition nodeDef = dataTable.getNodeDefinition();
Cube cube = new Cube();
cube.name = nodeDef.getName();
MeasureGroups measureGroups = new MondrianDef.MeasureGroups();
MeasureGroup measureGroup = new MeasureGroup();
measureGroup.name = cube.name;
Measures measures = new Measures();
List<Measure> measureList = createMeasures(dataTable);
measures.list().addAll(measureList);
measureGroup.children.add(measures);
measureGroup.table = dataTable.getName();
DimensionLinks dimensionLinks = new DimensionLinks();
measureGroup.children.add(dimensionLinks);
measureGroups.list().add(measureGroup);
cube.children.add(measureGroups);
if (nodeDef instanceof EntityDefinition) {
Dimensions dimensions = new Dimensions();
Queue<NodeDefinition> queue = new LinkedList<NodeDefinition>();
queue.addAll(((EntityDefinition) nodeDef).getChildDefinitions());
while (!queue.isEmpty()) {
NodeDefinition def = queue.poll();
if (def instanceof AttributeDefinition) {
AttributeDefinition attrDef = (AttributeDefinition) def;
Dimension dimension = createDimension(dataTable, attrDef);
if (dimension != null) {
dimensions.list().add(dimension);
// add dimension link
DimensionLink dimensionLink = createDimensionLink(dimension, attrDef);
dimensionLinks.list().add(dimensionLink);
}
} else if (!def.isMultiple()) {
queue.addAll(((EntityDefinition) def).getChildDefinitions());
}
}
cube.children.add(dimensions);
}
return cube;
}
use of mondrian.olap.MondrianDef.Dimension in project collect by openforis.
the class Mondrian4SchemaGenerator method createDimension.
private Dimension createDimension(DataTable dataTable, AttributeDefinition attrDefn) {
List<Attribute> attrs = createDimensionAttributes(dataTable, attrDefn);
if (attrs.isEmpty()) {
return null;
} else {
Dimension dimension = new Dimension();
dimension.name = attrDefn.getName();
dimension.caption = getDimensionCaption(attrDefn);
if (attrDefn.hasMainField()) {
dimension.key = attrDefn.getMainFieldName();
} else {
dimension.key = attrDefn.getName();
}
dimension.table = dataTable.getName();
Attributes attributes = new Attributes();
attributes.list().addAll(attrs);
dimension.children.add(attributes);
List<Level> hierarchyLevels = createHierarchyLevels(attrDefn);
if (!hierarchyLevels.isEmpty()) {
Hierarchies hierarchies = new Hierarchies();
Hierarchy hierarchy = new Hierarchy();
hierarchy.name = attrDefn.getName() + "_full_hierarchy";
hierarchy.children.addAll(hierarchyLevels);
hierarchies.list().add(hierarchy);
dimension.children.add(hierarchies);
}
return dimension;
}
}
Aggregations