KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > pentaho > data > connection > mdx > MDXMetaData


1 /*
2  * Copyright 2006 Pentaho Corporation. All rights reserved.
3  * This software was developed by Pentaho Corporation and is provided under the terms
4  * of the Mozilla Public License, Version 1.1, or any later version. You may not use
5  * this file except in compliance with the license. If you need a copy of the license,
6  * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. The Original Code is the Pentaho
7  * BI Platform. The Initial Developer is Pentaho Corporation.
8  *
9  * Software distributed under the Mozilla Public License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
11  * the license for the specific language governing your rights and limitations.
12  *
13  * Created Sep 14, 2005
14  * @author wseyler
15  */

16 package org.pentaho.data.connection.mdx;
17
18 import mondrian.olap.Member;
19 import mondrian.olap.Position;
20 import mondrian.olap.Result;
21
22 import org.pentaho.core.connection.AbstractPentahoMetaData;
23
24 /**
25  * @author wseyler
26  *
27  * TODO To change the template for this generated type comment go to Window -
28  * Preferences - Java - Code Style - Code Templates
29  */

30 public class MDXMetaData extends AbstractPentahoMetaData {
31     private static final int AXIS_COLUMN = 0;
32     private Object JavaDoc[][] columnHeaders;
33     private Object JavaDoc[][] rowHeaders;
34
35     private static final int AXIS_ROW = 1;
36
37     Result nativeResultSet = null;
38
39     /**
40      * @param connection
41      */

42     public MDXMetaData(Result nativeResultSet) {
43         super();
44         this.nativeResultSet = nativeResultSet;
45         columnHeaders = createColumnHeaders();
46         rowHeaders = createRowHeaders();
47     }
48
49     private Object JavaDoc[][] createColumnHeaders() {
50         Position[] positions = nativeResultSet.getAxes()[AXIS_COLUMN].positions;
51         int rowCount = positions[0].getMembers().length + 1;
52         int colCount = positions.length;
53         Object JavaDoc[][] result = new Object JavaDoc[rowCount][colCount];
54         for (int c = 0; c < colCount; c++) {
55             Member[] members = positions[c].getMembers();
56             Member member = null;
57             for (int r = 0; r < rowCount - 1; r++) {
58                 member = members[r];
59                 result[r][c] = member.getCaption();
60             }
61             result[rowCount - 1][c] = member.getHierarchy().getCaption();
62         }
63         return result;
64     }
65
66     private Object JavaDoc[][] createRowHeaders() {
67         Position[] positions = nativeResultSet.getAxes()[AXIS_ROW].positions;
68         int rowCount = positions.length;
69         int colCount = positions[0].getMembers().length + 1;
70         Object JavaDoc[][] result = new Object JavaDoc[rowCount][colCount];
71         for (int r = 0; r < rowCount; r++) {
72             Member[] members = positions[r].getMembers();
73             Member member = null;
74             for (int c = 0; c < colCount - 1; c++) {
75                 member = members[c];
76                 result[r][c] = member.getCaption();
77             }
78             result[r][colCount - 1] = member.getHierarchy().getCaption();
79         }
80         return result;
81     }
82
83     public String JavaDoc getColumnName(int columnNumber) {
84         if (nativeResultSet != null) {
85             // Flatten out the column headers into one column-name
86
Position[] positions = nativeResultSet.getAxes()[AXIS_ROW].positions;
87             if (columnNumber < positions[0].getMembers().length) {
88                 Member member = positions[0].getMembers()[columnNumber];
89                 return member.getHierarchy().getCaption();
90             } else {
91                 return positions[0].getMembers()[positions[0].getMembers().length - 1].getHierarchy().getName();
92             }
93         }
94         return ""; //$NON-NLS-1$
95
}
96
97     /*
98      * (non-Javadoc)
99      *
100      * @see org.pentaho.connection.IPentahoMetaData#getColumnCount()
101      */

102     public int getColumnCount() {
103         return nativeResultSet.getAxes()[AXIS_COLUMN].positions.length;
104     }
105     
106     /*
107      * (non-Javadoc)
108      *
109      * @see org.pentaho.connection.IPentahoMetaData#getColumnHeaders()
110      */

111     public Object JavaDoc[][] getColumnHeaders() {
112       return columnHeaders;
113     }
114
115     /*
116      * (non-Javadoc)
117      *
118      * @see org.pentaho.connection.IPentahoMetaData#getRowHeaders()
119      */

120     public Object JavaDoc[][] getRowHeaders() {
121       return rowHeaders;
122     }
123     
124 }
125
Popular Tags