Tag: cws_src680_dba24d User: fs Date: 2007-11-15 10:01:40+0000 Modified: dba/connectivity/source/commontools/dbtools.cxx
Log: #i81658# +createUniqueName taking a string sequence File Changes: Directory: /dba/connectivity/source/commontools/ ================================================ File [changed]: dbtools.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/commontools/dbtools.cxx?r1=1.68.54.1&r2=1.68.54.2 Delta lines: +29 -12 --------------------- --- dbtools.cxx 2007-11-06 09:07:50+0000 1.68.54.1 +++ dbtools.cxx 2007-11-15 10:01:37+0000 1.68.54.2 @@ -4,9 +4,9 @@ * * $RCSfile: dbtools.cxx,v $ * - * $Revision: 1.68.54.1 $ + * $Revision: 1.68.54.2 $ * - * last change: $Author: oj $ $Date: 2007/11/06 09:07:50 $ + * last change: $Author: fs $ $Date: 2007/11/15 10:01:37 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -1529,25 +1529,42 @@ } return nSearchFlag; } + // ----------------------------------------------------------------------------- -::rtl::OUString createUniqueName(const Reference<XNameAccess>& _rxContainer,const ::rtl::OUString& _rBaseName,sal_Bool _bStartWithNumber) +::rtl::OUString createUniqueName( const Sequence< ::rtl::OUString >& _rNames, const ::rtl::OUString& _rBaseName, sal_Bool _bStartWithNumber ) { - ::rtl::OUString sName(_rBaseName); + ::std::set< ::rtl::OUString > aUsedNames; + ::std::copy( + _rNames.getConstArray(), + _rNames.getConstArray() + _rNames.getLength(), + ::std::insert_iterator< ::std::set< ::rtl::OUString > >( aUsedNames, aUsedNames.end() ) + ); + + ::rtl::OUString sName( _rBaseName ); sal_Int32 nPos = 1; if ( _bStartWithNumber ) - sName += ::rtl::OUString::valueOf(nPos); + sName += ::rtl::OUString::valueOf( nPos ); - OSL_ENSURE( _rxContainer.is() ,"No valid container!"); - if ( _rxContainer.is() ) - { - while(_rxContainer->hasByName(sName)) + while ( aUsedNames.find( sName ) != aUsedNames.end() ) { sName = _rBaseName; - sName += ::rtl::OUString::valueOf(++nPos); - } + sName += ::rtl::OUString::valueOf( ++nPos ); } return sName; } + +// ----------------------------------------------------------------------------- +::rtl::OUString createUniqueName(const Reference<XNameAccess>& _rxContainer,const ::rtl::OUString& _rBaseName,sal_Bool _bStartWithNumber) +{ + Sequence< ::rtl::OUString > aElementNames; + + OSL_ENSURE( _rxContainer.is(), "createUniqueName: invalid container!" ); + if ( _rxContainer.is() ) + aElementNames = _rxContainer->getElementNames(); + + return createUniqueName( aElementNames, _rBaseName, _bStartWithNumber ); +} + // ----------------------------------------------------------------------------- void showError(const SQLExceptionInfo& _rInfo, const Reference< XWindow>& _xParent, --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
