bump product version to 5.0.4.1
[LibreOffice.git] / forms / source / component / DatabaseForm.hxx
blob62c9892e6e30f32d32f0554133c776ea3411cb8e
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_FORMS_SOURCE_COMPONENT_DATABASEFORM_HXX
21 #define INCLUDED_FORMS_SOURCE_COMPONENT_DATABASEFORM_HXX
23 #include <sal/config.h>
25 #include <vector>
27 #include "propertybaghelper.hxx"
28 #include <com/sun/star/sdbc/XDataSource.hpp>
29 #include <com/sun/star/sdb/XSQLErrorListener.hpp>
30 #include <com/sun/star/io/XPersistObject.hpp>
31 #include <com/sun/star/sdb/XSQLErrorBroadcaster.hpp>
32 #include <com/sun/star/form/FormSubmitMethod.hpp>
33 #include <com/sun/star/form/FormSubmitEncoding.hpp>
34 #include <com/sun/star/form/XSubmit.hpp>
35 #include <com/sun/star/form/XReset.hpp>
36 #include <com/sun/star/form/XDatabaseParameterBroadcaster2.hpp>
37 #include <com/sun/star/sdb/XCompletedExecution.hpp>
38 #include <com/sun/star/sdbc/XRowSet.hpp>
39 #include <com/sun/star/sdbcx/XDeleteRows.hpp>
40 #include <com/sun/star/sdbc/XResultSetUpdate.hpp>
41 #include <com/sun/star/sdb/XRowSetApproveListener.hpp>
42 #include <com/sun/star/sdb/XRowSetApproveBroadcaster.hpp>
43 #include <com/sun/star/form/NavigationBarMode.hpp>
44 #include <com/sun/star/form/XLoadable.hpp>
45 #include <com/sun/star/form/XLoadListener.hpp>
46 #include <com/sun/star/form/XForm.hpp>
47 #include <com/sun/star/awt/XTabControllerModel.hpp>
48 #include <com/sun/star/script/XEventAttacherManager.hpp>
49 #include <com/sun/star/sdbc/XRowSetListener.hpp>
50 #include <com/sun/star/sdb/XResultSetAccess.hpp>
51 #include <com/sun/star/sdbc/XCloseable.hpp>
52 #include <com/sun/star/container/XNamed.hpp>
53 #include <com/sun/star/lang/XServiceInfo.hpp>
54 #include <com/sun/star/sdbc/XParameters.hpp>
55 #include <com/sun/star/sdbc/XConnection.hpp>
56 #include <com/sun/star/task/XInteractionHandler.hpp>
57 #include <com/sun/star/beans/XPropertyContainer.hpp>
58 #include <com/sun/star/beans/XPropertyAccess.hpp>
59 #include <com/sun/star/sdbc/XWarningsSupplier.hpp>
62 #include <tools/link.hxx>
63 #include "InterfaceContainer.hxx"
65 #include <connectivity/parameters.hxx>
66 #include <connectivity/filtermanager.hxx>
67 #include <connectivity/warningscontainer.hxx>
69 #include "listenercontainers.hxx"
70 #include <comphelper/propmultiplex.hxx>
71 #include <comphelper/uno3.hxx>
72 #include <comphelper/proparrhlp.hxx>
73 #include <cppuhelper/implbase12.hxx>
74 #include <cppuhelper/implbase4.hxx>
75 #include <cppuhelper/implbase7.hxx>
77 namespace com { namespace sun { namespace star { namespace sdbc {
78 class SQLException;
79 } } } }
81 class Timer;
82 class INetMIMEMessage;
85 namespace frm
90 //= html tools
93 const sal_uInt16 SUCCESSFUL_REPRESENT_TEXT = 0x0001;
94 const sal_uInt16 SUCCESSFUL_REPRESENT_FILE = 0x0002;
97 class HtmlSuccessfulObj
99 public:
100 OUString aName;
101 OUString aValue;
102 sal_uInt16 nRepresentation;
104 HtmlSuccessfulObj( const OUString& _rName, const OUString& _rValue,
105 sal_uInt16 _nRepresent = SUCCESSFUL_REPRESENT_TEXT )
106 :aName( _rName )
107 ,aValue( _rValue )
108 ,nRepresentation( _nRepresent )
112 HtmlSuccessfulObj()
117 typedef std::vector<HtmlSuccessfulObj> HtmlSuccessfulObjList;
120 class OGroupManager;
121 class OFormSubmitResetThread;
122 typedef ::cppu::ImplHelper12 < ::com::sun::star::form::XForm
123 , ::com::sun::star::awt::XTabControllerModel
124 , ::com::sun::star::form::XLoadListener
125 , ::com::sun::star::sdbc::XRowSetListener
126 , ::com::sun::star::sdb::XRowSetApproveListener
127 , ::com::sun::star::form::XDatabaseParameterBroadcaster2
128 , ::com::sun::star::sdb::XSQLErrorListener
129 , ::com::sun::star::sdb::XSQLErrorBroadcaster
130 , ::com::sun::star::form::XReset
131 , ::com::sun::star::form::XSubmit
132 , ::com::sun::star::form::XLoadable
133 , ::com::sun::star::container::XNamed
134 > ODatabaseForm_BASE1;
137 typedef ::cppu::ImplHelper4 < ::com::sun::star::lang::XServiceInfo
138 , ::com::sun::star::beans::XPropertyContainer
139 , ::com::sun::star::beans::XPropertyAccess
140 , ::com::sun::star::sdbc::XWarningsSupplier
141 > ODatabaseForm_BASE2;
143 typedef ::cppu::ImplHelper7< ::com::sun::star::sdbc::XCloseable,
144 ::com::sun::star::sdbc::XRowSet,
145 ::com::sun::star::sdb::XCompletedExecution,
146 ::com::sun::star::sdb::XRowSetApproveBroadcaster,
147 ::com::sun::star::sdbc::XResultSetUpdate,
148 ::com::sun::star::sdbcx::XDeleteRows,
149 ::com::sun::star::sdbc::XParameters > ODatabaseForm_BASE3;
152 class ODatabaseForm :public OFormComponents
153 ,public OPropertySetAggregationHelper
154 ,public OPropertyChangeListener
155 ,public ODatabaseForm_BASE1
156 ,public ODatabaseForm_BASE2
157 ,public ODatabaseForm_BASE3
158 ,public IPropertyBagHelperContext
160 friend class OFormSubmitResetThread;
162 // listener administration
163 ::cppu::OInterfaceContainerHelper m_aLoadListeners;
164 ::cppu::OInterfaceContainerHelper m_aRowSetApproveListeners;
165 ::cppu::OInterfaceContainerHelper m_aRowSetListeners;
166 ::cppu::OInterfaceContainerHelper m_aSubmitListeners;
167 ::cppu::OInterfaceContainerHelper m_aErrorListeners;
168 ResetListeners m_aResetListeners;
169 ::osl::Mutex m_aResetSafety;
170 ::com::sun::star::uno::Any m_aCycle;
171 ::com::sun::star::uno::Any m_aIgnoreResult; // set when we are a subform and our master form positioned on a new row
172 ::com::sun::star::uno::Sequence< OUString > m_aMasterFields;
173 ::com::sun::star::uno::Sequence< OUString > m_aDetailFields;
175 // the object doin' most of the work - an SDB-rowset
176 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation> m_xAggregate;
177 // same object, interface as member because of performance reasons
178 ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet> m_xAggregateAsRowSet;
180 PropertyBagHelper m_aPropertyBagHelper;
181 ::dbtools::WarningsContainer m_aWarnings;
182 OPropertyChangeMultiplexer* m_pAggregatePropertyMultiplexer;
183 // Management of the Control Groups
184 OGroupManager* m_pGroupManager;
185 ::dbtools::ParameterManager m_aParameterManager;
186 ::dbtools::FilterManager m_aFilterManager;
187 Timer* m_pLoadTimer;
189 OFormSubmitResetThread* m_pThread;
190 OUString m_sCurrentErrorContext;
191 // will be used as additional context information
192 // when an exception is catched and forwarded to the listeners
194 sal_Int32 m_nResetsPending;
195 // <overwritten_properties>
196 sal_Int32 m_nPrivileges;
197 bool m_bInsertOnly;
198 // </overwritten_properties>
200 // <properties>
201 ::com::sun::star::uno::Any m_aControlBorderColorFocus;
202 ::com::sun::star::uno::Any m_aControlBorderColorMouse;
203 ::com::sun::star::uno::Any m_aControlBorderColorInvalid;
204 ::com::sun::star::uno::Any m_aDynamicControlBorder;
205 OUString m_sName;
206 OUString m_aTargetURL;
207 OUString m_aTargetFrame;
208 ::com::sun::star::form::FormSubmitMethod m_eSubmitMethod;
209 ::com::sun::star::form::FormSubmitEncoding m_eSubmitEncoding;
210 ::com::sun::star::form::NavigationBarMode m_eNavigation;
211 bool m_bAllowInsert : 1;
212 bool m_bAllowUpdate : 1;
213 bool m_bAllowDelete : 1;
214 // </properties>
215 bool m_bLoaded : 1;
216 bool m_bSubForm : 1;
217 bool m_bForwardingConnection : 1; // sal_True if we're setting the ActiveConnection on the aggregate
218 bool m_bSharingConnection : 1; // sal_True if the connection we're using is shared with out parent
220 public:
221 ODatabaseForm(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext>& _rxFactory);
222 ODatabaseForm( const ODatabaseForm& _cloneSource );
223 virtual ~ODatabaseForm();
225 // UNO binding
226 DECLARE_UNO3_AGG_DEFAULTS(ODatabaseForm, OFormComponents)
227 virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation(const ::com::sun::star::uno::Type& _rType) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
229 // XTypeProvider
230 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
231 virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
233 // ::com::sun::star::lang::XComponent
234 virtual void SAL_CALL disposing() SAL_OVERRIDE;
236 // property handling
237 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
238 virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() SAL_OVERRIDE;
239 virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const SAL_OVERRIDE;
240 virtual sal_Bool SAL_CALL convertFastPropertyValue(::com::sun::star::uno::Any& rConvertedValue, ::com::sun::star::uno::Any& rOldValue, sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::lang::IllegalArgumentException) SAL_OVERRIDE;
241 virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue) throw ( ::com::sun::star::uno::Exception, std::exception ) SAL_OVERRIDE;
243 ::com::sun::star::uno::Any SAL_CALL getFastPropertyValue( sal_Int32 nHandle )
244 throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
245 void fire( sal_Int32 * pnHandles, const ::com::sun::star::uno::Any * pNewValues, const ::com::sun::star::uno::Any * pOldValues, sal_Int32 nCount, bool bVetoable );
247 // IPropertyBagHelperContext
248 virtual ::osl::Mutex& getMutex() SAL_OVERRIDE;
249 virtual void describeFixedAndAggregateProperties(
250 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& _out_rFixedProperties,
251 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& _out_rAggregateProperties
252 ) const SAL_OVERRIDE;
253 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XMultiPropertySet >
254 getPropertiesInterface() SAL_OVERRIDE;
256 // com::sun::star::beans::XPropertyState
257 virtual ::com::sun::star::beans::PropertyState getPropertyStateByHandle(sal_Int32 nHandle) SAL_OVERRIDE;
258 virtual void setPropertyToDefaultByHandle(sal_Int32 nHandle) SAL_OVERRIDE;
259 virtual ::com::sun::star::uno::Any getPropertyDefaultByHandle(sal_Int32 nHandle) const SAL_OVERRIDE;
261 // com::sun::star::sdbc::XSQLErrorBroadcaster
262 virtual void SAL_CALL addSQLErrorListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSQLErrorListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
263 virtual void SAL_CALL removeSQLErrorListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSQLErrorListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
265 // com::sun::star::form::XForm
266 // nothing to implement
268 // com::sun::star::form::XReset
269 virtual void SAL_CALL reset() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
270 virtual void SAL_CALL addResetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
271 virtual void SAL_CALL removeResetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
273 // com::sun::star::form::XSubmit
274 virtual void SAL_CALL submit(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& aControl, const ::com::sun::star::awt::MouseEvent& aMouseEvt) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
275 virtual void SAL_CALL addSubmitListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XSubmitListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
276 virtual void SAL_CALL removeSubmitListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XSubmitListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
278 // com::sun::star::container::XChild
279 virtual InterfaceRef SAL_CALL getParent() throw ( ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE { return OFormComponents::getParent(); }
280 virtual void SAL_CALL setParent(const InterfaceRef& Parent) throw ( :: com::sun::star::lang::NoSupportException , ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
282 // com::sun::star::container::XNamed
283 virtual OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
284 virtual void SAL_CALL setName(const OUString& aName) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
286 // com::sun::star::awt::XTabControllerModel
287 virtual sal_Bool SAL_CALL getGroupControl() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
288 virtual void SAL_CALL setGroupControl(sal_Bool /*_bGroupControl*/) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE { }
289 virtual void SAL_CALL setControlModels(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > >& _rControls) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
290 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > > SAL_CALL getControlModels() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
291 virtual void SAL_CALL setGroup(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > >& _rGroup, const OUString& _rGroupName) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
292 virtual sal_Int32 SAL_CALL getGroupCount() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
293 virtual void SAL_CALL getGroup(sal_Int32 _nGroup, ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > >& _rxGroup, OUString& _rName) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
294 virtual void SAL_CALL getGroupByName(const OUString& _rName, ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > >& _rxGroup) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
296 // com::sun::star::lang::XEventListener
297 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& _rSource) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
299 // com::sun::star::form::XLoadListener
300 virtual void SAL_CALL loaded(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
301 virtual void SAL_CALL unloading(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
302 virtual void SAL_CALL unloaded(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
303 virtual void SAL_CALL reloading(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
304 virtual void SAL_CALL reloaded(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
306 // com::sun::star::form::XLoadable
307 virtual void SAL_CALL load() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
308 virtual void SAL_CALL unload() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
309 virtual void SAL_CALL reload() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
310 virtual sal_Bool SAL_CALL isLoaded() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
311 virtual void SAL_CALL addLoadListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XLoadListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
312 virtual void SAL_CALL removeLoadListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XLoadListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
314 // com::sun::star::sdbc::XCloseable
315 virtual void SAL_CALL close() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
317 // com::sun::star::sdbc::XRowSetListener
318 virtual void SAL_CALL cursorMoved(const ::com::sun::star::lang::EventObject& event) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
319 virtual void SAL_CALL rowChanged(const ::com::sun::star::lang::EventObject& event) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
320 virtual void SAL_CALL rowSetChanged(const ::com::sun::star::lang::EventObject& event) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
322 // com::sun::star::sdb::XRowSetApproveListener
323 virtual sal_Bool SAL_CALL approveCursorMove(const ::com::sun::star::lang::EventObject& event) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
324 virtual sal_Bool SAL_CALL approveRowChange(const ::com::sun::star::sdb::RowChangeEvent& event) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
325 virtual sal_Bool SAL_CALL approveRowSetChange(const ::com::sun::star::lang::EventObject& event) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
327 // com::sun::star::sdb::XRowSetApproveBroadcaster
328 virtual void SAL_CALL addRowSetApproveListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetApproveListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
329 virtual void SAL_CALL removeRowSetApproveListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetApproveListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
331 // com::sun:star::form::XDatabaseParameterBroadcaster2
332 virtual void SAL_CALL addDatabaseParameterListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XDatabaseParameterListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
333 virtual void SAL_CALL removeDatabaseParameterListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XDatabaseParameterListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
335 // com::sun:star::form::XDatabaseParameterBroadcaster
336 virtual void SAL_CALL addParameterListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XDatabaseParameterListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
337 virtual void SAL_CALL removeParameterListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XDatabaseParameterListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
339 // com::sun::star::sdbc::XRowSet
340 virtual void SAL_CALL execute() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
341 virtual void SAL_CALL addRowSetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
342 virtual void SAL_CALL removeRowSetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
344 // com::sun::star::sdb::XCompletedExecution
345 virtual void SAL_CALL executeWithCompletion( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& handler ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
347 // com::sun::star::sdbc::XResultSet
348 virtual sal_Bool SAL_CALL next() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
349 virtual sal_Bool SAL_CALL isBeforeFirst() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
350 virtual sal_Bool SAL_CALL isAfterLast() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
351 virtual sal_Bool SAL_CALL isFirst() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
352 virtual sal_Bool SAL_CALL isLast() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
353 virtual void SAL_CALL beforeFirst() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
354 virtual void SAL_CALL afterLast() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
355 virtual sal_Bool SAL_CALL first() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
356 virtual sal_Bool SAL_CALL last() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
357 virtual sal_Int32 SAL_CALL getRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
358 virtual sal_Bool SAL_CALL absolute(sal_Int32 row) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
359 virtual sal_Bool SAL_CALL relative(sal_Int32 rows) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
360 virtual sal_Bool SAL_CALL previous() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
361 virtual void SAL_CALL refreshRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
362 virtual sal_Bool SAL_CALL rowUpdated() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
363 virtual sal_Bool SAL_CALL rowInserted() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
364 virtual sal_Bool SAL_CALL rowDeleted() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
365 virtual InterfaceRef SAL_CALL getStatement() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
367 // com::sun::star::sdbc::XResultSetUpdate
368 virtual void SAL_CALL insertRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
369 virtual void SAL_CALL updateRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
370 virtual void SAL_CALL deleteRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
371 virtual void SAL_CALL cancelRowUpdates() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
372 virtual void SAL_CALL moveToInsertRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
373 virtual void SAL_CALL moveToCurrentRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
375 // com::sun::star::sdbcx::XDeleteRows
376 virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>& rows) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
378 // com::sun::star::lang::XServiceInfo
379 virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
380 virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
381 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
383 // com::sun::star::lang::XServiceInfo - static version
384 static OUString SAL_CALL getImplementationName_Static();
385 static ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames_Static();
387 // com::sun::star::io::XPersistObject
388 virtual OUString SAL_CALL getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
389 virtual void SAL_CALL write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream>& _rxOutStream) throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
390 virtual void SAL_CALL read(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream>& _rxInStream) throw(::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
392 // com::sun::star::sdbc::XSQLErrorListener
393 virtual void SAL_CALL errorOccured(const ::com::sun::star::sdb::SQLErrorEvent& aEvent) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
395 // com::sun::star::sdbc::XParameters
396 virtual void SAL_CALL setNull(sal_Int32 parameterIndex, sal_Int32 sqlType) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
397 virtual void SAL_CALL setObjectNull(sal_Int32 parameterIndex, sal_Int32 sqlType, const OUString& typeName) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
398 virtual void SAL_CALL setBoolean(sal_Int32 parameterIndex, sal_Bool x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
399 virtual void SAL_CALL setByte(sal_Int32 parameterIndex, sal_Int8 x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
400 virtual void SAL_CALL setShort(sal_Int32 parameterIndex, sal_Int16 x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
401 virtual void SAL_CALL setInt(sal_Int32 parameterIndex, sal_Int32 x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
402 virtual void SAL_CALL setLong(sal_Int32 parameterIndex, sal_Int64 x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
403 virtual void SAL_CALL setFloat(sal_Int32 parameterIndex, float x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
404 virtual void SAL_CALL setDouble(sal_Int32 parameterIndex, double x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
405 virtual void SAL_CALL setString(sal_Int32 parameterIndex, const OUString& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
406 virtual void SAL_CALL setBytes(sal_Int32 parameterIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
407 virtual void SAL_CALL setDate(sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
408 virtual void SAL_CALL setTime(sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
409 virtual void SAL_CALL setTimestamp(sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
410 virtual void SAL_CALL setBinaryStream(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x, sal_Int32 length) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
411 virtual void SAL_CALL setCharacterStream(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x, sal_Int32 length) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
412 virtual void SAL_CALL setObject(sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
413 virtual void SAL_CALL setObjectWithInfo(sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
414 virtual void SAL_CALL setRef(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef>& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
415 virtual void SAL_CALL setBlob(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob>& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
416 virtual void SAL_CALL setClob(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob>& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
417 virtual void SAL_CALL setArray(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray>& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
418 virtual void SAL_CALL clearParameters() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
420 // XPropertyChangeListener
421 virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
423 // XPropertyContainer
424 virtual void SAL_CALL addProperty( const OUString& Name, ::sal_Int16 Attributes, const ::com::sun::star::uno::Any& DefaultValue ) throw (::com::sun::star::beans::PropertyExistException, ::com::sun::star::beans::IllegalTypeException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
425 virtual void SAL_CALL removeProperty( const OUString& Name ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::NotRemoveableException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
427 // XPropertyAccess
428 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getPropertyValues( ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
429 virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aProps ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
430 using OPropertySetAggregationHelper::setPropertyValues;
432 // XWarningsSupplier
433 virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
434 virtual void SAL_CALL clearWarnings( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
436 // XCloneable
437 virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone( ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
439 inline void submitNBC( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& Control, const ::com::sun::star::awt::MouseEvent& MouseEvt );
441 protected:
442 // OPropertySetAggregationHelper overridables
443 virtual void forwardingPropertyValue( sal_Int32 _nHandle ) SAL_OVERRIDE;
444 virtual void forwardedPropertyValue( sal_Int32 _nHandle ) SAL_OVERRIDE;
446 // OInterfaceContainer overridables
447 virtual void implInserted( const ElementDescription* _pElement ) SAL_OVERRIDE;
448 virtual void implRemoved(const InterfaceRef& _rxObject) SAL_OVERRIDE;
450 // OPropertyChangeListener
451 virtual void _propertyChanged( const ::com::sun::star::beans::PropertyChangeEvent& ) throw(::com::sun::star::uno::RuntimeException) SAL_OVERRIDE;
453 private:
454 bool executeRowSet(::osl::ResettableMutexGuard& _rClearForNotifies, bool bMoveToFirst = true,
455 const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxCompletionHandler = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >());
456 bool fillParameters(::osl::ResettableMutexGuard& _rClearForNotifies,
457 const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxCompletionHandler = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >());
458 void updateParameterInfo();
459 bool hasValidParent() const;
461 // impl methods
462 void load_impl(bool bCausedByParentForm, bool bMoveToFirst = true,
463 const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxCompletionHandler = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >())
464 throw(::com::sun::star::uno::RuntimeException);
465 void reload_impl(bool bMoveToFirst,
466 const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxCompletionHandler = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >())
467 throw(::com::sun::star::uno::RuntimeException);
468 void submit_impl(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& Control, const ::com::sun::star::awt::MouseEvent& MouseEvt, bool _bAproveByListeners);
469 void reset_impl(bool _bAproveByListeners);
471 bool implEnsureConnection();
473 // connection sharing
475 /// checks if we can re-use (aka share) the connection of the given parent
476 bool canShareConnection( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxParentProps );
478 /// starts sharing the connection with the parent
479 void doShareConnection( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxParentProps );
481 /// stops sharing the connection with the parent
482 void stopSharingConnection( );
484 /// called when the connection which we share with our parent is being disposed
485 void disposingSharedConnection( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn );
487 /// checks if we currently share our connection with our parent
488 bool isSharingConnection( ) const { return m_bSharingConnection; }
490 /** calls our row set approval listeners
492 @param _rEvent
493 the event to notify
494 @param _bAllowSQLException
495 <TRUE/> if SQLExceptions are allowed to leave the method
496 @param _rGuard
497 the guard to be cleared before actually calling into the listeners, but after making
498 a copy of the listeners array to operate on.
499 @return
500 <TRUE/> if and only if the execution has been approved
502 bool impl_approveRowChange_throw(
503 const ::com::sun::star::lang::EventObject& _rEvent,
504 const bool _bAllowSQLException,
505 ::osl::ClearableMutexGuard& _rGuard
508 /// invalidate all our parameter-related stuff
509 void invlidateParameters();
511 void saveInsertOnlyState( );
512 void restoreInsertOnlyState( );
514 // error handling
515 void onError(const ::com::sun::star::sdb::SQLErrorEvent& _rEvent);
516 void onError(const ::com::sun::star::sdbc::SQLException&, const OUString& _rContextDescription);
518 // html tools
519 OUString GetDataEncoded(bool _bURLEncoded,const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& SubmitButton, const ::com::sun::star::awt::MouseEvent& MouseEvt);
520 OUString GetDataURLEncoded(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& SubmitButton, const ::com::sun::star::awt::MouseEvent& MouseEvt);
521 OUString GetDataTextEncoded(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& SubmitButton, const ::com::sun::star::awt::MouseEvent& MouseEvt);
522 ::com::sun::star::uno::Sequence<sal_Int8> GetDataMultiPartEncoded(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& SubmitButton, const ::com::sun::star::awt::MouseEvent& MouseEvt,
523 OUString& rContentType);
525 void AppendComponent(HtmlSuccessfulObjList& rList, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& xComponentSet, const OUString& rNamePrefix,
526 const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& rxSubmitButton, const ::com::sun::star::awt::MouseEvent& MouseEvt);
528 void FillSuccessfulList(HtmlSuccessfulObjList& rList, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& rxSubmitButton, const ::com::sun::star::awt::MouseEvent& MouseEvt);
530 static void InsertTextPart(INetMIMEMessage& rParent, const OUString& rName, const OUString& rData);
531 static bool InsertFilePart(INetMIMEMessage& rParent, const OUString& rName, const OUString& rFileName);
532 static void Encode(OUString& rString);
534 ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > getConnection();
536 void impl_createLoadTimer();
538 void impl_construct();
540 DECL_LINK_TYPED( OnTimeout, Timer*, void );
541 protected:
542 using OPropertySetHelper::getPropertyValues;
545 inline void ODatabaseForm::submitNBC(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& Control, const ::com::sun::star::awt::MouseEvent& MouseEvt)
547 submit_impl(Control, MouseEvt, false);
551 } // namespace frm
554 #endif // INCLUDED_FORMS_SOURCE_COMPONENT_DATABASEFORM_HXX
557 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */