private void printAxis(PrintWriter pw, Axis axis) { List<Position> positions = axis.getPositions(); for (Position position : positions) { boolean firstTime = true; pw.print("{"); for (Member member : position) { if (member.getDimension().isHighCardinality()) { pw.println(" -- High cardinality dimension --}"); return; } if (! firstTime) { pw.print(", "); } pw.print(member.getUniqueName()); firstTime = false; } pw.println("}"); } }
private boolean hasHighCardDimension(TupleList l) { final List<Member> trial = l.get(0); for (Member m : trial) { if (m.getHierarchy().getDimension().isHighCardinality()) { return true; } } return false; } };
/** * Sorts a list of members into hierarchical order. The members must belong * to the same dimension. * * @param memberList List of members * @param post Whether to sort in post order; if false, sorts in pre order * * @see #hierarchizeTupleList(mondrian.calc.TupleList, boolean) */ public static void hierarchizeMemberList( List<Member> memberList, boolean post) { if (memberList.size() <= 1) { return; } Dimension dimension = memberList.get(0).getDimension(); if (dimension.isHighCardinality()) { LOGGER.warn( MondrianResource.instance() .HighCardinalityInDimension.str( dimension.getUniqueName())); return; } Comparator<Member> comparator = new HierarchizeComparator(post); Collections.sort(memberList, comparator); }
private boolean isAxisHighCardinality( int axisOrdinal, TupleList tupleList) { Boolean highCardinality = positionsHighCardinality.get(axisOrdinal); if (highCardinality != null) { return highCardinality; } highCardinality = false; //noinspection LoopStatementThatDoesntLoop List<Member> tuple = !tupleList.isEmpty() ? tupleList.get(0) : null; if (tuple != null && !tuple.isEmpty()) { Dimension dimension = tuple.get(0).getDimension(); highCardinality = dimension.isHighCardinality(); if (highCardinality) { LOGGER.warn( MondrianResource.instance() .HighCardinalityInDimension.str( dimension.getUniqueName())); } } positionsHighCardinality.put(axisOrdinal, highCardinality); return highCardinality; }
public Object execute(ResultStyle desiredResultStyle) { switch (desiredResultStyle) { case ITERABLE: for (CrossJoinArg arg : this.args) { if (arg.getLevel().getDimension().isHighCardinality()) { // If any of the dimensions is a HCD, // use the proper tuple reader. return executeList( new HighCardSqlTupleReader(constraint)); } // Use the regular tuple reader. return executeList( new SqlTupleReader(constraint)); } case MUTABLE_LIST: case LIST: return executeList(new SqlTupleReader(constraint)); default: throw ResultStyleException.generate( ResultStyle.ITERABLE_MUTABLELIST_LIST, Collections.singletonList(desiredResultStyle)); } }
public List<RolapMember> getMembersInLevel( RolapLevel level, TupleConstraint constraint) { if (level.isAll()) { return Collections.singletonList(hierarchy.getAllMember()); } Dimension dimension = level.getDimension(); boolean isHighCardinality = dimension.isHighCardinality(); final TupleReader tupleReader = isHighCardinality ? new HighCardSqlTupleReader(constraint) : new SqlTupleReader(constraint); if (isHighCardinality) { LOGGER.warn( MondrianResource.instance() .HighCardinalityInDimension.str( dimension.getUniqueName())); } tupleReader.addLevelMembers(level, this, null); final TupleList tupleList = tupleReader.readMembers(dataSource, null, null); assert tupleList.getArity() == 1; return Util.cast(tupleList.slice(0)); }
SqlMemberSource source = new SqlMemberSource(hierarchy); Dimension dimension = hierarchy.getDimension(); if (dimension.isHighCardinality()) { LOGGER.warn( MondrianResource.instance()
if (!tupleList.isEmpty() && tupleList.get(0).get(0).getDimension() .isHighCardinality())
"Closure dimension for parent-child hierarchy " + getName(), DimensionType.StandardDimension, dimension.isHighCardinality(), Collections.<String, Annotation>emptyMap());
if (dimension.isHighCardinality()) { LOGGER.warn( MondrianResource.instance()