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]

Reply via email to