User: rt Date: 2008-06-06 13:17:30+0000 Modified: dba/connectivity/source/commontools/TKeys.cxx
Log: INTEGRATION: CWS dba30c (1.12.10); FILE MERGED 2008/05/08 07:15:27 oj 1.12.10.2: #i87131# collect keys only once, getKeys always refetch keys 2008/05/05 10:57:50 oj 1.12.10.1: #i87131# collect keys only once, getKeys always refetch the keys File Changes: Directory: /dba/connectivity/source/commontools/ ================================================ File [changed]: TKeys.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/commontools/TKeys.cxx?r1=1.12&r2=1.13 Delta lines: +17 -42 --------------------- --- TKeys.cxx 2008-04-10 07:57:56+0000 1.12 +++ TKeys.cxx 2008-06-06 13:17:27+0000 1.13 @@ -70,44 +70,13 @@ if(_rName.getLength()) { - ::rtl::OUString aSchema,aTable; - ::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap(); - m_pTable->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_SCHEMANAME)) >>= aSchema; - m_pTable->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME)) >>= aTable; - - Reference< XResultSet > xResult = m_pTable->getMetaData()->getImportedKeys(m_pTable->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_CATALOGNAME)), - aSchema,aTable); - - if(xResult.is()) - { - Reference< XRow > xRow(xResult,UNO_QUERY); - ::rtl::OUString aName,aCatalog; - while( xResult->next() ) - { - // this must be outsid the "if" because we have to call in a right order - aCatalog = xRow->getString(1); - if ( xRow->wasNull() ) - aCatalog = ::rtl::OUString(); - aSchema = xRow->getString(2); - aName = xRow->getString(3); - - sal_Int32 nUpdateRule = xRow->getInt(10); - sal_Int32 nDeleteRule = xRow->getInt(11); - if ( xRow->getString(12) == _rName ) - { - ::rtl::OUString aComposedName; - aComposedName = ::dbtools::composeTableName(m_pTable->getMetaData(),aCatalog,aSchema,aName,sal_False,::dbtools::eInDataManipulation); - OTableKeyHelper* pRet = new OTableKeyHelper(m_pTable,_rName,aComposedName,KeyType::FOREIGN,nUpdateRule,nDeleteRule); + OTableKeyHelper* pRet = new OTableKeyHelper(m_pTable,_rName,m_pTable->getKeyProperties(_rName)); xRet = pRet; - break; - } - } - } } if(!xRet.is()) // we have a primary key with a system name { - OTableKeyHelper* pRet = new OTableKeyHelper(m_pTable,_rName,::rtl::OUString(),KeyType::PRIMARY,KeyRule::NO_ACTION,KeyRule::NO_ACTION); + OTableKeyHelper* pRet = new OTableKeyHelper(m_pTable,_rName,m_pTable->getKeyProperties(_rName)); xRet = pRet; } @@ -213,26 +182,30 @@ } aSql = aSql.replaceAt(aSql.getLength()-1,1,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(")"))); + sal_Int32 nUpdateRule = 0, nDeleteRule = 0; + ::rtl::OUString sReferencedName; + if ( nKeyType == KeyType::FOREIGN ) { - ::rtl::OUString aRefTable; - - descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_REFERENCEDTABLE)) >>= aRefTable; + descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_REFERENCEDTABLE)) >>= sReferencedName; aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" REFERENCES ")) - + ::dbtools::quoteTableName(m_pTable->getConnection()->getMetaData(),aRefTable,::dbtools::eInTableDefinitions); + + ::dbtools::quoteTableName(m_pTable->getConnection()->getMetaData(),sReferencedName,::dbtools::eInTableDefinitions); aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" (")); for(sal_Int32 i=0;i<xColumns->getCount();++i) { - ::cppu::extractInterface(xColProp,xColumns->getByIndex(i)); + xColumns->getByIndex(i) >>= xColProp; aSql += ::dbtools::quoteName( aQuote,getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_RELATEDCOLUMN)))) + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(",")); } aSql = aSql.replaceAt(aSql.getLength()-1,1,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(")"))); - aSql += getKeyRuleString(sal_True ,getINT32(descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_UPDATERULE)))); - aSql += getKeyRuleString(sal_False ,getINT32(descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_DELETERULE)))); + descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_UPDATERULE)) >>= nUpdateRule; + descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_DELETERULE)) >>= nDeleteRule; + + aSql += getKeyRuleString(sal_True ,nUpdateRule); + aSql += getKeyRuleString(sal_False ,nDeleteRule); } Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( ); @@ -277,6 +250,8 @@ { } + m_pTable->addKey(sNewName,sdbcx::TKeyProperties(new sdbcx::KeyProperties(sReferencedName,nKeyType,nUpdateRule,nDeleteRule))); + return createObject( sNewName ); } // ----------------------------------------------------------------------------- @@ -309,7 +284,7 @@ else { aSql += getDropForeignKey(); - ::rtl::OUString aQuote = m_pTable->getConnection()->getMetaData()->getIdentifierQuoteString(); + const ::rtl::OUString aQuote = m_pTable->getConnection()->getMetaData()->getIdentifierQuoteString(); aSql += ::dbtools::quoteName( aQuote,_sElementName); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
