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