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.*; 015 016import java.sql.*; 017import java.util.*; 018 019/** 020 * Implementation of {@link Factory} for JDBC 4.0. 021 * 022 * @author jhyde 023 * @since Jun 14, 2007 024 */ 025class FactoryJdbc4Impl implements Factory { 026 public Connection newConnection( 027 MondrianOlap4jDriver driver, 028 String url, 029 Properties info) 030 throws SQLException 031 { 032 return new MondrianOlap4jConnectionJdbc4(this, driver, url, info); 033 } 034 035 public EmptyResultSet newEmptyResultSet( 036 MondrianOlap4jConnection olap4jConnection) 037 { 038 List<String> headerList = Collections.emptyList(); 039 List<List<Object>> rowList = Collections.emptyList(); 040 return new EmptyResultSetJdbc4( 041 olap4jConnection, headerList, rowList); 042 } 043 044 public ResultSet newFixedResultSet( 045 MondrianOlap4jConnection olap4jConnection, 046 List<String> headerList, 047 List<List<Object>> rowList) 048 { 049 return new EmptyResultSetJdbc4( 050 olap4jConnection, headerList, rowList); 051 } 052 053 public MondrianOlap4jCellSet newCellSet( 054 MondrianOlap4jStatement olap4jStatement) 055 { 056 return new MondrianOlap4jCellSetJdbc4(olap4jStatement); 057 } 058 059 public MondrianOlap4jStatement newStatement( 060 MondrianOlap4jConnection olap4jConnection) 061 { 062 return new MondrianOlap4jStatementJdbc4(olap4jConnection); 063 } 064 065 public MondrianOlap4jPreparedStatement newPreparedStatement( 066 String mdx, 067 MondrianOlap4jConnection olap4jConnection) 068 throws OlapException 069 { 070 return new MondrianOlap4jPreparedStatementJdbc4(olap4jConnection, mdx); 071 } 072 073 public MondrianOlap4jDatabaseMetaData newDatabaseMetaData( 074 MondrianOlap4jConnection olap4jConnection, 075 RolapConnection mondrianConnection) 076 { 077 return new MondrianOlap4jDatabaseMetaDataJdbc4( 078 olap4jConnection, mondrianConnection); 079 } 080 081 // Inner classes 082 083 private static class EmptyResultSetJdbc4 084 extends FactoryJdbc4Plus.AbstractEmptyResultSet 085 { 086 EmptyResultSetJdbc4( 087 MondrianOlap4jConnection olap4jConnection, 088 List<String> headerList, 089 List<List<Object>> rowList) 090 { 091 super(olap4jConnection, headerList, rowList); 092 } 093 } 094 095 private static class MondrianOlap4jConnectionJdbc4 096 extends FactoryJdbc4Plus.AbstractConnection 097 { 098 MondrianOlap4jConnectionJdbc4( 099 Factory factory, 100 MondrianOlap4jDriver driver, 101 String url, 102 Properties info) throws SQLException 103 { 104 super(factory, driver, url, info); 105 } 106 } 107 108 private static class MondrianOlap4jCellSetJdbc4 109 extends FactoryJdbc4Plus.AbstractCellSet 110 { 111 public MondrianOlap4jCellSetJdbc4( 112 MondrianOlap4jStatement olap4jStatement) 113 { 114 super(olap4jStatement); 115 } 116 } 117 118 private static class MondrianOlap4jStatementJdbc4 119 extends MondrianOlap4jStatement 120 { 121 public MondrianOlap4jStatementJdbc4( 122 MondrianOlap4jConnection olap4jConnection) 123 { 124 super(olap4jConnection); 125 } 126 } 127 128 private static class MondrianOlap4jPreparedStatementJdbc4 129 extends FactoryJdbc4Plus.AbstractPreparedStatement 130 { 131 public MondrianOlap4jPreparedStatementJdbc4( 132 MondrianOlap4jConnection olap4jConnection, 133 String mdx) 134 throws OlapException 135 { 136 super(olap4jConnection, mdx); 137 } 138 } 139 140 private static class MondrianOlap4jDatabaseMetaDataJdbc4 141 extends FactoryJdbc4Plus.AbstractDatabaseMetaData 142 { 143 public MondrianOlap4jDatabaseMetaDataJdbc4( 144 MondrianOlap4jConnection olap4jConnection, 145 RolapConnection mondrianConnection) 146 { 147 super(olap4jConnection, mondrianConnection); 148 } 149 } 150} 151 152// End FactoryJdbc4Impl.java