User: ihi Date: 2007-11-21 15:31:38+0000 Modified: dba/dbaccess/source/core/api/KeySet.cxx
Log: INTEGRATION: CWS dba24c (1.67.108); FILE MERGED 2007/10/12 21:45:05 fs 1.67.108.2: #i10000# 2007/10/11 14:15:07 oj 1.67.108.1: #i76377# check names of composer File Changes: Directory: /dba/dbaccess/source/core/api/ ========================================= File [changed]: KeySet.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/api/KeySet.cxx?r1=1.67&r2=1.68 Delta lines: +25 -22 --------------------- --- KeySet.cxx 2006-11-21 17:15:22+0000 1.67 +++ KeySet.cxx 2007-11-21 15:31:36+0000 1.68 @@ -265,32 +265,35 @@ Reference<XSingleSelectQueryComposer> xAnalyzer(xFactory->createInstance(SERVICE_NAME_SINGLESELECTQUERYCOMPOSER),UNO_QUERY); xAnalyzer->setQuery(m_xComposer->getQuery()); Reference<XTablesSupplier> xTabSup(xAnalyzer,uno::UNO_QUERY); - Reference<XIndexAccess> xSelectTables(xTabSup->getTables(),uno::UNO_QUERY); - sal_Int32 nCount = xSelectTables->getCount(); - if ( nCount > 1 ) // special handling for join + Reference<XNameAccess> xSelectTables(xTabSup->getTables(),uno::UNO_QUERY); + const Sequence< ::rtl::OUString> aSeq = xSelectTables->getElementNames(); + if ( aSeq.getLength() > 1 ) // special handling for join { - for (sal_Int32 i = 0; i < nCount; ++i) + const ::rtl::OUString* pIter = aSeq.getConstArray(); + const ::rtl::OUString* pEnd = pIter + aSeq.getLength(); + for(;pIter != pEnd;++pIter) { - connectivity::OSQLTable xSelColSup(xSelectTables->getByIndex(i),uno::UNO_QUERY); - if ( xSelColSup != m_xTable ) + if ( *pIter != m_sUpdateTableName ) { - Reference<XNameAccess > xSelectColumns = xSup->getColumns(); - Reference<XPropertySet> xProp(xSup,uno::UNO_QUERY); + connectivity::OSQLTable xSelColSup(xSelectTables->getByName(*pIter),uno::UNO_QUERY); + Reference<XPropertySet> xProp(xSelColSup,uno::UNO_QUERY); ::rtl::OUString sSelectTableName = ::dbtools::composeTableName( xMetaData, xProp, ::dbtools::eInDataManipulation, false, false, false ); + Reference<XNameAccess > xSelectColumns = xSup->getColumns(); + ::dbaccess::getColumnPositions(xSelectColumns,xSelColSup->getColumns(),sSelectTableName,(*m_pForeignColumnNames)); - uno::Sequence< ::rtl::OUString> aSeq = xSelectColumns->getElementNames(); - const ::rtl::OUString* pIter = aSeq.getConstArray(); - const ::rtl::OUString* pEnd = pIter + aSeq.getLength(); - for( ; pIter != pEnd ; ++pIter) + uno::Sequence< ::rtl::OUString> aSelectColumnNames = xSelectColumns->getElementNames(); + const ::rtl::OUString* pSelectColumnName = aSelectColumnNames.getConstArray(); + const ::rtl::OUString* pSelectColumnEnd = pSelectColumnName + aSelectColumnNames.getLength(); + for( ; pSelectColumnName != pSelectColumnEnd ; ++pSelectColumnName) { // look for columns not in the source columns to use them as filter as well - if ( !xSourceColumns->hasByName(*pIter) ) + if ( !xSourceColumns->hasByName(*pSelectColumnName) ) { aFilter += s_sDot; - aFilter += ::dbtools::quoteName( aQuote,*pIter); + aFilter += ::dbtools::quoteName( aQuote,*pSelectColumnName); aFilter += s_sParam; - if ( (pIter+1) != pEnd ) + if ( (pSelectColumnName+1) != pSelectColumnEnd ) aFilter += aAnd; } } @@ -1306,9 +1309,9 @@ const ::rtl::OUString* pSelBegin = aSelNames.getConstArray(); const ::rtl::OUString* pSelEnd = pSelBegin + aSelNames.getLength(); - Sequence< ::rtl::OUString> aTableNames(_rxColumns->getElementNames()); - const ::rtl::OUString* pTableBegin = aTableNames.getConstArray(); - const ::rtl::OUString* pTableEnd = pTableBegin + aTableNames.getLength(); + Sequence< ::rtl::OUString> aColumnNames(_rxColumns->getElementNames()); + const ::rtl::OUString* pColumnIter = aColumnNames.getConstArray(); + const ::rtl::OUString* pColumnEnd = pColumnIter + aColumnNames.getLength(); ::comphelper::UStringMixLess aTmp(_rColumnNames.key_comp()); ::comphelper::UStringMixEqual bCase(static_cast< ::comphelper::UStringMixLess*>(&aTmp)->isCaseSensitive()); @@ -1322,9 +1325,9 @@ xColumnProp->getPropertyValue(PROPERTY_REALNAME) >>= sRealName; xColumnProp->getPropertyValue(PROPERTY_TABLENAME) >>= sTableName; - for(;pTableBegin != pTableEnd;++pTableBegin) + for(;pColumnIter != pColumnEnd;++pColumnIter) { - if(bCase(sRealName,*pTableBegin) && bCase(_rsUpdateTableName,sTableName) && _rColumnNames.find(*pTableBegin) == _rColumnNames.end()) + if(bCase(sRealName,*pColumnIter) && bCase(_rsUpdateTableName,sTableName) && _rColumnNames.find(*pColumnIter) == _rColumnNames.end()) { sal_Int32 nType = 0; xColumnProp->getPropertyValue(PROPERTY_TYPE) >>= nType; @@ -1336,7 +1339,7 @@ break; } } - pTableBegin = aTableNames.getConstArray(); + pColumnIter = aColumnNames.getConstArray(); } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
