/** * 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; }
private Object getHierarchyProperty( Member member, Property longProp) { IMondrianOlap4jProperty currentProperty = (IMondrianOlap4jProperty) longProp; String thisHierarchyName = member.getHierarchy().getName(); String thatHierarchyName = currentProperty.getLevel() .getHierarchy().getName(); if (thisHierarchyName.equals(thatHierarchyName)) { try { return member.getPropertyValue(currentProperty); } catch (OlapException e) { throw new XmlaException( SERVER_FAULT_FC, HSB_BAD_PROPERTIES_LIST_CODE, HSB_BAD_PROPERTIES_LIST_FAULT_FS, e); } } // if property doesn't belong to current hierarchy return null return null; }
int i = 0; for (Member member : pos0.getMembers()) { memberMap.put(member.getHierarchy().getName(), i++); if (slicerMember.getHierarchy().equals(hierarchy)) { member = slicerMember; break;
/** * @see org.olap4j.metadata.Member#getHierarchy() */ @Override public Hierarchy getHierarchy() { return baseMember.getHierarchy(); }
private void writeMember( SaxWriter writer, Member member, Position prevPosition, Position nextPosition, int k, List<Property> props) throws OlapException { writer.startElement( "Member", "Hierarchy", member.getHierarchy().getName()); for (final Property prop : props) { Object value = null; Property longProp = (longProps.get(prop.getName()) != null) ? longProps.get(prop.getName()) : prop; if (longProp == StandardMemberProperty.DISPLAY_INFO) { Integer childrenCard = (Integer) member .getPropertyValue( StandardMemberProperty.CHILDREN_CARDINALITY); value = calculateDisplayInfo( prevPosition, nextPosition, member, k, childrenCard); } else if (longProp == StandardMemberProperty.DEPTH) { value = member.getDepth(); } else { value = (longProp instanceof IMondrianOlap4jProperty) ? getHierarchyProperty(member, longProp) : member.getPropertyValue(longProp); } if (value != null) { writer.textElement(encoder.encode(prop.getName()), value); } } writer.endElement(); // Member }
"Hierarchy", member.getHierarchy().getName()); for (Property prop : props) { Object value;
void addMember(Member member) { if (!members.contains(member) && (hierarchy == null || OlapUtils.equals(hierarchy, member.getHierarchy()))) { members.add(member); } }
/** * @see org.pivot4j.transform.PlaceMembersOnAxes#removeMember(org.olap4j * .metadata.Member) */ @Override public void removeMember(Member member) { Hierarchy hierarchy = member.getHierarchy(); List<Member> members = new ArrayList<Member>( findVisibleMembers(hierarchy)); members.remove(member); placeMembers(hierarchy, members); }
/** * @see org.pivot4j.ui.condition.AbstractMetadataCondition#matches(org.olap4j.metadata.Member) */ @Override protected boolean matches(Member member) { return member != null && member.getHierarchy().getUniqueName() .equals(getUniqueName()); } }
/** * @see org.pivot4j.transform.PlaceMembersOnAxes#addMember(org.olap4j.metadata * .Member, int) */ @Override public void addMember(Member member, int position) { Hierarchy hierarchy = member.getHierarchy(); List<Member> selection = new ArrayList<Member>( findVisibleMembers(hierarchy)); if (selection.contains(member)) { moveMember(member, position); return; } if (position < 0 || position >= selection.size()) { selection.add(member); } else { selection.add(position, member); } placeMembers(hierarchy, selection); }
Hierarchy hierarchy = member.getHierarchy();
final Member parent = member.getParentMember(); if (parent == null) { siblings = member.getHierarchy().getRootMembers(); } else { siblings = Olap4jUtil.cast(parent.getChildMembers());
/** * @see org.pivot4j.transform.ChangeSlicer#getHierarchies() */ @Override public List<Hierarchy> getHierarchies() { if (!getModel().isInitialized()) { return Collections.emptyList(); } CellSet cellSet = getModel().getCellSet(); if (cellSet == null) { return Collections.emptyList(); } CellSetAxis slicer = cellSet.getFilterAxis(); Set<Hierarchy> hierarchies = new LinkedHashSet<Hierarchy>(); for (Position position : slicer.getPositions()) { for (Member member : position.getMembers()) { if (!member.isAll() && !(member instanceof Measure) && !hierarchies.contains(member.getHierarchy())) { hierarchies.add(member.getHierarchy()); } } } return new LinkedList<Hierarchy>(hierarchies); }
/** * @see org.pivot4j.analytics.component.tree.NodeFilter#isSelected(org.olap4j.metadata.MetadataElement) */ @Override public <T extends MetadataElement> boolean isSelected(T element) { if (element instanceof Dimension) { Dimension dimension = (Dimension) element; return getDimensions(Axis.COLUMNS).contains(dimension) || getDimensions(Axis.ROWS).contains(dimension); } if (element instanceof Hierarchy) { Hierarchy hierarchy = (Hierarchy) element; return getHierarchies(Axis.COLUMNS).contains(hierarchy) || getHierarchies(Axis.ROWS).contains(hierarchy); } if (element instanceof Level) { Level level = (Level) element; return getLevels(level.getHierarchy()).contains(level); } if (element instanceof Member) { Member member = (Member) element; return getMembers(member.getHierarchy()).contains(member); } return false; }
/** * @param axis * @param member * @param position */ protected void addMember(Axis axis, Member member, int position) { Hierarchy hierarchy = member.getHierarchy(); for (Axis ax : new Axis[] { Axis.COLUMNS, Axis.ROWS, Axis.FILTER }) { if (ax.equals(axis)) { continue; } List<Hierarchy> hiersInAxis = getHierarchies(ax); if (hiersInAxis.contains(hierarchy)) { FacesContext context = FacesContext.getCurrentInstance(); ResourceBundle bundle = context.getApplication() .getResourceBundle(context, "msg"); String title = bundle.getString("warn.member.exists.title"); String message = String.format( bundle.getString("warn.member.exists.message"), ax.name()); context.addMessage(null, new FacesMessage( FacesMessage.SEVERITY_WARN, title, message)); return; } } PlaceMembersOnAxes transform = getModel().getTransform( PlaceMembersOnAxes.class); transform.addMember(axis, member, position); }
/** * @see org.pivot4j.transform.ChangeSlicer#getSlicer(org.olap4j.metadata * .Hierarchy) */ @Override public List<Member> getSlicer(Hierarchy hierarchy) { if (hierarchy == null) { return getSlicer(); } CellSet cellSet = getModel().getCellSet(); CellSetAxis slicer = cellSet.getFilterAxis(); List<Position> positions = slicer.getPositions(); List<Member> members = new ArrayList<Member>(); for (Position position : positions) { List<Member> posMembers = position.getMembers(); for (Member posMember : posMembers) { if (OlapUtils.equals(posMember.getHierarchy(), hierarchy) && !members.contains(posMember)) { members.add(posMember); } } } return members; }
/** * @see org.pivot4j.ui.RenderCallback#renderContent(org.pivot4j.ui.RenderContext, * java.lang.String, java.lang.Double) */ @Override public void renderContent(ChartRenderContext context, String label, Double value) { if (series.getLabel() == null) { series.setLabel(context.getMember().getHierarchy().getCaption()); } series.set(label, value); }
/** * @param sourceNode * @param targetNode * @param position */ protected void onDropOnHierarchy(TreeNode sourceNode, TreeNode targetNode, int position) { Axis axis = (Axis) targetNode.getParent().getData(); if (sourceNode instanceof HierarchyNode) { HierarchyNode node = (HierarchyNode) sourceNode; Hierarchy hierarchy = node.getObject(); addHierarhy(axis, hierarchy, position); } else if (sourceNode instanceof LevelNode) { LevelNode node = (LevelNode) sourceNode; Level level = node.getObject(); addLevel(axis, level, position); } else if (sourceNode instanceof MeasureNode) { MeasureNode node = (MeasureNode) sourceNode; Member member = node.getObject(); if (member.getHierarchy().equals(targetNode.getData())) { addMember(axis, member); } else { addMember(axis, member, position); } } }
void addParentMemberHeaders() { List<TreeNode<TableAxisContext>> children = new ArrayList<TreeNode<TableAxisContext>>(getChildren()); MemberHierarchyCache cache = getReference().getMemberHierarchyCache(); for (TreeNode<TableAxisContext> child : children) { TableHeaderNode nodeChild = (TableHeaderNode) child; Member mem = nodeChild.getMember(); if (mem != null) { int index = getChildren().indexOf(child); removeChild(child); TreeNode<TableAxisContext> childNode = child; Member parent = mem; while (parent != null) { parent = cache.getParentMember(parent); if (parent == null) { break; } TableHeaderNode parentNode = new TableHeaderNode(getReference()); parentNode.setPosition(nodeChild.getPosition()); parentNode.setHierarchy(parent.getHierarchy()); parentNode.setMember(parent); parentNode.addChild(childNode); childNode = parentNode; } addChild(index, childNode); } nodeChild.addParentMemberHeaders(); } }