1 13 14 package mondrian.rolap; 15 import mondrian.olap.DriverManager; 16 17 import java.io.PrintWriter ; 18 import java.util.ArrayList ; 19 import java.util.List ; 20 21 28 public class Test { 29 PrintWriter pw; 30 RolapConnection connection; 31 32 static public void main(String [] 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 e) { 40 System.out.println("Error: " + mondrian.olap.Util.getErrorMessage(e)); 41 } 42 } 43 } 44 45 Test(String [] args) 46 { 47 pw = new PrintWriter (System.out, true); 48 String 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 54 { 55 java.sql.Connection connection = null; 56 java.sql.Statement statement = null, statement2 = null; 57 try { 58 try { 59 Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver"); 60 } catch (ClassNotFoundException e) { 61 } 62 String connectString = "jdbc:odbc:DSN=FoodMart2"; 63 connection = java.sql.DriverManager.getConnection(connectString); 64 statement = connection.createStatement(); 65 statement2 = connection.createStatement(); 66 String sql = 67 "select * from (" + 68 " select *, \"fname\" + ' ' + \"lname\" as \"name\" from \"customer\")" + 69 "order by \"country\", \"state_province\", \"city\", \"name\""; 70 java.sql.ResultSet resultSet = statement.executeQuery(sql); 77 if (true) { 78 } 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 e) {} 91 } 92 if (statement != null) { 93 try {statement.close();} catch (java.sql.SQLException e) {} 94 } 95 if (connection != null) { 96 try {connection.close();} catch (java.sql.SQLException 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 <RolapMember> firstChildren = new ArrayList <RolapMember>(); 136 RolapMember member = rootMembers[0]; 137 while (member != null) { 138 firstChildren.add(member); 139 pw.print("\t"); 140 print(member); 141 ArrayList <RolapMember> children = new ArrayList <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 | Popular Tags |