User: vg Date: 06/03/31 04:14:35 Modified: /dba/dbaccess/source/ui/dlg/ queryorder.cxx
Log: INTEGRATION: CWS dba203b (1.15.106); FILE MERGED 2006/03/27 14:11:34 fs 1.15.106.1: #i63439# correct parsing of existing sort order File Changes: Directory: /dba/dbaccess/source/ui/dlg/ ======================================= File [changed]: queryorder.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/dlg/queryorder.cxx?r1=1.15&r2=1.16 Delta lines: +74 -88 --------------------- --- queryorder.cxx 8 Sep 2005 15:09:53 -0000 1.15 +++ queryorder.cxx 31 Mar 2006 12:14:33 -0000 1.16 @@ -71,6 +71,10 @@ #include <com/sun/star/sdbcx/XColumnsSupplier.hpp> #endif +#ifndef TOOLS_DIAGNOSE_EX_H +#include <tools/diagnose_ex.h> +#endif + #include <algorithm> @@ -119,24 +123,24 @@ aSettings.SetStyleSettings( aStyle ); SetSettings( aSettings ); - arrLbFields[0] = &aLB_ORDERFIELD1; - arrLbFields[1] = &aLB_ORDERFIELD2; - arrLbFields[2] = &aLB_ORDERFIELD3; - - arrLbValues[0] = &aLB_ORDERVALUE1; - arrLbValues[1] = &aLB_ORDERVALUE2; - arrLbValues[2] = &aLB_ORDERVALUE3; + m_aColumnList[0] = &aLB_ORDERFIELD1; + m_aColumnList[1] = &aLB_ORDERFIELD2; + m_aColumnList[2] = &aLB_ORDERFIELD3; + + m_aValueList[0] = &aLB_ORDERVALUE1; + m_aValueList[1] = &aLB_ORDERVALUE2; + m_aValueList[2] = &aLB_ORDERVALUE3; xub_StrLen j; for(j=0 ; j < DOG_ROWS ; j++ ) { - arrLbFields[j]->InsertEntry( aSTR_NOENTRY ); + m_aColumnList[j]->InsertEntry( aSTR_NOENTRY ); } for( j=0 ; j < DOG_ROWS ; j++ ) { - arrLbFields[j]->SelectEntryPos(0); - arrLbValues[j]->SelectEntryPos(0); + m_aColumnList[j]->SelectEntryPos(0); + m_aValueList[j]->SelectEntryPos(0); } try { @@ -158,15 +162,14 @@ { for( j=0 ; j < DOG_ROWS ; j++ ) { - arrLbFields[j]->InsertEntry(*pIter); + m_aColumnList[j]->InsertEntry(*pIter); } } } } m_sOrgOrder = m_xQueryComposer->getOrder(); - - SetOrderList( m_sOrgOrder ); + impl_initializeOrderList_nothrow(); } catch(const Exception&) { @@ -202,87 +205,70 @@ IMPL_LINK_INLINE_END( DlgOrderCrit, FieldListSelectHdl, ListBox *, pListBox ) //------------------------------------------------------------------------------ -void DlgOrderCrit::EnableLines() +void DlgOrderCrit::impl_initializeOrderList_nothrow() { - DBG_CHKTHIS(DlgOrderCrit,NULL); - if( LbPos(aLB_ORDERFIELD1) == 0 ) - { - String aOrderList(GetOrderList()); - if(aOrderList.GetTokenCount(',')) - SetOrderList(aOrderList); - else + try { - aLB_ORDERFIELD2.Disable(); - aLB_ORDERVALUE2.Disable(); + const ::rtl::OUString sNameProperty = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ); + const ::rtl::OUString sAscendingProperty = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsAscending" ) ); - aLB_ORDERFIELD3.Disable(); - aLB_ORDERVALUE3.Disable(); - } - } - else + Reference< XIndexAccess > xOrderColumns( m_xQueryComposer->getOrderColumns(), UNO_QUERY_THROW ); + sal_Int32 nColumns = xOrderColumns->getCount(); + if ( nColumns > DOG_ROWS ) + nColumns = DOG_ROWS; + + for ( sal_Int32 i = 0; i < nColumns; ++i ) { - aLB_ORDERFIELD2.Enable(); - aLB_ORDERVALUE2.Enable(); + Reference< XPropertySet > xColumn( xOrderColumns->getByIndex( i ), UNO_QUERY_THROW ); - aLB_ORDERFIELD3.Enable(); - aLB_ORDERVALUE3.Enable(); - } + ::rtl::OUString sColumnName; + sal_Bool bIsAscending( sal_True ); - if( LbPos(aLB_ORDERFIELD2) == 0 ) - { - String aOrderList(GetOrderList()); - if(aOrderList.GetTokenCount(',')) - SetOrderList(aOrderList); - else - { - aLB_ORDERFIELD3.Disable(); - aLB_ORDERVALUE3.Disable(); + xColumn->getPropertyValue( sNameProperty ) >>= sColumnName; + xColumn->getPropertyValue( sAscendingProperty ) >>= bIsAscending; + + m_aColumnList[i]->SelectEntry( sColumnName ); + m_aValueList[i]->SelectEntryPos( bIsAscending ? 0 : 1 ); } } - else + catch( const Exception& ) { - aLB_ORDERFIELD3.Enable(); - aLB_ORDERVALUE3.Enable(); + DBG_UNHANDLED_EXCEPTION(); } } //------------------------------------------------------------------------------ -void DlgOrderCrit::SetOrderList( const String& _rOrderList ) +void DlgOrderCrit::EnableLines() { DBG_CHKTHIS(DlgOrderCrit,NULL); - Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData(); - ::rtl::OUString sQuote = xMetaData.is() ? xMetaData->getIdentifierQuoteString() : ::rtl::OUString(); - xub_StrLen nLen = _rOrderList.GetTokenCount(','); - xub_StrLen i; - for(i=0;i<nLen && i<DOG_ROWS;++i) + if ( aLB_ORDERFIELD1.GetSelectEntryPos() == 0 ) { - String aOrder = _rOrderList.GetToken(i,','); - aOrder.EraseTrailingChars(); - String sColumnName = aOrder.GetToken(0,' '); - - xub_StrLen nCount = sColumnName.GetTokenCount('.'); - if ( nCount > 1) - sColumnName = sColumnName.GetToken(nCount-1,'.'); + aLB_ORDERFIELD2.Disable(); + aLB_ORDERVALUE2.Disable(); - if(sQuote.getLength() && sColumnName.Len() && sColumnName.GetChar(0) == sQuote.getStr()[0] && sColumnName.GetChar(sColumnName.Len()-1) == sQuote.getStr()[0]) - { - sColumnName.Erase(0,1); - sColumnName.Erase(sColumnName.Len()-1,1); + aLB_ORDERFIELD2.SelectEntryPos( 0 ); + aLB_ORDERVALUE2.SelectEntryPos( 0 ); } - arrLbFields[i]->SelectEntry( sColumnName ); - xub_StrLen nAsc = (aOrder.GetTokenCount(' ') == 2) ? (aOrder.GetToken(1,' ').EqualsAscii("ASC") ? 0 : 1) : 0; - arrLbValues[i]->SelectEntryPos( nAsc ); + else + { + aLB_ORDERFIELD2.Enable(); + aLB_ORDERVALUE2.Enable(); } - // die nicht gesetzten auf 'kein' 'aufsteigend' - xub_StrLen nItemsSet = std::min(nLen, xub_StrLen(DOG_ROWS)); - for (i=0 ; i<DOG_ROWS-nItemsSet; ++i) + if ( aLB_ORDERFIELD2.GetSelectEntryPos() == 0 ) { - arrLbFields[2-i]->SelectEntryPos( 0 ); - arrLbValues[2-i]->SelectEntryPos( 0 ); - } + aLB_ORDERFIELD3.Disable(); + aLB_ORDERVALUE3.Disable(); + aLB_ORDERFIELD3.SelectEntryPos( 0 ); + aLB_ORDERVALUE3.SelectEntryPos( 0 ); + } + else + { + aLB_ORDERFIELD3.Enable(); + aLB_ORDERVALUE3.Enable(); + } } //------------------------------------------------------------------------------ @@ -299,12 +285,12 @@ ::rtl::OUString sOrder; for( sal_uInt16 i=0 ; i<DOG_ROWS; i++ ) { - if(arrLbFields[i]->GetSelectEntryPos() != 0) + if(m_aColumnList[i]->GetSelectEntryPos() != 0) { if(sOrder.getLength()) sOrder += ::rtl::OUString::createFromAscii(","); - String sName = arrLbFields[i]->GetSelectEntry(); + String sName = m_aColumnList[i]->GetSelectEntry(); try { sal_Bool bFunction = sal_False; @@ -330,7 +316,7 @@ catch(Exception) { } - if(arrLbValues[i]->GetSelectEntryPos()) + if(m_aValueList[i]->GetSelectEntryPos()) sOrder += sDESC; else sOrder += sASC; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
