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]

Reply via email to