001/* 002// This software is subject to the terms of the Eclipse Public License v1.0 003// Agreement, available at the following URL: 004// http://www.eclipse.org/legal/epl-v10.html. 005// You must accept the terms of that agreement to use this software. 006// 007// Copyright (C) 2007-2011 Pentaho 008// All Rights Reserved. 009*/ 010package mondrian.olap4j; 011 012import mondrian.rolap.RolapConnection; 013 014import org.olap4j.OlapException; 015 016import java.sql.*; 017import java.util.*; 018 019/** 020 * Implementation of {@link mondrian.olap4j.Factory} for JDBC 3.0. 021 * 022 * @author jhyde 023 * @since Jun 14, 2007 024 */ 025class FactoryJdbc3Impl implements Factory { 026 private CatalogFinder catalogFinder; 027 028 public Connection newConnection( 029 MondrianOlap4jDriver driver, 030 String url, 031 Properties info) 032 throws SQLException 033 { 034 return new MondrianOlap4jConnectionJdbc3(driver, url, info); 035 } 036 037 public EmptyResultSet newEmptyResultSet( 038 MondrianOlap4jConnection olap4jConnection) 039 { 040 List<String> headerList = Collections.emptyList(); 041 List<List<Object>> rowList = Collections.emptyList(); 042 return new EmptyResultSetJdbc3( 043 olap4jConnection, headerList, rowList); 044 } 045 046 public ResultSet newFixedResultSet( 047 MondrianOlap4jConnection olap4jConnection, 048 List<String> headerList, 049 List<List<Object>> rowList) 050 { 051 return new EmptyResultSetJdbc3( 052 olap4jConnection, headerList, rowList); 053 } 054 055 public MondrianOlap4jCellSet newCellSet( 056 MondrianOlap4jStatement olap4jStatement) 057 { 058 return new MondrianOlap4jCellSetJdbc3(olap4jStatement); 059 } 060 061 public MondrianOlap4jStatement newStatement( 062 MondrianOlap4jConnection olap4jConnection) 063 { 064 return new MondrianOlap4jStatementJdbc3(olap4jConnection); 065 } 066 067 public MondrianOlap4jPreparedStatement newPreparedStatement( 068 String mdx, 069 MondrianOlap4jConnection olap4jConnection) 070 throws OlapException 071 { 072 return new MondrianOlap4jPreparedStatementJdbc3(olap4jConnection, mdx); 073 } 074 075 public MondrianOlap4jDatabaseMetaData newDatabaseMetaData( 076 MondrianOlap4jConnection olap4jConnection, 077 RolapConnection mondrianConnection) 078 { 079 return new MondrianOlap4jDatabaseMetaDataJdbc3( 080 olap4jConnection, mondrianConnection); 081 } 082 083 // Inner classes 084 085 private static class MondrianOlap4jStatementJdbc3 086 extends MondrianOlap4jStatement 087 { 088 public MondrianOlap4jStatementJdbc3( 089 MondrianOlap4jConnection olap4jConnection) 090 { 091 super(olap4jConnection); 092 } 093 } 094 095 private static class MondrianOlap4jPreparedStatementJdbc3 096 extends MondrianOlap4jPreparedStatement 097 { 098 public MondrianOlap4jPreparedStatementJdbc3( 099 MondrianOlap4jConnection olap4jConnection, 100 String mdx) 101 throws OlapException 102 { 103 super(olap4jConnection, mdx); 104 } 105 } 106 107 private static class MondrianOlap4jCellSetJdbc3 108 extends MondrianOlap4jCellSet 109 { 110 public MondrianOlap4jCellSetJdbc3( 111 MondrianOlap4jStatement olap4jStatement) 112 { 113 super(olap4jStatement); 114 } 115 } 116 117 private static class EmptyResultSetJdbc3 extends EmptyResultSet { 118 public EmptyResultSetJdbc3( 119 MondrianOlap4jConnection olap4jConnection, 120 List<String> headerList, 121 List<List<Object>> rowList) 122 { 123 super(olap4jConnection, headerList, rowList); 124 } 125 } 126 127 private class MondrianOlap4jConnectionJdbc3 128 extends MondrianOlap4jConnection 129 { 130 public MondrianOlap4jConnectionJdbc3( 131 MondrianOlap4jDriver driver, 132 String url, 133 Properties info) throws SQLException 134 { 135 super(FactoryJdbc3Impl.this, driver, url, info); 136 } 137 } 138 139 private static class MondrianOlap4jDatabaseMetaDataJdbc3 140 extends MondrianOlap4jDatabaseMetaData 141 { 142 public MondrianOlap4jDatabaseMetaDataJdbc3( 143 MondrianOlap4jConnection olap4jConnection, 144 RolapConnection mondrianConnection) 145 { 146 super(olap4jConnection, mondrianConnection); 147 } 148 } 149} 150 151// End FactoryJdbc3Impl.java