01: /*
02: * ============================================================================
03: * GNU Lesser General Public License
04: * ============================================================================
05: *
06: * JasperReports - Free Java report-generating library.
07: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
08: *
09: * This library is free software; you can redistribute it and/or
10: * modify it under the terms of the GNU Lesser General Public
11: * License as published by the Free Software Foundation; either
12: * version 2.1 of the License, or (at your option) any later version.
13: *
14: * This library is distributed in the hope that it will be useful,
15: * but WITHOUT ANY WARRANTY; without even the implied warranty of
16: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17: * Lesser General Public License for more details.
18: *
19: * You should have received a copy of the GNU Lesser General Public
20: * License along with this library; if not, write to the Free Software
21: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22: *
23: * JasperSoft Corporation
24: * 303 Second Street, Suite 450 North
25: * San Francisco, CA 94107
26: * http://www.jaspersoft.com
27: */
28: package net.sf.jasperreports.olap.mondrian;
29:
30: import java.util.Iterator;
31: import java.util.List;
32:
33: import net.sf.jasperreports.olap.result.JROlapHierarchy;
34: import net.sf.jasperreports.olap.result.JROlapMemberTuple;
35: import net.sf.jasperreports.olap.result.JROlapResultAxis;
36: import mondrian.olap.Axis;
37: import mondrian.olap.Hierarchy;
38: import mondrian.olap.Position;
39:
40: /**
41: * @author Lucian Chirita (lucianc@users.sourceforge.net)
42: * @version $Id: JRMondrianAxis.java 1775 2007-07-02 16:21:50Z lucianc $
43: */
44: public class JRMondrianAxis implements JROlapResultAxis {
45:
46: private final JRMondrianTuple[] tuples;
47: private final JRMondrianHierarchy[] hierarchies;
48:
49: public JRMondrianAxis(Axis axis, Hierarchy[] axisHierarchies,
50: JRMondrianFactory factory) {
51: List positions = axis.getPositions();
52: tuples = new JRMondrianTuple[positions.size()];
53:
54: int idx = 0;
55: for (Iterator it = positions.iterator(); it.hasNext(); ++idx) {
56: Position position = (Position) it.next();
57: tuples[idx] = new JRMondrianTuple(position, factory);
58: }
59:
60: hierarchies = new JRMondrianHierarchy[axisHierarchies.length];
61: for (int i = 0; i < axisHierarchies.length; i++) {
62: hierarchies[i] = new JRMondrianHierarchy(axisHierarchies[i]);
63: }
64: }
65:
66: public JROlapHierarchy[] getHierarchiesOnAxis() {
67: return hierarchies;
68: }
69:
70: public JROlapMemberTuple getTuple(int index) {
71: if (index < 0 || index >= tuples.length) {
72: throw new IndexOutOfBoundsException("Index: " + index
73: + ", Size: " + tuples.length);
74: }
75:
76: return tuples[index];
77: }
78:
79: public int getTupleCount() {
80: return tuples.length;
81: }
82:
83: }
|