KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > mondrian > rolap > Test


1 /*
2 // $Id: //open/mondrian/src/main/mondrian/rolap/Test.java#13 $
3 // This software is subject to the terms of the Common Public License
4 // Agreement, available at the following URL:
5 // http://www.opensource.org/licenses/cpl.html.
6 // Copyright (C) 2001-2002 Kana Software, Inc.
7 // Copyright (C) 2001-2006 Julian Hyde and others
8 // All Rights Reserved.
9 // You must accept the terms of that agreement to use this software.
10 //
11 // jhyde, 21 December, 2001
12 */

13
14 package mondrian.rolap;
15 import mondrian.olap.DriverManager;
16
17 import java.io.PrintWriter JavaDoc;
18 import java.util.ArrayList JavaDoc;
19 import java.util.List JavaDoc;
20
21 /**
22  * todo:
23  *
24  * @author jhyde
25  * @since 21 December, 2001
26  * @version $Id: //open/mondrian/src/main/mondrian/rolap/Test.java#13 $
27  */

28 public class Test {
29     PrintWriter JavaDoc pw;
30     RolapConnection connection;
31
32     static public void main(String JavaDoc[] args) {
33         Test test = new Test(args);
34         if (true) {
35             test.run();
36         } else {
37             try {
38                 test.convertFoodMart();
39             } catch (java.sql.SQLException JavaDoc e) {
40                 System.out.println("Error: " + mondrian.olap.Util.getErrorMessage(e));
41             }
42         }
43     }
44
45     Test(String JavaDoc[] args)
46     {
47         pw = new PrintWriter JavaDoc(System.out, true);
48         String JavaDoc connectString = "Data Source=LOCALHOST;Provider=msolap;Catalog=Foodmart";
49         boolean fresh = true;
50         connection = (RolapConnection) DriverManager.getConnection(connectString, null, fresh);
51     }
52
53     void convertFoodMart() throws java.sql.SQLException JavaDoc
54     {
55         java.sql.Connection JavaDoc connection = null;
56         java.sql.Statement JavaDoc statement = null, statement2 = null;
57         try {
58             try {
59                 Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver");
60             } catch (ClassNotFoundException JavaDoc e) {
61             }
62             String JavaDoc connectString = "jdbc:odbc:DSN=FoodMart2";
63             connection = java.sql.DriverManager.getConnection(connectString);
64             statement = connection.createStatement();
65             statement2 = connection.createStatement();
66             String JavaDoc sql =
67                 "select * from (" +
68                 " select *, \"fname\" + ' ' + \"lname\" as \"name\" from \"customer\")" +
69                 "order by \"country\", \"state_province\", \"city\", \"name\"";
70 // sql = "select * from \"customer\" " +
71
// "where (\"country\", \"state_province\") = " +
72
// " ('Canada', 'BC')";
73
// sql = "select * from \"customer\" " +
74
// "where \"country\" = 'Canada' " +
75
// " and \"state_province\" = 'BC'";
76
java.sql.ResultSet JavaDoc resultSet = statement.executeQuery(sql);
77             if (true) {
78 // return;
79
}
80             int i = 0;
81             while (resultSet.next()) {
82                 int customer_id = resultSet.getInt("customer_id");
83                 statement2.executeUpdate(
84                     "update \"customer\" set \"ordinal\" = " + (++i * 3) +
85                     " where \"customer_id\" = " + customer_id);
86             }
87             connection.commit();
88         } finally {
89             if (statement2 != null) {
90                 try {statement2.close();} catch (java.sql.SQLException JavaDoc e) {}
91             }
92             if (statement != null) {
93                 try {statement.close();} catch (java.sql.SQLException JavaDoc e) {}
94             }
95             if (connection != null) {
96                 try {connection.close();} catch (java.sql.SQLException JavaDoc e) {}
97             }
98         }
99     }
100
101     void run()
102     {
103         RolapCube salesCube = (RolapCube) connection.getSchema().lookupCube("Sales", true);
104         RolapHierarchy measuresHierarchy =
105                 (RolapHierarchy) salesCube.getMeasuresHierarchy();
106         testMemberReader(measuresHierarchy.getMemberReader());
107
108         RolapHierarchy genderHierarchy = (RolapHierarchy)
109             salesCube.lookupHierarchy("Gender", false);
110         testMemberReader(genderHierarchy.getMemberReader());
111
112         RolapHierarchy customerHierarchy = (RolapHierarchy)
113             salesCube.lookupHierarchy("Customers", false);
114         testMemberReader(customerHierarchy.getMemberReader());
115     }
116     void testMemberReader(MemberReader reader)
117     {
118         pw.println();
119         pw.println("MemberReader class=" + reader.getClass());
120         pw.println("Count=" + reader.getMemberCount());
121
122         pw.print("Root member(s)=");
123         RolapMember[] rootMembers = RolapUtil.toArray(reader.getRootMembers());
124         print(rootMembers);
125         pw.println();
126
127         RolapLevel[] levels = (RolapLevel[]) rootMembers[0].getHierarchy().getLevels();
128         RolapLevel level = levels[levels.length > 1 ? 1 : 0];
129         pw.print("Members at level " + level.getUniqueName() + " are ");
130         RolapMember[] members = RolapUtil.toArray(reader.getMembersInLevel(level, 0, Integer.MAX_VALUE));
131         print(members);
132         pw.println();
133
134         pw.println("First children of first children: {");
135         List JavaDoc<RolapMember> firstChildren = new ArrayList JavaDoc<RolapMember>();
136         RolapMember member = rootMembers[0];
137         while (member != null) {
138             firstChildren.add(member);
139             pw.print("\t");
140             print(member);
141             ArrayList JavaDoc<RolapMember> children = new ArrayList JavaDoc<RolapMember>();
142             reader.getMemberChildren(member, children);
143             if (children.isEmpty()) {
144                 break;
145             }
146             pw.print(" (" + children.size() + " children)");
147             RolapMember leadMember = reader.getLeadMember(member, 5);
148             pw.print(", lead(5)=");
149             print(leadMember);
150             if (children.size() > 1) {
151                 member = children.get(1);
152             } else if (children.size() > 0) {
153                 member = children.get(0);
154             } else {
155                 member = null;
156             }
157             pw.println();
158         }
159         pw.println("}");
160     }
161     private void print(RolapMember member)
162     {
163         if (member == null) {
164             pw.print("Member(null)");
165             return;
166         }
167         pw.print("Member(" + member.getUniqueName() + ")");
168     }
169     private void print(RolapMember[] members)
170     {
171         pw.print("{");
172         for (int i = 0; i < members.length; i++) {
173             if (i > 0) {
174                 pw.print(", ");
175             }
176             print(members[i]);
177         }
178         pw.print("}");
179     }
180 }
181
182
183 // End Test.java
184
Popular Tags