xref: /AOO41X/main/dbaccess/source/core/dataaccess/SharedConnection.hxx (revision 2e2212a7c22e96cf6f6fab0dd042c34a45a64bd6)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef DBA_CORE_SHARED_CONNECTION_HXX
24 #define DBA_CORE_SHARED_CONNECTION_HXX
25 
26 #ifndef _CONNECTIVITY_CONNECTIONWRAPPER_HXX_
27 #include "connectivity/ConnectionWrapper.hxx"
28 #endif
29 #ifndef _CPPUHELPER_COMPONENT_HXX_
30 #include <cppuhelper/component.hxx>
31 #endif
32 #ifndef _CONNECTIVITY_COMMONTOOLS_HXX_
33 #include <connectivity/CommonTools.hxx>
34 #endif
35 #ifndef _CPPUHELPER_COMPBASE1_HXX_
36 #include <cppuhelper/compbase1.hxx>
37 #endif
38 #ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
39 #include <com/sun/star/sdbc/XConnection.hpp>
40 #endif
41 #ifndef _COM_SUN_STAR_SDBC_XWARNINGSSUPPLIER_HPP_
42 #include <com/sun/star/sdbc/XWarningsSupplier.hpp>
43 #endif
44 #ifndef _COM_SUN_STAR_SDBC_SQLWARNING_HPP_
45 #include <com/sun/star/sdbc/SQLWarning.hpp>
46 #endif
47 #ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_
48 #include <com/sun/star/beans/PropertyValue.hpp>
49 #endif
50 #ifndef _COM_SUN_STAR_SDB_XSQLQUERYCOMPOSERFACTORY_HPP_
51 #include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
52 #endif
53 #ifndef _COM_SUN_STAR_SDB_XCOMMANDPREPARATION_HPP_
54 #include <com/sun/star/sdb/XCommandPreparation.hpp>
55 #endif
56 #ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
57 #include <com/sun/star/sdbcx/XTablesSupplier.hpp>
58 #endif
59 #ifndef _COM_SUN_STAR_SDBCX_XVIEWSSUPPLIER_HPP_
60 #include <com/sun/star/sdbcx/XViewsSupplier.hpp>
61 #endif
62 #ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
63 #include <com/sun/star/sdb/XQueriesSupplier.hpp>
64 #endif
65 #ifndef _COMPHELPER_SEQUENCE_HXX_
66 #include <comphelper/sequence.hxx>
67 #endif
68 
69 
70 namespace dbaccess
71 {
72     //=======================================================================================
73     //= OSharedConnection: This class implements a simple forwarding of connection calls.
74     //= All methods will be forwarded with exception of the set methods, which are not allowed
75     //= to be called on shared connections. Instances of this class will be created when the
76     //= datasource is asked for not isolated connection.
77     //=======================================================================================
78     typedef ::cppu::WeakComponentImplHelper1< ::com::sun::star::sdbc::XConnection
79                                             > OSharedConnection_BASE;
80     typedef ::connectivity::OConnectionWrapper  OSharedConnection_BASE2;
81 
82     class OSharedConnection :   public ::comphelper::OBaseMutex
83                               , public OSharedConnection_BASE
84                               , public OSharedConnection_BASE2
85     {
86     protected:
87         virtual void SAL_CALL disposing(void);
88         virtual ~OSharedConnection();
89     public:
90         OSharedConnection(::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation >& _rxProxyConnection);
91 
92         virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw (::com::sun::star::uno::RuntimeException);
93 
acquire()94         virtual void SAL_CALL acquire() throw() { OSharedConnection_BASE::acquire(); }
release()95         virtual void SAL_CALL release() throw() { OSharedConnection_BASE::release(); }
getTypes()96         virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw (::com::sun::star::uno::RuntimeException)
97         {
98             return ::comphelper::concatSequences(
99                 OSharedConnection_BASE::getTypes(),
100                 OSharedConnection_BASE2::getTypes()
101             );
102         }
103 
queryInterface(const::com::sun::star::uno::Type & _rType)104         virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& _rType ) throw (::com::sun::star::uno::RuntimeException)
105         {
106             ::com::sun::star::uno::Any aReturn = OSharedConnection_BASE::queryInterface(_rType);
107             if ( !aReturn.hasValue() )
108                 aReturn = OSharedConnection_BASE2::queryInterface(_rType);
109             return aReturn;
110         }
111         // --------------------------------------------------------------------------------
112         // XCloseable
close()113         virtual void SAL_CALL close(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
114         {
115             {
116                 ::osl::MutexGuard aGuard( m_aMutex );
117                 ::connectivity::checkDisposed(rBHelper.bDisposed);
118 
119             }
120             dispose();
121         }
122 
123         // XConnection
setAutoCommit(sal_Bool)124         virtual void SAL_CALL setAutoCommit( sal_Bool /*autoCommit*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
125         {
126             throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
127         }
setReadOnly(sal_Bool)128         virtual void SAL_CALL setReadOnly( sal_Bool /*readOnly*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
129         {
130             throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
131         }
setCatalog(const::rtl::OUString &)132         virtual void SAL_CALL setCatalog( const ::rtl::OUString& /*catalog*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
133         {
134             throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
135         }
setTransactionIsolation(sal_Int32)136         virtual void SAL_CALL setTransactionIsolation( sal_Int32 /*level*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
137         {
138             throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
139         }
setTypeMap(const::com::sun::star::uno::Reference<::com::sun::star::container::XNameAccess> &)140         virtual void SAL_CALL setTypeMap( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& /*typeMap*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
141         {
142             throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
143         }
144         // XConnection
145         virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
146         virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
147         virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
148         virtual ::rtl::OUString SAL_CALL nativeSQL( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
149         virtual sal_Bool SAL_CALL getAutoCommit(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
150         virtual void SAL_CALL commit(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
151         virtual void SAL_CALL rollback(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
152         virtual sal_Bool SAL_CALL isClosed(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
153         virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
154         virtual sal_Bool SAL_CALL isReadOnly(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
155         virtual ::rtl::OUString SAL_CALL getCatalog(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
156         virtual sal_Int32 SAL_CALL getTransactionIsolation(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
157         virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTypeMap(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
158     };
159 
160 #ifdef IMPLEMENT_GET_IMPLEMENTATION_ID
161     IMPLEMENT_GET_IMPLEMENTATION_ID( OSharedConnection );
162 #endif
163 //........................................................................
164 }   // namespace dbaccess
165 //........................................................................
166 #endif // DBA_CORE_SHARED_CONNECTION_HXX
167 
168 
169