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