summaryrefslogtreecommitdiff
path: root/dbaccess
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2009-06-05 12:31:05 +0000
committerKurt Zenker <kz@openoffice.org>2009-06-05 12:31:05 +0000
commit4044f96898a5564efd9274471467d5333211083d (patch)
tree8bb977a00555a71a7949a75cd7de1b1964963f17 /dbaccess
parentbda7e683aeb1e4f64967a0cb2bd69c9152c44037 (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')
-rw-r--r--dbaccess/source/core/api/FilteredContainer.cxx2
-rw-r--r--dbaccess/source/core/api/RowSet.cxx20
-rw-r--r--dbaccess/source/core/api/RowSet.hxx12
-rw-r--r--dbaccess/source/core/api/RowSetBase.cxx21
-rw-r--r--dbaccess/source/core/api/query.cxx4
-rw-r--r--dbaccess/source/core/api/query.hxx14
-rw-r--r--dbaccess/source/core/api/querycontainer.cxx2
-rw-r--r--dbaccess/source/core/api/resultset.hxx14
-rw-r--r--dbaccess/source/core/api/tablecontainer.cxx2
-rw-r--r--dbaccess/source/core/api/viewcontainer.cxx2
-rw-r--r--dbaccess/source/core/dataaccess/connection.hxx18
-rw-r--r--dbaccess/source/core/inc/FilteredContainer.hxx14
-rw-r--r--dbaccess/source/core/inc/querycontainer.hxx14
-rw-r--r--dbaccess/source/core/inc/tablecontainer.hxx6
-rw-r--r--dbaccess/source/core/inc/viewcontainer.hxx11
-rw-r--r--dbaccess/source/core/inc/warnings.hxx108
-rw-r--r--dbaccess/source/core/misc/makefile.mk1
-rw-r--r--dbaccess/source/core/misc/warnings.cxx134
-rw-r--r--dbaccess/source/ui/app/AppController.cxx10
-rw-r--r--dbaccess/source/ui/browser/brwctrlr.cxx136
-rw-r--r--dbaccess/source/ui/browser/exsrcbrw.cxx4
-rw-r--r--dbaccess/source/ui/dlg/ConnectionPage.cxx2
-rw-r--r--dbaccess/source/ui/dlg/dbwiz.cxx6
-rw-r--r--dbaccess/source/ui/inc/brwctrlr.hxx10
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* );