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/source/ui | |
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/source/ui')
-rw-r--r-- | dbaccess/source/ui/app/AppController.cxx | 10 | ||||
-rw-r--r-- | dbaccess/source/ui/browser/brwctrlr.cxx | 136 | ||||
-rw-r--r-- | dbaccess/source/ui/browser/exsrcbrw.cxx | 4 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/ConnectionPage.cxx | 2 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/dbwiz.cxx | 6 | ||||
-rw-r--r-- | dbaccess/source/ui/inc/brwctrlr.hxx | 10 |
6 files changed, 103 insertions, 65 deletions
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* ); |