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]

Reply via email to