/** return the dimensions that are on the slicer axis (all that are not visible) */ public static Set getSlicerDimensions(OlapModel model) throws OlapException { Set visible = getVisibleDimensions(model); Set slicer = new HashSet(); Dimension[] dims = model.getDimensions(); for (int i = 0; i < dims.length; i++) { if (!visible.contains(dims[i])) slicer.add(dims[i]); } return slicer; }
/** return the hierarchies that are on the slicer axis (all that are not visible) */ public static Set getSlicerHierarchies(OlapModel model) throws OlapException { Set visible = getVisibleDimensions(model); /* Get dimensions and hierarchies on the slicer */ Axis slicer = model.getResult().getSlicer(); Set selectedSlicerDims = new HashSet(); Set selectedSlicerHiers = new HashSet(); List positions = slicer.getPositions(); for (Iterator iter = positions.iterator(); iter.hasNext(); ) { Position pos = (Position) iter.next(); Member[] posMembers = pos.getMembers(); for (int i = 0; i < posMembers.length; i++) { Hierarchy hier = posMembers[i].getLevel().getHierarchy(); Dimension dim = hier.getDimension(); if (!selectedSlicerHiers.contains(hier)) selectedSlicerHiers.add(hier); if (!selectedSlicerDims.contains(dim)) selectedSlicerDims.add(dim); } } /* Return hierarchies that are not on the rows or columns and for the selected * members, return the selected hierarchy */ Set slicerHiers = new HashSet(); Dimension[] dims = model.getDimensions(); for (int i = 0; i < dims.length; i++) { if (!visible.contains(dims[i])) { if (!selectedSlicerDims.contains(dims[i])) { slicerHiers.add(dims[i].getHierarchies()[0]); } else { for (Iterator it = selectedSlicerHiers.iterator(); it.hasNext(); ) { Hierarchy hier = (Hierarchy) it.next(); Dimension dim = hier.getDimension(); if (dim.equals(dims[i])) { slicerHiers.add(hier); break; } } } } } return slicerHiers; }