xref: /trunk/main/mysqlc/source/mysqlc_statement.hxx (revision fc9fd3f14a55d77b35643a64034752a178b2a5b0)
1 #ifndef MYSQLC_STATEMENT_HXX
2 #define MYSQLC_STATEMENT_HXX
3 
4 #include "mysqlc_connection.hxx"
5 #include "mysqlc_subcomponent.hxx"
6 
7 #include <com/sun/star/lang/XServiceInfo.hpp>
8 #include <com/sun/star/sdbc/SQLWarning.hpp>
9 #include <com/sun/star/sdbc/XBatchExecution.hpp>
10 #include <com/sun/star/sdbc/XCloseable.hpp>
11 #include <com/sun/star/sdbc/XMultipleResults.hpp>
12 #include <com/sun/star/sdbc/XStatement.hpp>
13 #include <com/sun/star/sdbc/XWarningsSupplier.hpp>
14 #include <com/sun/star/util/XCancellable.hpp>
15 
16 #include <preextstl.h>
17 #include <cppconn/statement.h>
18 #include <postextstl.h>
19 #include <cppuhelper/compbase5.hxx>
20 #include <list>
21 
22 namespace connectivity
23 {
24     namespace mysqlc
25     {
26         using ::com::sun::star::sdbc::SQLWarning;
27         using ::com::sun::star::sdbc::SQLException;
28         using ::com::sun::star::uno::Any;
29         using ::com::sun::star::uno::RuntimeException;
30         using ::rtl::OUString;
31 
32         typedef ::cppu::WeakComponentImplHelper5<   ::com::sun::star::sdbc::XStatement,
33                                                     ::com::sun::star::sdbc::XWarningsSupplier,
34                                                     ::com::sun::star::util::XCancellable,
35                                                     ::com::sun::star::sdbc::XCloseable,
36                                                     ::com::sun::star::sdbc::XMultipleResults> OCommonStatement_IBase;
37 
38         class OCommonStatement;
39         typedef OSubComponent< OCommonStatement, OCommonStatement_IBase >   OStatement_CBase;
40 
41         //**************************************************************
42         //************ Class: OCommonStatement
43         // is a base class for the normal statement and for the prepared statement
44         //**************************************************************
45         class OCommonStatement  :public OBase_Mutex
46                                 ,public OCommonStatement_IBase
47                                 ,public ::cppu::OPropertySetHelper
48                                 ,public OPropertyArrayUsageHelper<OCommonStatement>
49                                 ,public OStatement_CBase
50 
51         {
52             friend class OSubComponent< OCommonStatement, OCommonStatement_IBase >;
53 
54         private:
55             SQLWarning m_aLastWarning;
56 
57         protected:
58             ::std::list< OUString>  m_aBatchList;
59 
60             OConnection*            m_pConnection;  // The owning Connection object
61 
62             sql::Statement          *cppStatement;
63 
64         protected:
65             void disposeResultSet();
66 
67             // OPropertyArrayUsageHelper
68             ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
69 
70             // OPropertySetHelper
71             ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
72             sal_Bool SAL_CALL convertFastPropertyValue(Any & rConvertedValue, Any & rOldValue,
73                                                                sal_Int32 nHandle, const Any& rValue)
74                                                 throw (::com::sun::star::lang::IllegalArgumentException);
75 
76             void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const Any& rValue)
77                                                 throw(::com::sun::star::uno::Exception);
78 
79             void SAL_CALL getFastPropertyValue(Any& rValue, sal_Int32 nHandle) const;
80             virtual ~OCommonStatement();
81 
82         protected:
83             OCommonStatement(OConnection* _pConnection, sql::Statement *_cppStatement);
84 
85         public:
86             ::cppu::OBroadcastHelper& rBHelper;
87             using OCommonStatement_IBase::operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >;
88 
89             // OComponentHelper
90             void SAL_CALL disposing(void);
91 
92             // XInterface
93             void SAL_CALL release()             throw();
94 
95             void SAL_CALL acquire()             throw();
96 
97             // XInterface
98             Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type & rType)
99                                                 throw(RuntimeException);
100 
101             //XTypeProvider
102             ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
103                                                 throw(RuntimeException);
104 
105             // XPropertySet
106             ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo()
107                                                 throw(RuntimeException);
108 
109             // XStatement
110             ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery(const OUString& sql)
111                                                 throw(SQLException, RuntimeException);
112 
113             sal_Int32 SAL_CALL executeUpdate(const OUString& sql)
114                                                 throw(SQLException, RuntimeException);
115 
116             sal_Bool SAL_CALL execute( const OUString& sql )
117                                                 throw(SQLException, RuntimeException);
118 
119             ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection()
120                                                 throw(SQLException, RuntimeException);
121 
122             // XWarningsSupplier
123             Any SAL_CALL getWarnings()      throw(SQLException, RuntimeException);
124 
125             void SAL_CALL clearWarnings()       throw(SQLException, RuntimeException);
126 
127             // XCancellable
128             void SAL_CALL cancel()              throw(RuntimeException);
129 
130             // XCloseable
131             void SAL_CALL close()               throw(SQLException, RuntimeException);
132 
133             // XMultipleResults
134             ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getResultSet()
135                                                 throw(SQLException, RuntimeException);
136 
137             sal_Int32 SAL_CALL getUpdateCount() throw(SQLException, RuntimeException);
138 
139             sal_Bool SAL_CALL getMoreResults()  throw(SQLException, RuntimeException);
140 
141             // other methods
142             OConnection* getOwnConnection() const { return m_pConnection;}
143 
144         private:
145             using ::cppu::OPropertySetHelper::getFastPropertyValue;
146         };
147 
148 
149         class OStatement :  public OCommonStatement,
150                             public ::com::sun::star::sdbc::XBatchExecution,
151                             public ::com::sun::star::lang::XServiceInfo
152 
153         {
154         protected:
155             virtual ~OStatement(){}
156 
157         public:
158             // ein Konstruktor, der fuer das Returnen des Objektes benoetigt wird:
159             OStatement(OConnection* _pConnection, sql::Statement *_cppStatement) : OCommonStatement(_pConnection, _cppStatement) {}
160             DECLARE_SERVICE_INFO();
161 
162             Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType )
163                                                 throw(RuntimeException);
164 
165             void SAL_CALL acquire()             throw();
166             void SAL_CALL release()             throw();
167 
168             // XBatchExecution
169             void SAL_CALL addBatch(const OUString& sql)
170                                                 throw(SQLException, RuntimeException);
171 
172             void SAL_CALL clearBatch()          throw(SQLException, RuntimeException);
173 
174             ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL executeBatch()
175                                                 throw(SQLException, RuntimeException);
176 
177         };
178     }
179 }
180 #endif // MYSQLC_STATEMENT_HXX
181 
182 /*
183  * Local variables:
184  * tab-width: 4
185  * c-basic-offset: 4
186  * End:
187  * vim600: noet sw=4 ts=4 fdm=marker
188  * vim<600: noet sw=4 ts=4
189  */
190