001: /*
002: * ============================================================================
003: * GNU Lesser General Public License
004: * ============================================================================
005: *
006: * JasperReports - Free Java report-generating library.
007: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
022: *
023: * JasperSoft Corporation
024: * 303 Second Street, Suite 450 North
025: * San Francisco, CA 94107
026: * http://www.jaspersoft.com
027: */
028: package net.sf.jasperreports.olap.xmla;
029:
030: import java.util.ArrayList;
031: import java.util.Iterator;
032: import java.util.List;
033:
034: import net.sf.jasperreports.olap.result.JROlapHierarchy;
035: import net.sf.jasperreports.olap.result.JROlapMemberTuple;
036: import net.sf.jasperreports.olap.result.JROlapResultAxis;
037:
038: /**
039: * @author Lucian Chirita (lucianc@users.sourceforge.net)
040: * @version $Id: JRXmlaResultAxis.java 1446 2006-10-25 09:00:05Z lucianc $
041: */
042: public class JRXmlaResultAxis implements JROlapResultAxis {
043:
044: private final String axisName;
045: private final List hierarchyList;
046: private JRXmlaHierarchy[] hierarchies;
047: private final List tuples;
048:
049: public JRXmlaResultAxis(String axisName) {
050: this .axisName = axisName;
051: this .hierarchyList = new ArrayList();
052: this .tuples = new ArrayList();
053: }
054:
055: public String getAxisName() {
056: return axisName;
057: }
058:
059: public JROlapHierarchy[] getHierarchiesOnAxis() {
060: return ensureHierarchyArray();
061: }
062:
063: public JROlapMemberTuple getTuple(int index) {
064: if (index < 0 || index >= tuples.size()) {
065: throw new IndexOutOfBoundsException("Index: " + index
066: + ", Size: " + tuples.size());
067: }
068:
069: return (JROlapMemberTuple) tuples.get(index);
070: }
071:
072: public int getTupleCount() {
073: return tuples.size();
074: }
075:
076: public void addHierarchy(JRXmlaHierarchy hierarchy) {
077: hierarchyList.add(hierarchy);
078: resetHierarchyArray();
079: }
080:
081: public void addTuple(JRXmlaMemberTuple tuple) {
082: tuples.add(tuple);
083:
084: copyLevelInfo(tuple);
085: }
086:
087: protected void copyLevelInfo(JRXmlaMemberTuple tuple) {
088: JRXmlaMember[] members = tuple.getXmlaMembers();
089: int idx = 0;
090: for (Iterator it = hierarchyList.iterator(); it.hasNext()
091: && idx < members.length; ++idx) {
092: JRXmlaHierarchy hierarchy = (JRXmlaHierarchy) it.next();
093: JRXmlaMember member = members[idx];
094: if (hierarchy.getDimensionName().equals(
095: member.getDimensionName())) {
096: hierarchy.setLevel(member.getLevelName(), member
097: .getDepth());
098: }
099: }
100:
101: }
102:
103: protected JRXmlaHierarchy[] ensureHierarchyArray() {
104: if (hierarchies == null) {
105: hierarchies = new JRXmlaHierarchy[hierarchyList.size()];
106: hierarchies = (JRXmlaHierarchy[]) hierarchyList
107: .toArray(hierarchies);
108: }
109: return hierarchies;
110: }
111:
112: protected void resetHierarchyArray() {
113: hierarchies = null;
114: }
115:
116: }
|