User: vg Date: 05/03/10 07:42:00 Modified: /dba/connectivity/source/sdbcx/ VCollection.cxx
Log: INTEGRATION: CWS dba24 (1.35.32); FILE MERGED 2005/02/09 08:07:58 oj 1.35.32.1: #i26950# remove the need for XNamed File Changes: Directory: /dba/connectivity/source/sdbcx/ ========================================== File [changed]: VCollection.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/sdbcx/VCollection.cxx?r1=1.35&r2=1.36 Delta lines: +26 -17 --------------------- --- VCollection.cxx 22 Oct 2004 08:46:17 -0000 1.35 +++ VCollection.cxx 10 Mar 2005 15:41:57 -0000 1.36 @@ -149,7 +149,7 @@ m_aNameMap.clear(); } // ----------------------------------------------------------------------------- - virtual void insert(const ::rtl::OUString& _sName,const Object_BASE& _xObject) + virtual void insert(const ::rtl::OUString& _sName,const ObjectType& _xObject) { m_aElements.push_back(m_aNameMap.insert(m_aNameMap.begin(), ObjectEntry(_sName,_xObject))); } @@ -160,7 +160,7 @@ m_aElements.reserve(_rVector.size()); for(TStringVector::const_iterator i=_rVector.begin(); i != _rVector.end();++i) - m_aElements.push_back(m_aNameMap.insert(m_aNameMap.begin(), ObjectEntry(*i,WeakReference< XNamed >()))); + m_aElements.push_back(m_aNameMap.insert(m_aNameMap.begin(), ObjectEntry(*i,ObjectType()))); } // ----------------------------------------------------------------------------- virtual bool rename(const ::rtl::OUString _sOldName,const ::rtl::OUString _sNewName) @@ -243,18 +243,18 @@ return m_aElements[_nIndex]->first; } // ----------------------------------------------------------------------------- - virtual Reference< XNamed > getObject(sal_Int32 _nIndex) + virtual ObjectType getObject(sal_Int32 _nIndex) { OSL_ENSURE(_nIndex >= 0 && _nIndex < static_cast<sal_Int32>(m_aElements.size()),"Illegal argument!"); return m_aElements[_nIndex]->second; } // ----------------------------------------------------------------------------- - virtual Reference< XNamed > getObject(const ::rtl::OUString& columnName) + virtual ObjectType getObject(const ::rtl::OUString& columnName) { return m_aNameMap.find(columnName)->second; } // ----------------------------------------------------------------------------- - virtual void setObject(sal_Int32 _nIndex,const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed >& _xObject) + virtual void setObject(sal_Int32 _nIndex,const ObjectType& _xObject) { OSL_ENSURE(_nIndex >= 0 && _nIndex < static_cast<sal_Int32>(m_aElements.size()),"Illegal argument!"); m_aElements[_nIndex]->second = _xObject; @@ -285,11 +285,11 @@ { if ( _bUseHardRef ) { - m_pElements.reset(new OHardRefMap< Reference< XNamed> >(_bCase)); + m_pElements.reset(new OHardRefMap< ObjectType >(_bCase)); } else { - m_pElements.reset(new OHardRefMap< WeakReference< XNamed> >(_bCase)); + m_pElements.reset(new OHardRefMap< WeakReference< XPropertySet> >(_bCase)); } m_pElements->reFill(_rVector); } @@ -399,21 +399,31 @@ return createEmptyObject(); } +// ----------------------------------------------------------------------------- +::rtl::OUString OCollection::getNameForObject(const ObjectType& _xObject) +{ + OSL_ENSURE(_xObject.is(),"OCollection::getNameForObject: Object is NULL!"); + ::rtl::OUString sName; + _xObject->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME)) >>= sName; + return sName; +} // ------------------------------------------------------------------------- // XAppend void SAL_CALL OCollection::appendByDescriptor( const Reference< XPropertySet >& descriptor ) throw(SQLException, ElementExistException, RuntimeException) { ::osl::MutexGuard aGuard(m_rMutex); - Reference< XNamed > xName(descriptor,UNO_QUERY); + ObjectType xName(descriptor,UNO_QUERY); if(xName.is()) { - ::rtl::OUString sName = xName->getName(); + + ::rtl::OUString sName = getNameForObject(xName); + if ( m_pElements->exists(sName) ) throw ElementExistException(sName,static_cast<XTypeProvider*>(this)); appendObject(descriptor); - Reference< XNamed > xNewName = cloneObject(descriptor); + ObjectType xNewName = cloneObject(descriptor); Reference<XUnoTunnel> xTunnel(xNewName,UNO_QUERY); if(xTunnel.is()) { @@ -424,7 +434,7 @@ if(xNewName.is()) { - sName = xNewName->getName(); + sName = getNameForObject(xNewName); if ( !m_pElements->exists(sName) ) // this may happen when the drived class included it itself m_pElements->insert(sName,xNewName); // notify our container listeners @@ -548,7 +558,7 @@ m_aRefreshListeners.removeInterface(l); } // ----------------------------------------------------------------------------- -void OCollection::insertElement(const ::rtl::OUString& _sElementName,const Object_BASE& _xElement) +void OCollection::insertElement(const ::rtl::OUString& _sElementName,const ObjectType& _xElement) { OSL_ENSURE(!m_pElements->exists(_sElementName),"Element already exists"); if ( !m_pElements->exists(_sElementName) ) @@ -572,9 +582,9 @@ } } // ----------------------------------------------------------------------------- -Reference< XNamed > OCollection::getObject(sal_Int32 _nIndex) +ObjectType OCollection::getObject(sal_Int32 _nIndex) { - Reference< XNamed > xName = m_pElements->getObject(_nIndex); + ObjectType xName = m_pElements->getObject(_nIndex); if ( !xName.is() ) { try @@ -612,10 +622,9 @@ { } // ----------------------------------------------------------------------------- -Reference< XNamed > OCollection::cloneObject(const Reference< XPropertySet >& _xDescriptor) +ObjectType OCollection::cloneObject(const Reference< XPropertySet >& _xDescriptor) { - OSL_ASSERT(!"Need to be overloaded when used!"); - throw SQLException(); + return _xDescriptor.is() ? createObject(getNameForObject(_xDescriptor)) : sdbcx::ObjectType(); } // ----------------------------------------------------------------------------- void OCollection::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
