/** * 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; }
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; }
@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); } }