for ( int i = 0; i < axisDimensions.length; i++ ) { final CellSetAxis axis = cellSet.getAxes().get( i ); axisDimensions[i] = axis.getPositions().size();
/** * Computes a description of an axis. * * @param axis * Axis * @return Description of axis */ private AxisInfo computeAxisInfo( final CellSetAxis axis ) { if ( axis == null ) { return new AxisInfo( 0 ); } final AxisInfo axisInfo = new AxisInfo( axis.getAxisMetaData().getHierarchies().size() ); int p = -1; for ( final Position position : axis.getPositions() ) { ++p; int k = -1; for ( final Member member : position.getMembers() ) { ++k; final AxisOrdinalInfo axisOrdinalInfo = axisInfo.ordinalInfos.get( k ); final int topDepth = member.isAll() ? member.getDepth() : member.getHierarchy().hasAll() ? 1 : 0; if ( axisOrdinalInfo.minDepth > topDepth || p == 0 ) { axisOrdinalInfo.minDepth = topDepth; } axisOrdinalInfo.maxDepth = Math.max( axisOrdinalInfo.maxDepth, member.getDepth() ); } } return axisInfo; }
public int coordinatesToOrdinal(List<Integer> coordinates) { List<CellSetAxis> axes = getAxes(); if (coordinates.size() != axes.size()) { throw new IllegalArgumentException( "Coordinates have different dimension " + coordinates.size() + " than axes " + axes.size()); } int modulo = 1; int ordinal = 0; int k = 0; for (CellSetAxis axis : axes) { final Integer coordinate = coordinates.get(k++); if (coordinate < 0 || coordinate >= axis.getPositionCount()) { throw new IndexOutOfBoundsException( "Coordinate " + coordinate + " of axis " + k + " is out of range (" + getBoundsAsString() + ")"); } ordinal += coordinate * modulo; modulo *= axis.getPositionCount(); } return ordinal; }
@Override public void execute() throws TranslatorException { try { stmt = this.connection.createStatement(); cellSet = stmt.executeOlapQuery(mdxQuery); CellSetAxis rowAxis = this.cellSet.getAxes().get(Axis.ROWS.axisOrdinal()); rowPositionIterator = rowAxis.iterator(); columnsAxis = cellSet.getAxes().get(Axis.COLUMNS.axisOrdinal()); colWidth = rowAxis.getAxisMetaData().getHierarchies().size() + this.columnsAxis.getPositions().size(); } catch (SQLException e) { throw new TranslatorException(e); } }
axisMap.put(axis.getAxisOrdinal(), axis); List<Position> positions = axis.getPositions(); Axis targetAxis = axis.getAxisOrdinal(); if (axis.getAxisOrdinal() == Axis.COLUMNS) { targetAxis = Axis.ROWS; } else if (axis.getAxisOrdinal() == Axis.ROWS) { targetAxis = Axis.COLUMNS; List<Position> positions = cellSetAxis.getPositions(); List<Position> positions = axis.getPositions(); logger.debug("Positions of axis " + axis.getAxisOrdinal().axisOrdinal());
writeHierarchyInfo( writer, hierarchies, getProps(slicerAxis.getAxisMetaData()));
/** * @param cellSet * @param axis * @return */ protected CellSetAxis getCellSetAxis(CellSet cellSet, Axis axis) { Axis targetAxis = axis; if (queryAdapter.isAxesSwapped()) { if (axis == Axis.COLUMNS) { targetAxis = Axis.ROWS; } else if (axis == Axis.ROWS) { targetAxis = Axis.COLUMNS; } } CellSetAxis cellAxis = null; if (cellSet != null) { for (CellSetAxis item : cellSet.getAxes()) { if (item.getAxisOrdinal() == targetAxis) { cellAxis = item; break; } } } return cellAxis; } }
/** * @see org.pivot4j.ui.command.UICommand#execute(org.pivot4j.PivotModel , * org.pivot4j.ui.command.UICommandParameters) */ @Override public Void execute(PivotModel model, UICommandParameters parameters) { CellSet cellSet = model.getCellSet(); CellSetAxis axis = cellSet.getAxes().get(parameters.getAxisOrdinal()); PlaceHierarchiesOnAxes transform = model .getTransform(PlaceHierarchiesOnAxes.class); List<Hierarchy> hierarchies = transform.findVisibleHierarchies(axis .getAxisOrdinal()); Hierarchy hierarchy = hierarchies.get(parameters.getHierarchyOrdinal()); DrillReplace drillTransform = model.getTransform(DrillReplace.class); drillTransform.drillUp(hierarchy); return null; } }
for ( int i = 2; i < cellSet.getAxes().size(); i++ ) { final CellSetAxis cellSetAxis = cellSet.getAxes().get( i ); dimensions[i - 2] = cellSetAxis.getPositions().size();
private List<Hierarchy> axisInfo( SaxWriter writer, CellSetAxis axis, String axisName) { writer.startElement( "AxisInfo", "name", axisName); List<Hierarchy> hierarchies; List<Property> props = new ArrayList<>(getProps(axis.getAxisMetaData())); Iterator<org.olap4j.Position> it = axis.getPositions().iterator(); if (it.hasNext()) { final org.olap4j.Position position = it.next(); hierarchies = new ArrayList<Hierarchy>(); for (Member member : position.getMembers()) { hierarchies.add(member.getHierarchy()); } } else { hierarchies = axis.getAxisMetaData().getHierarchies(); } // remove a property without a valid associated hierarchy props.removeIf(prop -> !isValidProp(axis.getPositions(), prop)); writeHierarchyInfo(writer, hierarchies, props); writer.endElement(); // AxisInfo return hierarchies; }
public boolean isValid() { if (model == null || !model.isInitialized()) { return false; } CellSet cellSet = model.getCellSet(); if (cellSet == null) { return false; } List<CellSetAxis> axes = model.getCellSet().getAxes(); if (axes.size() < 2) { return false; } return axes.get(0).getPositionCount() > 0 && axes.get(1).getPositionCount() > 0; }
new Matrix( xOffsset + ( columnsAxis == null ? 1 : columnsAxis.getPositions().size() ), yOffset + ( rowsAxis == null ? 1 : rowsAxis.getPositions().size() ) );
for (int i = axes.size() - 1; i > 0; i--) { CellSetAxis axis = axes.get(i); if (axis.getPositions().size() == 0) { axis.getPositions().get(0).getMembers().size(); final CellSetAxis axis = axes.get(i); final int z0 = memberOrdinal; // save ordinal so can rewind final List<Position> positions = axis.getPositions(); int jj = 0; for (Position position : positions) { axis.getAxisMetaData().getProperties(); if (dimProps.size() == 0) { dimProps = MemberCaptionIdArray; for (Position position : columnsAxis.getPositions()) { String name = null; int j = 0;
public boolean isValid() { if (model == null || !model.isInitialized() || lastError != null) { return false; } CellSet cellSet = model.getCellSet(); if (cellSet == null) { return false; } List<CellSetAxis> axes = model.getCellSet().getAxes(); if (axes.size() < 2) { return false; } return axes.get(0).getPositionCount() > 0 && axes.get(1).getPositionCount() > 0; }
final Member[] members = new Member[axisInfo.getWidth()]; for ( int i = 0; i < axis.getPositions().size(); i++ ) { final int x = offset + i; final Position position = axis.getPositions().get( i ); int yOffset = 0; final List<Member> memberList = position.getMembers(); for ( int z = 0; z <= position.getMembers().size() - 1; z++ ) { if ( i < axis.getPositions().size() - 1 ) { if ( axis.getPositions().get( i + 1 ).getMembers().get( z ).getParentMember() != null && axis.getPositions().get( i + 1 ).getMembers().get( z ).getParentMember().equals( member ) ) { if ( member == null || position.getMembers().get( z ).getUniqueName().equals( member.getUniqueName() ) ) {
for (int i = 0; i < axes.size(); i++) { final CellSetAxis axis = axes.get(i); final List<Property> props = getProps(axis.getAxisMetaData()); axis(writer, axis, props, "Axis" + i); writer, slicerAxis, getProps(slicerAxis.getAxisMetaData()), "SlicerAxis"); } else { CellSetAxis slicerAxis = cellSet.getFilterAxis(); final List<Position> slicerPositions = slicerAxis.getPositions(); if (slicerPositions != null && slicerPositions.size() > 0) writer, positionMember, null, slicerPositions.get(0), indexPosition, getProps(slicerAxis.getAxisMetaData())); } else { slicerAxis( writer, member, getProps(slicerAxis.getAxisMetaData()));
private void recurse( SaxWriter writer, List<Integer> pos, int axisOrdinal, int[] cellOrdinal) { if (axisOrdinal < 0) { emitCell(writer, pos, cellOrdinal[0]++); } else { CellSetAxis axis = cellSet.getAxes().get(axisOrdinal); List<Position> positions = axis.getPositions(); for (int i = 0, n = positions.size(); i < n; i++) { pos.set(axisOrdinal, i); recurse(writer, pos, axisOrdinal - 1, cellOrdinal); } } }
private Cell getCellInternal(int[] pos) { RolapCell cell; try { cell = (RolapCell) result.getCell(pos); } catch (MondrianException e) { if (e.getMessage().indexOf("coordinates out of range") >= 0) { int[] dimensions = new int[getAxes().size()]; for (int i = 0; i < axisList.size(); i++) { dimensions[i] = axisList.get(i).getPositions().size(); } throw new IndexOutOfBoundsException( "Cell coordinates (" + getCoordsAsString(pos) + ") fall outside CellSet bounds (" + getCoordsAsString(dimensions) + ")"); } else if (e.getMessage().indexOf( "coordinates should have dimension") >= 0) { throw new IllegalArgumentException( "Cell coordinates should have dimension " + axisList.size()); } else { throw e; } } return new MondrianOlap4jCell(pos, this, cell); }
private void axis( SaxWriter writer, CellSetAxis axis, List<Property> props, String axisName) throws OlapException { writer.startElement( "Axis", "name", axisName); writer.startSequence("Tuples", "Tuple"); List<Position> positions = axis.getPositions(); Iterator<Position> pit = positions.iterator(); Position prevPosition = null; Position position = pit.hasNext() ? pit.next() : null; Position nextPosition = pit.hasNext() ? pit.next() : null; while (position != null) { writer.startSequence("Tuple", "Member"); int k = 0; for (Member member : position.getMembers()) { writeMember( writer, member, prevPosition, nextPosition, k++, props); } writer.endSequence(); // Tuple prevPosition = position; position = nextPosition; nextPosition = pit.hasNext() ? pit.next() : null; } writer.endSequence(); // Tuples writer.endElement(); // Axis }
cellSet.getAxes().get(axis).getPositions(); int axisLength = axis == 0 ? 1 : positions.size();