User: obo Date: 2006/07/10 07:22:28 Modified: dba/connectivity/source/drivers/adabas/BKeys.cxx
Log: INTEGRATION: CWS qiq (1.20.104); FILE MERGED 2006/06/27 14:03:47 fs 1.20.104.2: RESYNC: (1.20-1.21); FILE MERGED 2006/06/16 11:32:30 fs 1.20.104.1: during #i51143#: refactored VCollection: - createEmptyObject now named createDescriptor - cloneObject removed - appendObject now returns the newly created object (previously done via a subsequent call to cloneObject) File Changes: Directory: /dba/connectivity/source/drivers/adabas/ =================================================== File [changed]: BKeys.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/adabas/BKeys.cxx?r1=1.21&r2=1.22 Delta lines: +86 -101 ---------------------- --- BKeys.cxx 20 Jun 2006 01:09:54 -0000 1.21 +++ BKeys.cxx 10 Jul 2006 14:22:26 -0000 1.22 @@ -63,6 +63,9 @@ #ifndef _COMPHELPER_PROPERTY_HXX_ #include <comphelper/property.hxx> #endif +#ifndef CONNECTIVITY_TKEYS_HXX +#include <connectivity/TKeys.hxx> +#endif using namespace ::comphelper; @@ -125,16 +128,21 @@ m_pTable->refreshKeys(); } // ------------------------------------------------------------------------- -Reference< XPropertySet > OKeys::createEmptyObject() +Reference< XPropertySet > OKeys::createDescriptor() { return new OAdabasKey(m_pTable); } // ------------------------------------------------------------------------- // XAppend -void OKeys::appendObject( const Reference< XPropertySet >& descriptor ) +sdbcx::ObjectType OKeys::appendObject( const ::rtl::OUString& _rForName, const Reference< XPropertySet >& descriptor ) { - if(!m_pTable->isNew()) + if ( m_pTable->isNew() ) { + Reference< XPropertySet > xNewDescriptor( cloneDescriptor( descriptor ) ); + OKeysHelper::cloneDescriptorColumns( descriptor, xNewDescriptor ); + return xNewDescriptor; + } + sal_Int32 nKeyType = getINT32(descriptor->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))); ::rtl::OUString aSql = ::rtl::OUString::createFromAscii("ALTER TABLE "); @@ -208,7 +216,8 @@ Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( ); xStmt->execute(aSql); ::comphelper::disposeComponent(xStmt); - // we need a name for the insertion + // find the name which the database gave the new key + ::rtl::OUString sNewName( _rForName ); if(nKeyType == KeyType::FOREIGN) { Reference< XResultSet > xResult = m_pTable->getMetaData()->getImportedKeys(Any(),m_pTable->getSchema(),m_pTable->getTableName()); @@ -221,13 +230,15 @@ if ( !m_pElements->exists(sName) ) // this name wasn't inserted yet so it must be te new one { descriptor->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME),makeAny(sName)); + sNewName = sName; break; } } ::comphelper::disposeComponent(xResult); } } - } + + return createObject( sNewName ); } // ------------------------------------------------------------------------- // XDrop @@ -261,32 +272,6 @@ } } } -} -// ----------------------------------------------------------------------------- -sdbcx::ObjectType OKeys::cloneObject(const Reference< XPropertySet >& _xDescriptor) -{ - sdbcx::ObjectType xName; - if(!m_pTable->isNew()) - { - xName = OCollection_TYPE::cloneObject(_xDescriptor); - } - else - { - OAdabasKey* pKey = new OAdabasKey(m_pTable); - xName = pKey; - ::comphelper::copyProperties(_xDescriptor,xName); - Reference<XColumnsSupplier> xSup(_xDescriptor,UNO_QUERY); - Reference<XIndexAccess> xIndex(xSup->getColumns(),UNO_QUERY); - Reference<XAppend> xAppend(pKey->getColumns(),UNO_QUERY); - sal_Int32 nCount = xIndex->getCount(); - for(sal_Int32 i=0;i< nCount;++i) - { - Reference<XPropertySet> xProp; - xIndex->getByIndex(i) >>= xProp; - xAppend->appendByDescriptor(xProp); - } - } - return xName; } // ----------------------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
