diff options
author | Kurt Zenker <kz@openoffice.org> | 2009-06-05 12:31:05 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2009-06-05 12:31:05 +0000 |
commit | 4044f96898a5564efd9274471467d5333211083d (patch) | |
tree | 8bb977a00555a71a7949a75cd7de1b1964963f17 /dbaccess | |
parent | bda7e683aeb1e4f64967a0cb2bd69c9152c44037 (diff) |
CWS-TOOLING: integrate CWS evoab2def
2009-05-28 16:00:19 +0200 fs r272412 : don't use createFalse - Evo 2.22 simply hangs when ask for all contacts without a first name. Instead, in the WHERE 0=1 case, simply create an empty result set
2009-05-22 14:25:51 +0200 fs r272193 : #i10000#
2009-05-22 14:25:37 +0200 fs r272192 : oops, ENABLE_EVOAB2 for some platforms only, not generically
2009-05-22 14:19:00 +0200 fs r272191 : #i10000#
2009-05-22 12:42:38 +0200 fs r272183 : when sorting, properly use a syslocale collator, instead of comparing the numerical values of the string's UTF-16 code points
2009-05-20 15:09:00 +0200 fs r272131 : clear/getWarnings: also allowed without cache
2009-05-20 14:11:19 +0200 fs r272128 : removed debug traces
2009-05-20 14:03:31 +0200 fs r272126 : #i55701# +STR_SORT_BY_COL_ONLY
2009-05-20 14:02:29 +0200 fs r272125 : implement sorting
2009-05-20 10:10:19 +0200 fs r272107 : #i10000#
2009-05-19 16:02:17 +0200 fs r272089 : #i10000#
2009-05-19 16:02:02 +0200 fs r272088 : #i55701# strings for new error condition DATA_CANNOT_SELECT_UNFILTERED
2009-05-19 16:01:31 +0200 fs r272087 : #i55701# use DATA_CANNOT_SELECT_UNFILTERED as standardized error code
2009-05-19 15:59:59 +0200 fs r272086 : #i55701# +DATA_CANNOT_SELECT_UNFILTERED
2009-05-19 15:46:12 +0200 fs r272084 : #i55701# recognize the DATA_CANNOT_SELECT_UNFILTERED error condition, and allow filtering in this case, even when the result set is empty
2009-05-19 09:06:50 +0200 fs r272059 : merging changes from CWS dba32b, to prevent future conflicts with upcoming local changes
2009-05-18 21:48:58 +0200 fs r272054 : accessing a non-local unfiltered address book now returns an empty result set, and reports a warning, instead of ungracefully failing
2009-05-18 21:48:42 +0200 fs r272053 : accessing a non-local unfiltered address book now returns an empty result set, and reports a warning, instead of ungracefully failing
2009-05-18 21:47:41 +0200 fs r272052 : +setExternalWarnings
2009-05-18 21:47:12 +0200 fs r272051 : #i55701# when re/loading the form, display any possible warnings
2009-05-18 21:43:26 +0200 fs r272050 : #i55701# implement XWarningsSupplier, exposing the warnings of our result set
2009-05-18 21:42:51 +0200 fs r272049 : #i55701# implement XWarningsSupplier, exposing the warnings of our aggregate RowSet
2009-05-18 17:53:59 +0200 fs r272041 : #i55701# moved the (I)WarningsContainer from dbaccess to connectivity, to be able to use it in the latter module, too
2009-05-18 17:24:10 +0200 fs r272040 : #i55701# properly enable the various Evolution types
2009-05-18 14:52:19 +0200 fs r272024 : #i55701# properly enable the Evolution types
2009-05-18 13:57:10 +0200 fs r272018 : fixed/extended whereAnalysis (column searching still not enabled, as neither LIKE nor = seem to work with my (somewhat older) Evolution version)
2009-05-18 13:56:08 +0200 fs r272017 : extended showParseTree
2009-05-18 13:55:25 +0200 fs r272016 : extended showParseTree
2009-05-18 11:40:16 +0200 fs r272008 : #i55701#
2009-05-18 11:39:02 +0200 fs r272006 : let the PreparedStatement return proper meta data, too
2009-05-18 10:05:37 +0200 fs r271999 : moved the XStatement interface to from OCommonStatement to OStatement - the former class is also the base for other classes which should not have this interface
2009-05-15 21:53:22 +0200 fs r271973 : collectColumnInformation: report invalid meta data as assertion
2009-05-15 21:51:40 +0200 fs r271972 : showParseTree should be const
2009-05-15 21:51:26 +0200 fs r271971 : showParseTree should be const
2009-05-15 21:51:03 +0200 fs r271970 : properly recognize the 'WHERE 0 = 1' clause, this way having proper statement meta data, this way saving much much calls from the DBA framework
2009-05-15 20:29:03 +0200 fs r271969 : cleaned up the mess with the statement classes
2009-05-15 15:51:11 +0200 fs r271944 : let the result set properly init its meta data
2009-05-15 15:29:54 +0200 fs r271939 : proper property implementations for the resultset class
2009-05-15 15:01:31 +0200 fs r271936 : proper property implementations for the statement class
2009-05-08 14:46:33 +0200 fs r271717 : component_foo must be PUBLIC
2009-05-06 09:20:05 +0200 fs r271565 : #i10000# (warnings on unxlngi6)
2009-05-06 09:01:30 +0200 fs r271564 : #i101493#
2009-05-05 23:08:12 +0200 fs r271560 : #i55701# merging the changes from the ancient (CVS-based) CWS evoab2default into this CWS here
Diffstat (limited to 'dbaccess')
24 files changed, 203 insertions, 364 deletions
diff --git a/dbaccess/source/core/api/FilteredContainer.cxx b/dbaccess/source/core/api/FilteredContainer.cxx index 4b87e0be7615..c977b97a280d 100644 --- a/dbaccess/source/core/api/FilteredContainer.cxx +++ b/dbaccess/source/core/api/FilteredContainer.cxx @@ -264,7 +264,7 @@ sal_Int32 createWildCardVector(Sequence< ::rtl::OUString >& _rTableFilter, ::std const Reference< XConnection >& _xCon, sal_Bool _bCase, IRefreshListener* _pRefreshListener, - IWarningsContainer* _pWarningsContainer + ::dbtools::IWarningsContainer* _pWarningsContainer ,oslInterlockedCount& _nInAppend) :OCollection(_rParent,_bCase,_rMutex,::std::vector< ::rtl::OUString>()) ,m_bConstructed(sal_False) diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx index 302bae23c984..1ec43f2dd5c0 100644 --- a/dbaccess/source/core/api/RowSet.cxx +++ b/dbaccess/source/core/api/RowSet.cxx @@ -1850,6 +1850,13 @@ void ORowSet::execute_NoApprove_NoNewConn(ResettableMutexGuard& _rClearForNotifi Reference< XResultSet > xResultSet( impl_prepareAndExecute_throw() ); + // let our warnings container forget the reference to the (possibly disposed) old result set + m_aWarnings.setExternalWarnings( NULL ); + // clear all current warnings + m_aWarnings.clearWarnings(); + // let the warnings container know about the new "external warnings" + m_aWarnings.setExternalWarnings( Reference< XWarningsSupplier >( xResultSet, UNO_QUERY ) ); + ::rtl::OUString aComposedUpdateTableName; if ( m_aUpdateTableName.getLength() ) aComposedUpdateTableName = composeTableName( m_xActiveConnection->getMetaData(), m_aUpdateCatalogName, m_aUpdateSchemaName, m_aUpdateTableName, sal_False, ::dbtools::eInDataManipulation ); @@ -2669,6 +2676,19 @@ void SAL_CALL ORowSet::clearParameters( ) throw(SQLException, RuntimeException) getParameterStorage( (sal_Int32)i ).setNull(); m_aParametersSet.clear(); } + +// ------------------------------------------------------------------------- +Any SAL_CALL ORowSet::getWarnings( ) throw (SQLException, RuntimeException) +{ + return m_aWarnings.getWarnings(); +} + +// ------------------------------------------------------------------------- +void SAL_CALL ORowSet::clearWarnings( ) throw (SQLException, RuntimeException) +{ + m_aWarnings.clearWarnings(); +} + // ------------------------------------------------------------------------- void ORowSet::firePropertyChange(sal_Int32 _nPos,const ::connectivity::ORowSetValue& _rOldValue) { diff --git a/dbaccess/source/core/api/RowSet.hxx b/dbaccess/source/core/api/RowSet.hxx index b36608f1c495..90a0ad9c7928 100644 --- a/dbaccess/source/core/api/RowSet.hxx +++ b/dbaccess/source/core/api/RowSet.hxx @@ -88,13 +88,14 @@ #endif /** === end UNO includes === **/ -#include <cppuhelper/compbase10.hxx> +#include <cppuhelper/compbase11.hxx> #include <connectivity/paramwrapper.hxx> #include <connectivity/FValue.hxx> +#include <connectivity/warningscontainer.hxx> namespace dbaccess { - typedef ::cppu::WeakAggComponentImplHelper10 < ::com::sun::star::sdb::XResultSetAccess + typedef ::cppu::WeakAggComponentImplHelper11 < ::com::sun::star::sdb::XResultSetAccess , ::com::sun::star::sdb::XRowSetApproveBroadcaster , ::com::sun::star::sdbcx::XDeleteRows , ::com::sun::star::sdbc::XParameters @@ -104,6 +105,7 @@ namespace dbaccess , ::com::sun::star::util::XCancellable , ::com::sun::star::sdb::XCompletedExecution , ::com::sun::star::sdb::XParametersSupplier + , ::com::sun::star::sdbc::XWarningsSupplier > ORowSet_BASE1; class OTableContainer; @@ -136,6 +138,8 @@ namespace dbaccess ::cppu::OInterfaceContainerHelper m_aRowsetListeners; ::cppu::OInterfaceContainerHelper m_aApproveListeners; + ::dbtools::WarningsContainer m_aWarnings; + OTableContainer* m_pTables; rtl::OUString m_aCommand; @@ -424,6 +428,10 @@ namespace dbaccess 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); virtual void SAL_CALL clearParameters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + // XWarningsSupplier + virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL clearWarnings( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + protected: /** implement the <method>execute</method>, without calling the approve listeners and without building a new connection diff --git a/dbaccess/source/core/api/RowSetBase.cxx b/dbaccess/source/core/api/RowSetBase.cxx index 0b2c632e7bc7..ebcb8ca38d8e 100644 --- a/dbaccess/source/core/api/RowSetBase.cxx +++ b/dbaccess/source/core/api/RowSetBase.cxx @@ -1284,11 +1284,13 @@ Any SAL_CALL ORowSetBase::getWarnings( ) throw(SQLException, RuntimeException) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getWarnings" ); ::osl::MutexGuard aGuard( *m_pMutex ); - checkCache(); - Reference< XWarningsSupplier > xWarnings( m_pCache->m_xSet.get(), UNO_QUERY ); - if ( xWarnings.is() ) - return xWarnings->getWarnings(); + if ( m_pCache ) + { + Reference< XWarningsSupplier > xWarnings( m_pCache->m_xSet.get(), UNO_QUERY ); + if ( xWarnings.is() ) + return xWarnings->getWarnings(); + } return Any(); } @@ -1297,12 +1299,13 @@ void SAL_CALL ORowSetBase::clearWarnings( ) throw(SQLException, RuntimeExceptio { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::clearWarnings" ); ::osl::MutexGuard aGuard( *m_pMutex ); - checkCache(); - - Reference< XWarningsSupplier > xWarnings( m_pCache->m_xSet.get(), UNO_QUERY ); - if ( xWarnings.is() ) - xWarnings->clearWarnings(); + if ( m_pCache ) + { + Reference< XWarningsSupplier > xWarnings( m_pCache->m_xSet.get(), UNO_QUERY ); + if ( xWarnings.is() ) + xWarnings->clearWarnings(); + } } // ------------------------------------------------------------------------- void ORowSetBase::firePropertyChange(const ORowSetRow& _rOldRow) diff --git a/dbaccess/source/core/api/query.cxx b/dbaccess/source/core/api/query.cxx index eda2c1ac8c14..489ca625c5d7 100644 --- a/dbaccess/source/core/api/query.cxx +++ b/dbaccess/source/core/api/query.cxx @@ -37,8 +37,8 @@ #ifndef DBACCESS_SHARED_DBASTRINGS_HRC #include "dbastrings.hrc" #endif -#ifndef DBA_CORE_WARNINGS_HXX -#include "warnings.hxx" +#ifndef DBTOOLS_WARNINGSCONTAINER_HXX +#include <connectivity/warningscontainer.hxx> #endif #ifndef DBA_HELPERCOLLECTIONS_HXX #include "HelperCollections.hxx" diff --git a/dbaccess/source/core/api/query.hxx b/dbaccess/source/core/api/query.hxx index dd200764d364..00b7ce76e32d 100644 --- a/dbaccess/source/core/api/query.hxx +++ b/dbaccess/source/core/api/query.hxx @@ -55,12 +55,16 @@ #include <map> +namespace dbtools +{ + class IWarningsContainer; +} + //........................................................................ namespace dbaccess { //........................................................................ - class IWarningsContainer; //========================================================================== //= OQuery - an object implementing the sdb.Query service //========================================================================== @@ -90,8 +94,8 @@ protected: ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection; ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > m_xCommandPropInfo; ::rtl::Reference< OContainerMediator > m_pColumnMediator; - IWarningsContainer* m_pWarnings; - sal_Bool m_bCaseSensitiv : 1; // assume case sensitivity of the column names ? + ::dbtools::IWarningsContainer* m_pWarnings; + sal_Bool m_bCaseSensitiv : 1; // assume case sensitivity of the column names ? // possible actions on our "aggregate" enum AGGREGATE_ACTION { NONE, SETTING_PROPERTIES, FLUSHING }; @@ -156,8 +160,8 @@ public: public: // the caller is responsible for the lifetime! - void setWarningsContainer( IWarningsContainer* _pWarnings ) { m_pWarnings = _pWarnings; } - IWarningsContainer* getWarningsContainer( ) const { return m_pWarnings; } + void setWarningsContainer( ::dbtools::IWarningsContainer* _pWarnings ) { m_pWarnings = _pWarnings; } + ::dbtools::IWarningsContainer* getWarningsContainer( ) const { return m_pWarnings; } // XRename virtual void SAL_CALL rename( const ::rtl::OUString& newName ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException); diff --git a/dbaccess/source/core/api/querycontainer.cxx b/dbaccess/source/core/api/querycontainer.cxx index 89124a9751c9..f86a1a8bf6e5 100644 --- a/dbaccess/source/core/api/querycontainer.cxx +++ b/dbaccess/source/core/api/querycontainer.cxx @@ -119,7 +119,7 @@ OQueryContainer::OQueryContainer( const Reference< XNameContainer >& _rxCommandDefinitions , const Reference< XConnection >& _rxConn , const Reference< XMultiServiceFactory >& _rxORB, - IWarningsContainer* _pWarnings) + ::dbtools::IWarningsContainer* _pWarnings) :ODefinitionContainer(_rxORB,NULL,TContentPtr(new ODefinitionContainer_Impl)) ,m_pWarnings( _pWarnings ) ,m_xCommandDefinitions(_rxCommandDefinitions) diff --git a/dbaccess/source/core/api/resultset.hxx b/dbaccess/source/core/api/resultset.hxx index 7e26d1b5dcc9..3a90ff2edc0a 100644 --- a/dbaccess/source/core/api/resultset.hxx +++ b/dbaccess/source/core/api/resultset.hxx @@ -33,8 +33,8 @@ #ifndef _DBA_COREAPI_COLUMN_HXX_ #include "column.hxx" #endif -#ifndef DBA_CORE_WARNINGS_HXX -#include "warnings.hxx" +#ifndef DBTOOLS_WARNINGSCONTAINER_HXX +#include <connectivity/warningscontainer.hxx> #endif #ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ @@ -125,11 +125,11 @@ namespace dbaccess ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow > m_xDelegatorRow; ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowUpdate > m_xDelegatorRowUpdate; - WarningsContainer m_aWarnings; - OColumns* m_pColumns; - sal_Int32 m_nResultSetType; - sal_Int32 m_nResultSetConcurrency; - sal_Bool m_bIsBookmarkable : 1; + ::dbtools::WarningsContainer m_aWarnings; + OColumns* m_pColumns; + sal_Int32 m_nResultSetType; + sal_Int32 m_nResultSetConcurrency; + sal_Bool m_bIsBookmarkable : 1; public: OResultSet(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& _xResultSet, diff --git a/dbaccess/source/core/api/tablecontainer.cxx b/dbaccess/source/core/api/tablecontainer.cxx index 7067cf50fce9..2d8ce453fb2c 100644 --- a/dbaccess/source/core/api/tablecontainer.cxx +++ b/dbaccess/source/core/api/tablecontainer.cxx @@ -123,7 +123,7 @@ OTableContainer::OTableContainer(::cppu::OWeakObject& _rParent, sal_Bool _bCase, const Reference< XNameContainer >& _xTableDefinitions, IRefreshListener* _pRefreshListener, - IWarningsContainer* _pWarningsContainer + ::dbtools::IWarningsContainer* _pWarningsContainer ,oslInterlockedCount& _nInAppend) :OFilteredContainer(_rParent,_rMutex,_xCon,_bCase,_pRefreshListener,_pWarningsContainer,_nInAppend) ,m_xTableDefinitions(_xTableDefinitions) diff --git a/dbaccess/source/core/api/viewcontainer.cxx b/dbaccess/source/core/api/viewcontainer.cxx index 2783c0586f64..342d68eea0ba 100644 --- a/dbaccess/source/core/api/viewcontainer.cxx +++ b/dbaccess/source/core/api/viewcontainer.cxx @@ -125,7 +125,7 @@ OViewContainer::OViewContainer(::cppu::OWeakObject& _rParent ,const Reference< XConnection >& _xCon ,sal_Bool _bCase ,IRefreshListener* _pRefreshListener - ,IWarningsContainer* _pWarningsContainer + ,::dbtools::IWarningsContainer* _pWarningsContainer ,oslInterlockedCount& _nInAppend) :OFilteredContainer(_rParent,_rMutex,_xCon,_bCase,_pRefreshListener,_pWarningsContainer,_nInAppend) ,m_bInElementRemoved(false) diff --git a/dbaccess/source/core/dataaccess/connection.hxx b/dbaccess/source/core/dataaccess/connection.hxx index 21eb175df298..e8a8a2ca9135 100644 --- a/dbaccess/source/core/dataaccess/connection.hxx +++ b/dbaccess/source/core/dataaccess/connection.hxx @@ -45,8 +45,8 @@ #ifndef DBA_CORE_REFRESHLISTENER_HXX #include "RefreshListener.hxx" #endif -#ifndef DBA_CORE_WARNINGS_HXX -#include "warning.hxx" +#ifndef DBTOOLS_WARNINGSCONTAINER_HXX +#include <connectivity/warningscontainer.hxx> #endif /** === begin UNO includes === **/ @@ -152,13 +152,13 @@ protected: ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XTableUIProvider > m_xTableUIProvider; - OTableContainer* m_pTables; - OViewContainer* m_pViews; - WarningsContainer m_aWarnings; - oslInterlockedCount m_nInAppend; - sal_Bool m_bSupportsViews; // true when the getTableTypes return "VIEW" as type - sal_Bool m_bSupportsUsers; - sal_Bool m_bSupportsGroups; + OTableContainer* m_pTables; + OViewContainer* m_pViews; + ::dbtools::WarningsContainer m_aWarnings; + oslInterlockedCount m_nInAppend; + sal_Bool m_bSupportsViews; // true when the getTableTypes return "VIEW" as type + sal_Bool m_bSupportsUsers; + sal_Bool m_bSupportsGroups; protected: virtual ~OConnection(); diff --git a/dbaccess/source/core/inc/FilteredContainer.hxx b/dbaccess/source/core/inc/FilteredContainer.hxx index 0fc0974c29eb..3a3fecaa77b2 100644 --- a/dbaccess/source/core/inc/FilteredContainer.hxx +++ b/dbaccess/source/core/inc/FilteredContainer.hxx @@ -35,9 +35,13 @@ #include <connectivity/sdbcx/VCollection.hxx> -namespace dbaccess +namespace dbtools { class IWarningsContainer; +} + +namespace dbaccess +{ class IRefreshListener; class OFilteredContainer : public ::connectivity::sdbcx::OCollection @@ -46,9 +50,9 @@ namespace dbaccess mutable sal_Bool m_bConstructed; // late ctor called protected: - IWarningsContainer* m_pWarningsContainer; - IRefreshListener* m_pRefreshListener; - oslInterlockedCount& m_nInAppend; + ::dbtools::IWarningsContainer* m_pWarningsContainer; + IRefreshListener* m_pRefreshListener; + oslInterlockedCount& m_nInAppend; // holds the original container which where set in construct but they can be null ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xMasterContainer; @@ -111,7 +115,7 @@ namespace dbaccess const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xCon, sal_Bool _bCase, IRefreshListener* _pRefreshListener, - IWarningsContainer* _pWarningsContainer, + ::dbtools::IWarningsContainer* _pWarningsContainer, oslInterlockedCount& _nInAppend ); diff --git a/dbaccess/source/core/inc/querycontainer.hxx b/dbaccess/source/core/inc/querycontainer.hxx index 869371f7ade4..ac3d61bac8d1 100644 --- a/dbaccess/source/core/inc/querycontainer.hxx +++ b/dbaccess/source/core/inc/querycontainer.hxx @@ -102,6 +102,11 @@ #include "apitools.hxx" #endif +namespace dbtools +{ + class IWarningsContainer; +} + //........................................................................ namespace dbaccess { @@ -120,16 +125,15 @@ namespace dbaccess class OQueryContainer; class OContainerListener; class OQuery; - class IWarningsContainer; class OQueryContainer : public ODefinitionContainer , public OQueryContainer_Base { protected: - IWarningsContainer* m_pWarnings; + ::dbtools::IWarningsContainer* m_pWarnings; ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > - m_xCommandDefinitions; + m_xCommandDefinitions; ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > - m_xConnection; + m_xConnection; // possible actions on our "aggregate" enum AGGREGATE_ACTION { NONE, INSERTING, FLUSHING }; AGGREGATE_ACTION m_eDoingCurrently; @@ -172,7 +176,7 @@ namespace dbaccess const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxCommandDefinitions, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn, const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, - IWarningsContainer* _pWarnings + ::dbtools::IWarningsContainer* _pWarnings ); DECLARE_XINTERFACE( ) diff --git a/dbaccess/source/core/inc/tablecontainer.hxx b/dbaccess/source/core/inc/tablecontainer.hxx index 1644fc70bec6..4581ec629a1a 100644 --- a/dbaccess/source/core/inc/tablecontainer.hxx +++ b/dbaccess/source/core/inc/tablecontainer.hxx @@ -70,8 +70,8 @@ #ifndef DBACCESS_CORE_FILTERED_CONTAINER_HXX #include "FilteredContainer.hxx" #endif -#ifndef DBA_CORE_WARNINGS_HXX -#include "warnings.hxx" +#ifndef DBTOOLS_WARNINGSCONTAINER_HXX +#include <connectivity/warningscontainer.hxx> #endif #ifndef DBA_CORE_REFRESHLISTENER_HXX #include "RefreshListener.hxx" @@ -140,7 +140,7 @@ namespace dbaccess sal_Bool _bCase, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _xTableDefinitions, IRefreshListener* _pRefreshListener, - IWarningsContainer* _pWarningsContainer, + ::dbtools::IWarningsContainer* _pWarningsContainer, oslInterlockedCount& _nInAppend ); diff --git a/dbaccess/source/core/inc/viewcontainer.hxx b/dbaccess/source/core/inc/viewcontainer.hxx index 4d339de34837..dafe21f489dc 100644 --- a/dbaccess/source/core/inc/viewcontainer.hxx +++ b/dbaccess/source/core/inc/viewcontainer.hxx @@ -73,12 +73,13 @@ #include "FilteredContainer.hxx" #endif -namespace dbaccess +namespace dbtools { - //========================================================================== - //= IWarningsContainer - //========================================================================== class IWarningsContainer; +} + +namespace dbaccess +{ typedef ::cppu::ImplHelper1< ::com::sun::star::container::XContainerListener> OViewContainer_Base; //========================================================================== @@ -102,7 +103,7 @@ namespace dbaccess const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xCon, sal_Bool _bCase, IRefreshListener* _pRefreshListener, - IWarningsContainer* _pWarningsContainer, + ::dbtools::IWarningsContainer* _pWarningsContainer, oslInterlockedCount& _nInAppend ); diff --git a/dbaccess/source/core/inc/warnings.hxx b/dbaccess/source/core/inc/warnings.hxx deleted file mode 100644 index 7c13481f6358..000000000000 --- a/dbaccess/source/core/inc/warnings.hxx +++ /dev/null @@ -1,108 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: warnings.hxx,v $ - * $Revision: 1.6 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef DBA_CORE_WARNINGS_HXX -#define DBA_CORE_WARNINGS_HXX - -/** ==== begin UNO includes === **/ -#ifndef _COM_SUN_STAR_SDBC_XWARNINGSSUPPLIER_HPP_ -#include <com/sun/star/sdbc/XWarningsSupplier.hpp> -#endif -#ifndef _COM_SUN_STAR_SDB_SQLCONTEXT_HPP_ -#include <com/sun/star/sdb/SQLContext.hpp> -#endif -/** ==== end UNO includes === **/ - -//......................................................................... -namespace dbaccess -{ -//......................................................................... - - //===================================================================== - //= IWarningsContainer - //===================================================================== - class SAL_NO_VTABLE IWarningsContainer - { - public: - virtual void appendWarning(const ::com::sun::star::sdbc::SQLException& _rWarning) = 0; - virtual void appendWarning(const ::com::sun::star::sdbc::SQLWarning& _rWarning) = 0; - virtual void appendWarning(const ::com::sun::star::sdb::SQLContext& _rContext) = 0; - }; - - //==================================================================== - //= WarningsContainer - //==================================================================== - /** helper class for implementing XWarningsSupplier, which mixes own warnings with - warnings obtained from an external instance - */ - class WarningsContainer : public IWarningsContainer - { - private: - ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XWarningsSupplier > m_xExternalWarnings; - ::com::sun::star::uno::Any m_aOwnWarnings; - - public: - WarningsContainer() { } - WarningsContainer( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XWarningsSupplier >& _rxExternalWarnings ) - :m_xExternalWarnings( _rxExternalWarnings ) - { - } - virtual ~WarningsContainer(); - - // convenience - /** appends an SQLWarning instance to the chain - @param _rWarning - the warning message - @param _pAsciiSQLState - the SQLState of the warning - @param _rxContext - the context of the warning - */ - void appendWarning( - const ::rtl::OUString& _rWarning, - const sal_Char* _pAsciiSQLState, - const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContext ); - - // IWarningsContainer - virtual void appendWarning(const ::com::sun::star::sdbc::SQLException& _rWarning); - virtual void appendWarning(const ::com::sun::star::sdbc::SQLWarning& _rWarning); - virtual void appendWarning(const ::com::sun::star::sdb::SQLContext& _rContext); - - // XWarningsSupplier - ::com::sun::star::uno::Any SAL_CALL getWarnings( ) const; - void SAL_CALL clearWarnings( ); - }; - -//......................................................................... -} // namespace dbaccess -//......................................................................... - -#endif // DBA_CORE_WARNINGS_HXX - diff --git a/dbaccess/source/core/misc/makefile.mk b/dbaccess/source/core/misc/makefile.mk index f4c3a93bba87..3cc6acb8186e 100644 --- a/dbaccess/source/core/misc/makefile.mk +++ b/dbaccess/source/core/misc/makefile.mk @@ -51,7 +51,6 @@ SLOFILES= \ $(SLO)$/userinformation.obj \ $(SLO)$/ContainerListener.obj \ $(SLO)$/objectnameapproval.obj \ - $(SLO)$/warnings.obj \ $(SLO)$/DatabaseDataProvider.obj \ $(SLO)$/module_dba.obj \ $(SLO)$/dsntypes.obj \ diff --git a/dbaccess/source/core/misc/warnings.cxx b/dbaccess/source/core/misc/warnings.cxx deleted file mode 100644 index 0745e2602324..000000000000 --- a/dbaccess/source/core/misc/warnings.cxx +++ /dev/null @@ -1,134 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: warnings.cxx,v $ - * $Revision: 1.5 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_dbaccess.hxx" - -#ifndef DBA_CORE_WARNINGS_HXX -#include "warnings.hxx" -#endif - -#ifndef _DBHELPER_DBEXCEPTION_HXX_ -#include <connectivity/dbexception.hxx> -#endif - -#ifndef _OSL_DIAGNOSE_H_ -#include <osl/diagnose.h> -#endif - -//........................................................................ -namespace dbaccess -{ -//........................................................................ - - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::sdbc; - using namespace ::com::sun::star::sdb; - using namespace ::dbtools; - - //==================================================================== - //= WarningsContainer - //==================================================================== - //-------------------------------------------------------------------- - static void lcl_concatWarnings( Any& _rChainLeft, const Any& _rChainRight ) - { - if ( !_rChainLeft.hasValue() ) - _rChainLeft = _rChainRight; - else - { - // to travel the chain by reference (and not by value), we need the getValue ... - // looks like a hack, but the meaning of getValue is documented, and it's the only chance for reference-traveling .... - - OSL_ENSURE( SQLExceptionInfo( _rChainLeft ).isValid(), - "lcl_concatWarnings: invalid warnings chain (this will crash)!" ); - - const SQLException* pChainTravel = static_cast< const SQLException* >( _rChainLeft.getValue() ); - SQLExceptionIteratorHelper aReferenceIterHelper( *pChainTravel ); - while ( aReferenceIterHelper.hasMoreElements() ) - pChainTravel = aReferenceIterHelper.next(); - - // reached the end of the chain, and pChainTravel points to the last element - const_cast< SQLException* >( pChainTravel )->NextException = _rChainRight; - } - } - - //-------------------------------------------------------------------- - WarningsContainer::~WarningsContainer() - { - } - - //-------------------------------------------------------------------- - void WarningsContainer::appendWarning(const SQLException& _rWarning) - { - lcl_concatWarnings( m_aOwnWarnings, makeAny( _rWarning ) ); - } - - //-------------------------------------------------------------------- - void WarningsContainer::appendWarning( const SQLContext& _rContext ) - { - lcl_concatWarnings( m_aOwnWarnings, makeAny( _rContext )); - } - - //-------------------------------------------------------------------- - void WarningsContainer::appendWarning(const SQLWarning& _rWarning) - { - lcl_concatWarnings( m_aOwnWarnings, makeAny( _rWarning ) ); - } - - //-------------------------------------------------------------------- - Any SAL_CALL WarningsContainer::getWarnings( ) const - { - Any aAllWarnings; - if ( m_xExternalWarnings.is() ) - aAllWarnings = m_xExternalWarnings->getWarnings(); - - if ( m_aOwnWarnings.hasValue() ) - lcl_concatWarnings( aAllWarnings, m_aOwnWarnings ); - - return aAllWarnings; - } - - //-------------------------------------------------------------------- - void SAL_CALL WarningsContainer::clearWarnings( ) - { - if ( m_xExternalWarnings.is() ) - m_xExternalWarnings->clearWarnings(); - m_aOwnWarnings.clear(); - } - - //-------------------------------------------------------------------- - void WarningsContainer::appendWarning( const ::rtl::OUString& _rWarning, const sal_Char* _pAsciiSQLState, const Reference< XInterface >& _rxContext ) - { - appendWarning( SQLWarning( _rWarning, _rxContext, ::rtl::OUString::createFromAscii( _pAsciiSQLState ), 0, Any() ) ); - } - -//........................................................................ -} // namespace dbaccess -//........................................................................ diff --git a/dbaccess/source/ui/app/AppController.cxx b/dbaccess/source/ui/app/AppController.cxx index 21716791864d..fb6c7e254e7c 100644 --- a/dbaccess/source/ui/app/AppController.cxx +++ b/dbaccess/source/ui/app/AppController.cxx @@ -959,7 +959,15 @@ FeatureState OApplicationController::GetState(sal_uInt16 _nId) const if ( aReturn.bEnabled ) { ::dbaccess::DATASOURCE_TYPE eType = m_aTypeCollection.getType(::comphelper::getString(m_xDataSource->getPropertyValue(PROPERTY_URL))); - aReturn.bEnabled = ::dbaccess::DST_EMBEDDED_HSQLDB != eType && ::dbaccess::DST_MOZILLA != eType && ::dbaccess::DST_EVOLUTION != eType && ::dbaccess::DST_KAB != eType && ::dbaccess::DST_MACAB != eType && ::dbaccess::DST_OUTLOOK != eType && ::dbaccess::DST_OUTLOOKEXP != eType; + aReturn.bEnabled = ::dbaccess::DST_EMBEDDED_HSQLDB != eType + && ::dbaccess::DST_MOZILLA != eType + && ::dbaccess::DST_EVOLUTION != eType + && ::dbaccess::DST_EVOLUTION_GROUPWISE != eType + && ::dbaccess::DST_EVOLUTION_LDAP != eType + && ::dbaccess::DST_KAB != eType + && ::dbaccess::DST_MACAB != eType + && ::dbaccess::DST_OUTLOOK != eType + && ::dbaccess::DST_OUTLOOKEXP != eType; } break; case SID_DB_APP_DSCONNECTION_TYPE: diff --git a/dbaccess/source/ui/browser/brwctrlr.cxx b/dbaccess/source/ui/browser/brwctrlr.cxx index 50f0e4594c7f..706064da08f1 100644 --- a/dbaccess/source/ui/browser/brwctrlr.cxx +++ b/dbaccess/source/ui/browser/brwctrlr.cxx @@ -134,6 +134,9 @@ #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_ #include <cppuhelper/typeprovider.hxx> #endif +#ifndef _CPPUHELPER_EXC_HLP_HXX_ +#include <cppuhelper/exc_hlp.hxx> +#endif #ifndef _SV_MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif @@ -155,6 +158,9 @@ #ifndef _CONNECTIVITY_DBTOOLS_HXX_ #include <connectivity/dbtools.hxx> #endif +#ifndef _DBHELPER_DBEXCEPTION_HXX_ +#include <connectivity/dbexception.hxx> +#endif #ifndef _CPPUHELPER_IMPLBASE2_HXX_ #include <cppuhelper/implbase2.hxx> #endif @@ -176,6 +182,9 @@ #ifndef _DBHELPER_DBEXCEPTION_HXX_ #include <connectivity/dbexception.hxx> #endif +#ifndef CONNECTIVITY_SQLERROR_HXX +#include <connectivity/sqlerror.hxx> +#endif #ifndef _COMPHELPER_EXTRACT_HXX_ #include <comphelper/extract.hxx> #endif @@ -188,6 +197,12 @@ #ifndef _COM_SUN_STAR_TASK_XINTERACTIONHANDLER_HPP_ #include <com/sun/star/task/XInteractionHandler.hpp> #endif +#ifndef INCLUDED_COM_SUN_STAR_SDBC_XWARNINGSSUPPLIER_HPP +#include <com/sun/star/sdbc/XWarningsSupplier.hpp> +#endif +#ifndef INCLUDED_COM_SUN_STAR_SDB_ERRORCONDITION_HPP +#include <com/sun/star/sdb/ErrorCondition.hpp> +#endif #ifndef DBAUI_QUERYFILTER_HXX #include "queryfilter.hxx" #endif @@ -484,6 +499,7 @@ SbaXDataBrowserController::SbaXDataBrowserController(const Reference< ::com::sun ,m_bLoadCanceled( sal_False ) ,m_bClosingKillOpen( sal_False ) ,m_bErrorOccured( sal_False ) + ,m_bCannotSelectUnfiltered( true ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaui", "Ocke.Janssen@sun.com", "SbaXDataBrowserController::SbaXDataBrowserController" ); DBG_CTOR(SbaXDataBrowserController,NULL); @@ -545,12 +561,35 @@ void SbaXDataBrowserController::stopFrameListening( const Reference< XFrame >& _ } // ----------------------------------------------------------------------------- -sal_Bool SbaXDataBrowserController::reloadForm(const Reference< XLoadable >& _rxLoadable) +void SbaXDataBrowserController::onStartLoading( const Reference< XLoadable >& _rxLoadable ) +{ + m_bLoadCanceled = sal_False; + m_bCannotSelectUnfiltered = false; + + Reference< XWarningsSupplier > xWarnings( _rxLoadable, UNO_QUERY ); + if ( xWarnings.is() ) + xWarnings->clearWarnings(); +} + +// ----------------------------------------------------------------------------- +void SbaXDataBrowserController::impl_checkForCannotSelectUnfiltered( const SQLExceptionInfo& _rError ) +{ + ::connectivity::SQLError aError( getORB() ); + ::connectivity::ErrorCode nErrorCode( aError.getErrorCode( ErrorCondition::DATA_CANNOT_SELECT_UNFILTERED ) ); + if ( ((const SQLException*)_rError)->ErrorCode == nErrorCode ) + { + m_bCannotSelectUnfiltered = true; + InvalidateFeature( ID_BROWSER_FILTERCRIT ); + } +} + +// ----------------------------------------------------------------------------- +sal_Bool SbaXDataBrowserController::reloadForm( const Reference< XLoadable >& _rxLoadable ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaui", "Ocke.Janssen@sun.com", "SbaXDataBrowserController::reloadForm" ); WaitObject aWO(getBrowserView()); - setLoadingStarted(); + onStartLoading( _rxLoadable ); FormErrorHelper aReportError(this); if (_rxLoadable->isLoaded()) @@ -558,6 +597,17 @@ sal_Bool SbaXDataBrowserController::reloadForm(const Reference< XLoadable >& _rx else _rxLoadable->load(); + Reference< XWarningsSupplier > xWarnings( _rxLoadable, UNO_QUERY ); + if ( xWarnings.is() ) + { + SQLExceptionInfo aInfo( xWarnings->getWarnings() ); + if ( aInfo.isValid() ) + { + showError( aInfo ); + impl_checkForCannotSelectUnfiltered( aInfo ); + } + } + return _rxLoadable->isLoaded() && !errorOccured(); } @@ -1302,8 +1352,7 @@ void SbaXDataBrowserController::errorOccured(const ::com::sun::star::sdb::SQLErr if ( aInfo.isValid() ) { ::vos::OGuard aGuard(Application::GetSolarMutex()); - OSQLMessageBox aDlg(getBrowserView(), aInfo); - aDlg.Execute(); + showError( aInfo ); } if (m_nFormActionNestingLevel) m_bErrorOccured = true; @@ -1523,35 +1572,34 @@ FeatureState SbaXDataBrowserController::GetState(sal_uInt16 nId) const aReturn.bEnabled = ::comphelper::getBOOL(xCurrentField->getPropertyValue(PROPERTY_ISSEARCHABLE)); const Reference< XRowSet > xRow = getRowSet(); - if(aReturn.bEnabled && xRow.is()) // check if we stand on a valid row - aReturn.bEnabled = !(xRow->isBeforeFirst() || xRow->isAfterLast() || xRow->rowDeleted() || ::comphelper::getINT32(xFormSet->getPropertyValue(PROPERTY_ROWCOUNT)) == 0); + aReturn.bEnabled = aReturn.bEnabled + && xRow.is() + && !xRow->isBeforeFirst() + && !xRow->isAfterLast() + && !xRow->rowDeleted() + && ( ::comphelper::getINT32( xFormSet->getPropertyValue( PROPERTY_ROWCOUNT ) ) != 0 ); } break; - case ID_BROWSER_ORDERCRIT: case ID_BROWSER_FILTERCRIT: + if ( m_bCannotSelectUnfiltered ) + { + aReturn.bEnabled = sal_True; + break; + } + // no break + case ID_BROWSER_ORDERCRIT: { const Reference< XPropertySet > xFormSet(getRowSet(), UNO_QUERY); if ( !::comphelper::getBOOL(xFormSet->getPropertyValue(PROPERTY_ESCAPE_PROCESSING))) break; - Reference< XPropertySet > xCurrentField = getBoundField(); - // we are not in the handle column - aReturn.bEnabled = getBrowserView()->getVclControl()->GetCurColumnId() != 0 && - xCurrentField.is() && - ::comphelper::getBOOL(xCurrentField->getPropertyValue(PROPERTY_ISSEARCHABLE)); - - const Reference< XRowSet > xRow = getRowSet(); - - if(aReturn.bEnabled && xRow.is()) // check if we stand on a valid row - aReturn.bEnabled = !(xRow->isBeforeFirst() || xRow->isAfterLast() || xRow->rowDeleted() || ::comphelper::getINT32(xFormSet->getPropertyValue(PROPERTY_ROWCOUNT)) == 0); - // a native statement can't be filtered or sorted - // aReturn.bEnabled &= m_xParser.is(); + aReturn.bEnabled = getRowSet().is() + && ( ::comphelper::getINT32( xFormSet->getPropertyValue( PROPERTY_ROWCOUNT ) ) != 0 ); } break; case ID_BROWSER_REFRESH: - // aReturn.bEnabled = isValidCursor(); aReturn.bEnabled = sal_True; break; @@ -1728,11 +1776,6 @@ void SbaXDataBrowserController::ExecuteFilterSortCrit(sal_Bool bFilter) Reference< XPropertySet > xFormSet(getRowSet(), UNO_QUERY); - // no condition for searching - if (getRowSet()->isBeforeFirst() || getRowSet()->isAfterLast() || - getRowSet()->rowDeleted()) - return; - initializeParser(); const ::rtl::OUString sOldVal = bFilter ? m_xParser->getFilter() : m_xParser->getOrder(); const ::rtl::OUString sOldHaving = m_xParser->getHavingClause(); @@ -1764,7 +1807,12 @@ void SbaXDataBrowserController::ExecuteFilterSortCrit(sal_Bool bFilter) aDlg.BuildOrderPart(); } } - catch(SQLException& e) { showError(SQLExceptionInfo(e)); return; } + catch(const SQLException& ) + { + SQLExceptionInfo aError( ::cppu::getCaughtException() ); + showError( aError ); + return; + } catch(Exception&) { return; @@ -2293,40 +2341,6 @@ IMPL_LINK(SbaXDataBrowserController, OnInvalidateClipboard, AutoTimer*, _pTimer) return 0L; } -// ------------------------------------------------------------------------------ -//sal_uInt16 SbaXDataBrowserController::SaveData(sal_Bool bUI, sal_Bool bForBrowsing) -//{ -// if (!getBrowserView()) -// return sal_True; -// -// if (!isValidCursor()) -// return sal_True; -// -// if (bUI && GetState(ID_BROWSER_SAVEDOC).bEnabled) -// { -// getBrowserView()->getVclControl()->GrabFocus(); -// -// QueryBox aQry(getBrowserView()->getVclControl(), ModuleRes(QUERY_BRW_SAVEMODIFIED)); -// if (bForBrowsing) -// aQry.AddButton(ResId(RID_STR_NEW_TASK), RET_NEWTASK, -// BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_FOCUSBUTTON); -// -// switch (aQry.Execute()) -// { -// case RET_NO: -// Execute(ID_BROWSER_UNDO); -// return sal_True; -// case RET_CANCEL: -// return sal_False; -// case RET_NEWTASK: -// return RET_NEWTASK; -// } -// } -// -// -// return SbaXDataBrowserController_Base::SaveData(bUI,bForBrowsing); -//} -// // ------------------------------------------------------------------------- Reference< XPropertySet > SbaXDataBrowserController::getBoundField(sal_uInt16 nViewPos) const { @@ -2686,7 +2700,7 @@ sal_Bool SbaXDataBrowserController::isValidCursor() const if ( !bIsValid ) { initializeParser(); - bIsValid = (m_xParser.is() && (m_xParser->getFilter().getLength() || m_xParser->getHavingClause().getLength() || m_xParser->getOrder().getLength())); + bIsValid = m_xParser.is(); } } // if ( !bIsValid ) return bIsValid; diff --git a/dbaccess/source/ui/browser/exsrcbrw.cxx b/dbaccess/source/ui/browser/exsrcbrw.cxx index 179ca9e63795..01475f549a14 100644 --- a/dbaccess/source/ui/browser/exsrcbrw.cxx +++ b/dbaccess/source/ui/browser/exsrcbrw.cxx @@ -394,8 +394,6 @@ void SbaExternalSourceBrowser::Attach(const Reference< XRowSet > & xMaster) Reference< XRowLocate > xCursor(xMaster, UNO_QUERY); Reference< XPropertySet > xMasterProps(xMaster, UNO_QUERY); - setLoadingStarted(); - try { // switch the control to design mode @@ -420,6 +418,8 @@ void SbaExternalSourceBrowser::Attach(const Reference< XRowSet > & xMaster) DBG_UNHANDLED_EXCEPTION(); } + onStartLoading( Reference< XLoadable >( xMaster, UNO_QUERY ) ); + stopListening(); m_pDataSourceImpl->AttachForm(xMaster); startListening(); diff --git a/dbaccess/source/ui/dlg/ConnectionPage.cxx b/dbaccess/source/ui/dlg/ConnectionPage.cxx index 135dd3b07b92..a032b6a47908 100644 --- a/dbaccess/source/ui/dlg/ConnectionPage.cxx +++ b/dbaccess/source/ui/dlg/ConnectionPage.cxx @@ -304,6 +304,8 @@ namespace dbaui case ::dbaccess::DST_OUTLOOK: case ::dbaccess::DST_OUTLOOKEXP: case ::dbaccess::DST_EVOLUTION: + case ::dbaccess::DST_EVOLUTION_GROUPWISE: + case ::dbaccess::DST_EVOLUTION_LDAP: case ::dbaccess::DST_KAB: case ::dbaccess::DST_MACAB: m_aFT_Connection.SetText(String(ModuleRes(STR_NO_ADDITIONAL_SETTINGS))); diff --git a/dbaccess/source/ui/dlg/dbwiz.cxx b/dbaccess/source/ui/dlg/dbwiz.cxx index 3ace14f2fc36..ff986cbcbd6f 100644 --- a/dbaccess/source/ui/dlg/dbwiz.cxx +++ b/dbaccess/source/ui/dlg/dbwiz.cxx @@ -173,6 +173,8 @@ IMPL_LINK(ODbTypeWizDialog, OnTypeSelected, OGeneralPage*, _pTabPage) case ::dbaccess::DST_OUTLOOK: case ::dbaccess::DST_OUTLOOKEXP: case ::dbaccess::DST_EVOLUTION: + case ::dbaccess::DST_EVOLUTION_GROUPWISE: + case ::dbaccess::DST_EVOLUTION_LDAP: case ::dbaccess::DST_KAB: case ::dbaccess::DST_MACAB: enableButtons(WZB_NEXT,sal_False); @@ -198,6 +200,8 @@ WizardTypes::WizardState ODbTypeWizDialog::determineNextState( WizardState _nCur case ::dbaccess::DST_OUTLOOK: case ::dbaccess::DST_OUTLOOKEXP: case ::dbaccess::DST_EVOLUTION: + case ::dbaccess::DST_EVOLUTION_GROUPWISE: + case ::dbaccess::DST_EVOLUTION_LDAP: case ::dbaccess::DST_KAB: case ::dbaccess::DST_MACAB: nNextState = WZS_INVALID_STATE; @@ -218,6 +222,8 @@ WizardTypes::WizardState ODbTypeWizDialog::determineNextState( WizardState _nCur case ::dbaccess::DST_OUTLOOK: case ::dbaccess::DST_OUTLOOKEXP: case ::dbaccess::DST_EVOLUTION: + case ::dbaccess::DST_EVOLUTION_GROUPWISE: + case ::dbaccess::DST_EVOLUTION_LDAP: case ::dbaccess::DST_KAB: case ::dbaccess::DST_MACAB: case ::dbaccess::DST_MSACCESS: diff --git a/dbaccess/source/ui/inc/brwctrlr.hxx b/dbaccess/source/ui/inc/brwctrlr.hxx index 19a0971e4981..381c70a2c0cd 100644 --- a/dbaccess/source/ui/inc/brwctrlr.hxx +++ b/dbaccess/source/ui/inc/brwctrlr.hxx @@ -64,6 +64,11 @@ class ResMgr; struct FmFoundRecordInformation; struct FmSearchContext; +namespace dbtools +{ + class SQLExceptionInfo; +} + namespace dbaui { @@ -125,6 +130,7 @@ namespace dbaui sal_Bool m_bLoadCanceled : 1; // the load was canceled somehow sal_Bool m_bClosingKillOpen : 1; // are we killing the load thread because we are to be suspended ? sal_Bool m_bErrorOccured : 1; // see enter-/leaveFormAction + bool m_bCannotSelectUnfiltered : 1; // recieved an DATA_CANNOT_SELECT_UNFILTERED error protected: class FormErrorHelper @@ -151,7 +157,7 @@ namespace dbaui sal_Bool isValidCursor() const; // checks the ::com::sun::star::data::XDatabaseCursor-interface of m_xRowSet sal_Bool isLoaded() const; sal_Bool loadingCancelled() const { return m_bLoadCanceled; } - void setLoadingStarted() { m_bLoadCanceled = sal_False; } + void onStartLoading( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XLoadable >& _rxLoadable ); void setLoadingCancelled() { m_bLoadCanceled = sal_True; } const TransferableDataHelper& @@ -346,6 +352,8 @@ namespace dbaui void setCurrentColumnPosition( sal_Int16 _nPos ); void addColumnListeners(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > & _xGridControlModel); + void impl_checkForCannotSelectUnfiltered( const ::dbtools::SQLExceptionInfo& _rError ); + // time to check the CUT/COPY/PASTE-slot-states DECL_LINK( OnInvalidateClipboard, AutoTimer* ); DECL_LINK( OnClipboardChanged, void* ); |