User: ihi Date: 2006/10/18 06:31:15 Modified: dba/dbaccess/source/ui/dlg/queryfilter.cxx
Log: INTEGRATION: CWS dba205b (1.29.32); FILE MERGED 2006/09/13 07:36:32 fs 1.29.32.2: #b6248060# also respect the IsSearchable flag at the column 2006/08/09 20:35:48 fs 1.29.32.1: #i68304# corrected GetSQLPredicateType File Changes: Directory: /dba/dbaccess/source/ui/dlg/ ======================================= File [changed]: queryfilter.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/dlg/queryfilter.cxx?r1=1.30&r2=1.31 Delta lines: +74 -101 ---------------------- --- queryfilter.cxx 17 Sep 2006 07:11:21 -0000 1.30 +++ queryfilter.cxx 18 Oct 2006 13:31:12 -0000 1.31 @@ -78,6 +78,9 @@ #ifndef TOOLS_DIAGNOSE_EX_H #include <tools/diagnose_ex.h> #endif +#ifndef TOOLS_DIAGNOSE_EX_H +#include <tools/diagnose_ex.h> +#endif #ifndef _DBAUI_MODULE_DBU_HXX_ #include "moduledbu.hxx" #endif @@ -177,25 +180,29 @@ Reference<XPropertySet> xColumn; for(;pIter != pEnd;++pIter) { - if (m_xColumns->hasByName(*pIter)) + try { - xColumn.set(m_xColumns->getByName(*pIter),UNO_QUERY); - OSL_ENSURE(xColumn.is(),"DlgFilterCrit::DlgFilterCrit: Column is null!"); + xColumn.set( m_xColumns->getByName( *pIter ), UNO_QUERY_THROW ); + + sal_Int32 nDataType( 0 ); + OSL_VERIFY( xColumn->getPropertyValue( PROPERTY_TYPE ) >>= nDataType ); + sal_Int32 eColumnSearch = ::dbtools::getSearchColumnFlag( m_xConnection, nDataType ); + if ( eColumnSearch == ColumnSearch::NONE ) + continue; + + sal_Bool bIsSearchable( sal_True ); + OSL_VERIFY( xColumn->getPropertyValue( PROPERTY_ISSEARCHABLE ) >>= bIsSearchable ); + if ( !bIsSearchable ) + continue; } - else - OSL_ENSURE(sal_False, "DlgFilterCrit::DlgFilterCrit: invalid column name!"); - sal_Int32 nDataType(0); - xColumn->getPropertyValue(PROPERTY_TYPE) >>= nDataType; - sal_Int32 eColumnSearch = dbtools::getSearchColumnFlag(m_xConnection,nDataType); - // TODO - // !pColumn->IsFunction() - if(eColumnSearch != ColumnSearch::NONE) + catch( const Exception& ) { + DBG_UNHANDLED_EXCEPTION(); + } aLB_WHEREFIELD1.InsertEntry( *pIter ); aLB_WHEREFIELD2.InsertEntry( *pIter ); aLB_WHEREFIELD3.InsertEntry( *pIter ); } - } Reference<XNameAccess> xSelectColumns = Reference<XColumnsSupplier>(m_xQueryComposer,UNO_QUERY)->getColumns(); aNames = xSelectColumns->getElementNames(); @@ -268,89 +275,55 @@ #define LbPos(x) ((x).GetSelectEntryPos()) //------------------------------------------------------------------------------ -sal_Int32 DlgFilterCrit::GetOSQLPredicateType(sal_uInt16 nPos,sal_uInt16 nCount) const +sal_Int32 DlgFilterCrit::GetOSQLPredicateType( const String& _rSelectedPredicate ) const { - sal_Int32 ePreType( SQLFilterOperator::EQUAL ); - - if(nCount == 10) + sal_Int32 nPredicateIndex = -1; + for ( xub_StrLen i=0; i<aSTR_COMPARE_OPERATORS.GetTokenCount(); ++i) + if ( aSTR_COMPARE_OPERATORS.GetToken(i) == _rSelectedPredicate ) { - switch(nPos) + nPredicateIndex = i; + break; + } + + sal_Int32 nPredicateType = SQLFilterOperator::NOT_SQLNULL; + switch ( nPredicateIndex ) { case 0: - ePreType = SQLFilterOperator::EQUAL; + nPredicateType = SQLFilterOperator::EQUAL; break; case 1: - ePreType = SQLFilterOperator::NOT_EQUAL; + nPredicateType = SQLFilterOperator::NOT_EQUAL; break; case 2: - ePreType = SQLFilterOperator::LESS; + nPredicateType = SQLFilterOperator::LESS; break; case 3: - ePreType = SQLFilterOperator::LESS_EQUAL; + nPredicateType = SQLFilterOperator::LESS_EQUAL; break; case 4: - ePreType = SQLFilterOperator::GREATER; + nPredicateType = SQLFilterOperator::GREATER; break; case 5: - ePreType = SQLFilterOperator::GREATER_EQUAL; + nPredicateType = SQLFilterOperator::GREATER_EQUAL; break; case 6: - ePreType = SQLFilterOperator::LIKE; + nPredicateType = SQLFilterOperator::LIKE; break; case 7: - ePreType = SQLFilterOperator::NOT_LIKE; + nPredicateType = SQLFilterOperator::NOT_LIKE; break; case 8: - ePreType = SQLFilterOperator::SQLNULL; + nPredicateType = SQLFilterOperator::SQLNULL; break; case 9: - ePreType = SQLFilterOperator::NOT_SQLNULL; + nPredicateType = SQLFilterOperator::NOT_SQLNULL; break; - } - } - else if(nCount == 8) - { - switch(nPos) - { - case 0: - ePreType = SQLFilterOperator::EQUAL; - break; - case 1: - ePreType = SQLFilterOperator::NOT_EQUAL; - break; - case 2: - ePreType = SQLFilterOperator::LESS; - break; - case 3: - ePreType = SQLFilterOperator::LESS_EQUAL; - break; - case 4: - ePreType = SQLFilterOperator::GREATER; - break; - case 5: - ePreType = SQLFilterOperator::GREATER_EQUAL; - break; - case 6: - ePreType = SQLFilterOperator::SQLNULL; - break; - case 7: - ePreType = SQLFilterOperator::NOT_SQLNULL; - break; - } - } - else - { - switch(nPos) - { - case 0: - ePreType = SQLFilterOperator::LIKE; - break; - case 1: - ePreType = SQLFilterOperator::NOT_LIKE; + default: + OSL_ENSURE( false, "DlgFilterCrit::GetOSQLPredicateType: unknown predicate string!" ); break; } - } - return ePreType; + + return nPredicateType; } //------------------------------------------------------------------------------ sal_uInt16 DlgFilterCrit::GetSelectionPos(sal_Int32 eType,const ListBox& rListBox) const @@ -424,7 +397,7 @@ { } - _rFilter.Handle = GetOSQLPredicateType(_rComp.GetSelectEntryPos(),_rComp.GetEntryCount()); + _rFilter.Handle = GetOSQLPredicateType( _rComp.GetSelectEntry() ); if ( SQLFilterOperator::SQLNULL != _rFilter.Handle && _rFilter.Handle != SQLFilterOperator::NOT_SQLNULL ) { String sPredicateValue = m_aPredicateInput.getPredicateValue( _rValue.GetText(), getMatchingColumn( _rValue ), sal_True ); @@ -905,7 +878,7 @@ } catch(Exception) { - OSL_ENSURE(0,"Could create filter!"); + DBG_UNHANDLED_EXCEPTION(); } } // ----------------------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
