/** * 与えられた軸のエッジ内における次段以降に配置された軸のメンバー数の積を求める。 (セレクタで除外されているものは含まない) * ディメンションの持つメンバーリストは一時的に使用される情報であることに注意。 * * @param axis 軸をあらわすオブジェクト * @return メンバー数 */ public Integer getNextAxesMembersComboNums(Axis axis) { if (axis == null) { throw new IllegalArgumentException(); } if (this.hasThisAxis(axis) == false) { throw new IllegalArgumentException(); } Iterator<Axis> it = this.getAxisList().iterator(); int i = 0; while (it.hasNext()) { Axis tmpAxis = it.next(); if (axis.getId().equals(tmpAxis.getId())) { if (i == (this.getAxisList().size() - 1)) { // 最終段が指定された場合 return null; } else { // System.out.println("nextAxis:" + nextAxis.getName()); int nextAxesComboNums = 1; while (it.hasNext()) { Axis nextAxis = (Axis) it.next(); if (nextAxis.isUsedSelecter()) { // セレクタによる絞込み中 Iterator<AxisMember> nextAxisMemIt = nextAxis.getAxisMemberList().iterator(); int count = 0; while (nextAxisMemIt.hasNext()) { AxisMember axisMember = nextAxisMemIt.next(); if (axisMember.isSelected()) { count++; } } nextAxesComboNums = nextAxesComboNums * count; } else { // セレクタによる絞込み中ではない nextAxesComboNums = nextAxesComboNums * nextAxis.getAxisMemberList().size(); } } return new Integer(nextAxesComboNums); } } i++; } return null; }
/** * エッジ内の与えられた軸より前に配置された軸のメンバー数の積を求める。 (セレクタで除外されているものは含まない) ディメンションの持つメンバリストは一時的に使用される情報であることに注意。 * * @param axis 軸をあらわすオブジェクト * @return メンバー数 */ public Integer getBeforeAxesMembersComboNums(Axis axis) { if (axis == null) { throw new IllegalArgumentException(); } if (this.hasThisAxis(axis) == false) { throw new IllegalArgumentException(); } Iterator<Axis> it = this.getAxisList().iterator(); ArrayList<Axis> beforeAxisList = new ArrayList<Axis>(); while (it.hasNext()) { Axis tmpAxis = it.next(); if (axis.getId().equals(tmpAxis.getId())) { if (beforeAxisList.size() == 0) { // 0段目が指定された場合 return null; } else { int beforeAxesComboNums = 1; Iterator<Axis> beforeAxisIt = beforeAxisList.iterator(); while (beforeAxisIt.hasNext()) { Axis beforeAxis = beforeAxisIt.next(); if (beforeAxis.isUsedSelecter()) { // セレクタによる絞込み中 Iterator<AxisMember> beforeAxisMemIt = beforeAxis.getAxisMemberList().iterator(); int count = 0; while (beforeAxisMemIt.hasNext()) { AxisMember axisMember = beforeAxisMemIt.next(); if (axisMember.isSelected()) { count++; } } beforeAxesComboNums = beforeAxesComboNums * count; } else { // セレクタによる絞込み中ではない beforeAxesComboNums = beforeAxesComboNums * beforeAxis.getAxisMemberList().size(); } } return new Integer(beforeAxesComboNums); } } beforeAxisList.add(tmpAxis); } return null; }