dba33f: don't ask every driver for a tables keys and consolidate some code fragments

This commit is contained in:
Ocke Janssen [oj]
2010-02-08 14:07:46 +01:00
parent 6726468497
commit d16fa93c41
8 changed files with 33 additions and 102 deletions

View File

@@ -233,22 +233,10 @@ Sequence< ::rtl::OUString > ObjectCopySource::getColumnNames() const
//------------------------------------------------------------------------
Sequence< ::rtl::OUString > ObjectCopySource::getPrimaryKeyColumnNames() const
{
Reference<XKeysSupplier> xSup(m_xObject,UNO_QUERY);
Reference< XIndexAccess> xKeys;
if(xSup.is() )
xKeys = xSup->getKeys();
::std::vector< Reference< XNameAccess > > aPrimaryKeyColumns( ::dbaui::getKeyColumns( xKeys, KeyType::PRIMARY ) );
OSL_ENSURE( ( aPrimaryKeyColumns.size() == 1 ) || aPrimaryKeyColumns.empty(),
"ObjectCopySource::getPrimaryKeyColumnNames: more than one primary key?!" );
Reference< XNameAccess > xKeyCols;
if ( !aPrimaryKeyColumns.empty() )
xKeyCols = aPrimaryKeyColumns[0];
const Reference<XNameAccess> xPrimaryKeyColumns = getPrimaryKeyColumns_throw(m_xObject);
Sequence< ::rtl::OUString > aKeyColNames;
if ( xKeyCols.is() )
aKeyColNames = xKeyCols->getElementNames();
if ( xPrimaryKeyColumns.is() )
aKeyColNames = xPrimaryKeyColumns->getElementNames();
return aKeyColNames;
}