summaryrefslogtreecommitdiffstats
path: root/dbaccess/source/ui/dlg/queryfilter.cxx
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2006-10-18 12:31:12 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2006-10-18 12:31:12 +0000
commit27e7c22b80b2b4c82a72ccf02e5d3fc15ae8185c (patch)
treeeea66d2842a28fd6d3ef35f26c1eea57b9b473ac /dbaccess/source/ui/dlg/queryfilter.cxx
parentINTEGRATION: CWS dba205b (1.18.30); FILE MERGED (diff)
downloadcore-27e7c22b80b2b4c82a72ccf02e5d3fc15ae8185c.tar.gz
core-27e7c22b80b2b4c82a72ccf02e5d3fc15ae8185c.zip
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
Diffstat (limited to 'dbaccess/source/ui/dlg/queryfilter.cxx')
-rw-r--r--dbaccess/source/ui/dlg/queryfilter.cxx167
1 files changed, 70 insertions, 97 deletions
diff --git a/dbaccess/source/ui/dlg/queryfilter.cxx b/dbaccess/source/ui/dlg/queryfilter.cxx
index 2a5144025913..84359a6601e4 100644
--- a/dbaccess/source/ui/dlg/queryfilter.cxx
+++ b/dbaccess/source/ui/dlg/queryfilter.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: queryfilter.cxx,v $
*
- * $Revision: 1.30 $
+ * $Revision: 1.31 $
*
- * last change: $Author: obo $ $Date: 2006-09-17 07:11:21 $
+ * last change: $Author: ihi $ $Date: 2006-10-18 13:31:12 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -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,24 +180,28 @@ DlgFilterCrit::DlgFilterCrit(Window * pParent,
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& )
{
- aLB_WHEREFIELD1.InsertEntry( *pIter );
- aLB_WHEREFIELD2.InsertEntry( *pIter );
- aLB_WHEREFIELD3.InsertEntry( *pIter );
+ 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();
@@ -268,89 +275,55 @@ DlgFilterCrit::~DlgFilterCrit()
#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)
- {
- switch(nPos)
+ sal_Int32 nPredicateIndex = -1;
+ for ( xub_StrLen i=0; i<aSTR_COMPARE_OPERATORS.GetTokenCount(); ++i)
+ if ( aSTR_COMPARE_OPERATORS.GetToken(i) == _rSelectedPredicate )
{
- 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::LIKE;
- break;
- case 7:
- ePreType = SQLFilterOperator::NOT_LIKE;
- break;
- case 8:
- ePreType = SQLFilterOperator::SQLNULL;
- break;
- case 9:
- ePreType = SQLFilterOperator::NOT_SQLNULL;
+ nPredicateIndex = i;
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;
- break;
- }
- }
- return ePreType;
+
+ sal_Int32 nPredicateType = SQLFilterOperator::NOT_SQLNULL;
+ switch ( nPredicateIndex )
+ {
+ case 0:
+ nPredicateType = SQLFilterOperator::EQUAL;
+ break;
+ case 1:
+ nPredicateType = SQLFilterOperator::NOT_EQUAL;
+ break;
+ case 2:
+ nPredicateType = SQLFilterOperator::LESS;
+ break;
+ case 3:
+ nPredicateType = SQLFilterOperator::LESS_EQUAL;
+ break;
+ case 4:
+ nPredicateType = SQLFilterOperator::GREATER;
+ break;
+ case 5:
+ nPredicateType = SQLFilterOperator::GREATER_EQUAL;
+ break;
+ case 6:
+ nPredicateType = SQLFilterOperator::LIKE;
+ break;
+ case 7:
+ nPredicateType = SQLFilterOperator::NOT_LIKE;
+ break;
+ case 8:
+ nPredicateType = SQLFilterOperator::SQLNULL;
+ break;
+ case 9:
+ nPredicateType = SQLFilterOperator::NOT_SQLNULL;
+ break;
+ default:
+ OSL_ENSURE( false, "DlgFilterCrit::GetOSQLPredicateType: unknown predicate string!" );
+ break;
+ }
+
+ return nPredicateType;
}
//------------------------------------------------------------------------------
sal_uInt16 DlgFilterCrit::GetSelectionPos(sal_Int32 eType,const ListBox& rListBox) const
@@ -424,7 +397,7 @@ sal_Bool DlgFilterCrit::getCondition(const ListBox& _rField,const ListBox& _rCom
{
}
- _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 @@ void DlgFilterCrit::BuildWherePart()
}
catch(Exception)
{
- OSL_ENSURE(0,"Could create filter!");
+ DBG_UNHANDLED_EXCEPTION();
}
}
// -----------------------------------------------------------------------------