User: ihi     
Date: 2006/10/18 06:07:20

Modified:
   dba/connectivity/source/drivers/mozab/MColumnAlias.cxx

Log:
 INTEGRATION: CWS dba205b (1.7.146); FILE MERGED
 2006/08/09 19:52:36 fs 1.7.146.1: refactored the OColumnAlias class, in 
preparation of fixing #b6248060#

File Changes:

Directory: /dba/connectivity/source/drivers/mozab/
==================================================

File [changed]: MColumnAlias.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/mozab/MColumnAlias.cxx?r1=1.8&r2=1.9
Delta lines:  +50 -62
---------------------
--- MColumnAlias.cxx    17 Sep 2006 02:55:23 -0000      1.8
+++ MColumnAlias.cxx    18 Oct 2006 13:07:18 -0000      1.9
@@ -101,30 +101,16 @@
        ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Notes"))
 };
 
//------------------------------------------------------------------------------
-OColumnAlias::OColumnAlias()
+OColumnAlias::OColumnAlias( const ::com::sun::star::uno::Reference< 
::com::sun::star::lang::XMultiServiceFactory >& _rxORB )
 {
-       // Initialise m_aAlias with the default values from sProgrammaticNames.
-       initialise();
+    for ( size_t i = 0; i < END - BEGIN; ++i )
+        m_aAliasMap[ sProgrammaticNames[i] ] = AliasDescription( 
sProgrammaticNames[i], static_cast< ProgrammaticName>( i ) );
 
-       // Initialise m_aAlias map with the default values from 
sProgrammaticNames.
-       setAliasMap();
+    initialize( _rxORB );
 }
-//------------------------------------------------------------------
-OColumnAlias::~OColumnAlias()
-{
-}
-//------------------------------------------------------------------
-void OColumnAlias::initialise()
-{
-    m_aAlias.reserve( END - FIRSTNAME + 1 );
-       for (sal_Int32 i(FIRSTNAME); i < END; ++i)
-               m_aAlias.push_back(sProgrammaticNames[i]);
 
-       return;
-}
 //------------------------------------------------------------------
-void OColumnAlias::setAlias(const ::com::sun::star::uno::Reference<
-                                       
::com::sun::star::lang::XMultiServiceFactory >& _rxORB)
+void OColumnAlias::initialize( const ::com::sun::star::uno::Reference< 
::com::sun::star::lang::XMultiServiceFactory >& _rxORB )
 {
                // open our driver settings config node
 
@@ -169,26 +155,33 @@
                                          sAssignedAlias = *pProgrammaticNames;
 
                                
//.............................................................
-                               // check the value
-                               // look up the programmatic indicated by 
pProgrammaticNames in the known programmatics
-                               const ::rtl::OUString* pProgrammatic = 
sProgrammaticNames + FIRSTNAME;
-                               const ::rtl::OUString* pProgrammaticEnd = 
sProgrammaticNames + END;
+            #if OSL_DEBUG_LEVEL > 0
+                bool bFound = false;
+            #endif
+                for (   AliasMap::iterator search = m_aAliasMap.begin();
+                        ( search != m_aAliasMap.end() );
+                        ++search
+                    )
+                {
+                    if ( search->second.sProgrammaticName == 
*pProgrammaticNames )
+                    {
+                        AliasDescription aDescription( search->second );
+
+                        // delete this old entry for this programmatic name
+                        m_aAliasMap.erase( search );
+
+                        // insert the same AliasDescription under a new name - 
its alias
+                        m_aAliasMap[ sAssignedAlias ] = aDescription;
+
+                    #if OSL_DEBUG_LEVEL > 0
+                        bFound = true;
+                    #endif
 
-                               OSL_ENSURE( (sal_Int32)m_aAlias.size() == 
pProgrammaticEnd - pProgrammatic,
-                                       "OColumnAlias::setAlias: aliases vector 
not yet initialized!" );
-
-                               // the destination where we want to remember 
the alias
-                               ::std::vector< ::rtl::OUString >::iterator 
aDestination = m_aAlias.begin();
-
-                               for ( ; pProgrammatic < pProgrammaticEnd; 
++pProgrammatic, ++aDestination )
-                               {
-                                       if ( pProgrammaticNames->equals( 
*pProgrammatic ) )
-                                       {
-                                               // add alias to the vector
-                                               *aDestination = sAssignedAlias;
                                                break;
                                        }
                                }
+
+                OSL_ENSURE( bFound, "OColumnAlias::setAlias: did not find a 
programmatic name which exists in the configuration!" );
                        }
                }
                catch( const Exception& )
@@ -196,31 +189,26 @@
                        OSL_ENSURE( sal_False, "OColumnAlias::setAlias: could 
not read my driver's configuration data!" );
                }
        }
-
-       // Initialise m_aAliasMap.
-       setAliasMap();
-
-       return;
-}
-//------------------------------------------------------------------
-const ::std::vector< ::rtl::OUString> & OColumnAlias::getAlias() const
-{
-       return m_aAlias;
-}
-//------------------------------------------------------------------
-const ::std::map< ::rtl::OUString, ::rtl::OUString> & 
OColumnAlias::getAliasMap() const
-{
-       return m_aAliasMap;
 }
+
 //------------------------------------------------------------------
-void OColumnAlias::setAliasMap()
+OColumnAlias::ProgrammaticName OColumnAlias::getProgrammaticNameIndex( const 
::rtl::OUString& _rAliasName ) const
 {
-       // Fill the map with the values of m_aAlias
-        // and the sProgrammaticNames array.
-       for (sal_Int32 i(FIRSTNAME); i < END; ++i) {
-               m_aAliasMap[m_aAlias[i]] = sProgrammaticNames[i];
+    AliasMap::const_iterator pos = m_aAliasMap.find( _rAliasName );
+    if ( pos == m_aAliasMap.end() )
+    {
+        OSL_ENSURE( false, "OColumnAlias::getProgrammaticNameIndex: unknown 
column alias!" );
+        return END;
        }
 
-       return;
+    return pos->second.eProgrammaticNameIndex;
 }
+
 //------------------------------------------------------------------
+::rtl::OUString OColumnAlias::getProgrammaticNameOrFallbackToAlias( const 
::rtl::OUString& _rAlias ) const
+{
+    AliasMap::const_iterator pos = m_aAliasMap.find( _rAlias );
+    if ( pos == m_aAliasMap.end() )
+        return _rAlias;
+    return pos->second.sProgrammaticName;
+}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to