User: kz      
Date: 2008-05-05 15:02:06+0000
Modified:
   dba/connectivity/source/commontools/dbtools.cxx

Log:
 INTEGRATION: CWS dba30b (1.71.16); FILE MERGED
 2008/04/15 21:48:48 fs 1.71.16.4: RESYNC: (1.72-1.73); FILE MERGED
 2008/03/12 21:20:27 fs 1.71.16.3: #i10000#
 2008/03/12 13:32:22 fs 1.71.16.2: RESYNC: (1.71-1.72); FILE MERGED
 2008/03/11 13:45:37 fs 1.71.16.1: #i85214# qualifiedNameComponents: handle 
*all* EComposeRule values

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.73&r2=1.74
Delta lines:  +82 -54
---------------------
--- dbtools.cxx 2008-04-10 08:01:14+0000        1.73
+++ dbtools.cxx 2008-05-05 15:01:50+0000        1.74
@@ -768,16 +768,29 @@
 }
 
 //--------------------------------------------------------------------------
-static ::rtl::OUString impl_doComposeTableName( const Reference< 
XDatabaseMetaData >& _rxMetaData,
-                const ::rtl::OUString& _rCatalog, const ::rtl::OUString& 
_rSchema, const ::rtl::OUString& _rName,
-                sal_Bool _bQuote, EComposeRule _eComposeRule )
+namespace
 {
-    ::rtl::OUString sComposedName;
+    struct NameComponentSupport
+    {
+        const bool  bCatalogs;
+        const bool  bSchemas;
 
-       OSL_ENSURE(_rxMetaData.is(), "impl_doComposeTableName : invalid meta 
data !");
-    if ( !_rxMetaData.is() )
-        return sComposedName;
-       OSL_ENSURE(_rName.getLength(), "impl_doComposeTableName : at least the 
name should be non-empty !");
+        NameComponentSupport( )
+            :bCatalogs( true )
+            ,bSchemas( true )
+        {
+        }
+
+        NameComponentSupport( const bool _bCatalogs, const bool _bSchemas )
+            :bCatalogs( _bCatalogs )
+            ,bSchemas( _bSchemas )
+        {
+        }
+    };
+
+    NameComponentSupport lcl_getNameComponentSupport( const Reference< 
XDatabaseMetaData >& _rxMetaData, EComposeRule _eComposeRule )
+    {
+        OSL_PRECOND( _rxMetaData.is(), "lcl_getNameComponentSupport: invalid 
meta data!" );
 
     FMetaDataSupport pCatalogCall = 
&XDatabaseMetaData::supportsCatalogsInDataManipulation;
     FMetaDataSupport pSchemaCall = 
&XDatabaseMetaData::supportsSchemasInDataManipulation;
@@ -808,48 +821,62 @@
             // already properly set above
             break;
        }
+        return NameComponentSupport(
+            bIgnoreMetaData ? true : (_rxMetaData.get()->*pCatalogCall)(),
+            bIgnoreMetaData ? true : (_rxMetaData.get()->*pSchemaCall)()
+        );
+    }
+}
 
+//--------------------------------------------------------------------------
+static ::rtl::OUString impl_doComposeTableName( const Reference< 
XDatabaseMetaData >& _rxMetaData,
+                const ::rtl::OUString& _rCatalog, const ::rtl::OUString& 
_rSchema, const ::rtl::OUString& _rName,
+                sal_Bool _bQuote, EComposeRule _eComposeRule )
+{
+       OSL_ENSURE(_rxMetaData.is(), "impl_doComposeTableName : invalid meta 
data !");
+    if ( !_rxMetaData.is() )
+        return ::rtl::OUString();
+       OSL_ENSURE(_rName.getLength(), "impl_doComposeTableName : at least the 
name should be non-empty !");
 
        ::rtl::OUString sQuoteString = _rxMetaData->getIdentifierQuoteString();
-#define QUOTE(s,s2) if (_bQuote) s += quoteName(sQuoteString,s2); else s += s2
 
-       static ::rtl::OUString sSeparator = 
::rtl::OUString::createFromAscii(".");
+    NameComponentSupport aNameComps( lcl_getNameComponentSupport( _rxMetaData, 
_eComposeRule ) );
+
+    ::rtl::OUStringBuffer aComposedName;
 
        ::rtl::OUString sCatalogSep;
        sal_Bool bCatlogAtStart = sal_True;
-       if ( _rCatalog.getLength() && ( bIgnoreMetaData || 
(_rxMetaData.get()->*pCatalogCall)() ) )
+       if ( _rCatalog.getLength() && aNameComps.bCatalogs )
        {
                sCatalogSep             = _rxMetaData->getCatalogSeparator();
                bCatlogAtStart  = _rxMetaData->isCatalogAtStart();
 
                if ( bCatlogAtStart && sCatalogSep.getLength())
                {
-                       QUOTE(sComposedName,_rCatalog);
-                       sComposedName += sCatalogSep;
+            aComposedName.append( _bQuote ? quoteName( sQuoteString, _rCatalog 
) : _rCatalog );
+                       aComposedName.append( sCatalogSep );
                }
        }
 
-       if ( _rSchema.getLength() && ( bIgnoreMetaData || 
(_rxMetaData.get()->*pSchemaCall)() ) )
+       if ( _rSchema.getLength() && aNameComps.bSchemas )
        {
-               QUOTE(sComposedName,_rSchema);
-               sComposedName += sSeparator;
+        aComposedName.append( _bQuote ? quoteName( sQuoteString, _rSchema ) : 
_rSchema );
+        aComposedName.appendAscii( "." );
        }
 
-       QUOTE(sComposedName,_rName);
+    aComposedName.append( _bQuote ? quoteName( sQuoteString, _rName ) : _rName 
);
 
        if  (   _rCatalog.getLength()
         &&  !bCatlogAtStart
         &&  sCatalogSep.getLength()
-        &&  (   bIgnoreMetaData
-            ||  (_rxMetaData.get()->*pCatalogCall)()
-            )
+        &&  aNameComps.bCatalogs
         )
        {
-               sComposedName += sCatalogSep;
-               QUOTE(sComposedName,_rCatalog);
+               aComposedName.append( sCatalogSep );
+        aComposedName.append( _bQuote ? quoteName( sQuoteString, _rCatalog ) : 
_rCatalog );
        }
 
-    return sComposedName;
+    return aComposedName.makeStringAndClear();
 }
 
 
//------------------------------------------------------------------------------
@@ -866,13 +893,14 @@
 void qualifiedNameComponents(const Reference< XDatabaseMetaData >& 
_rxConnMetaData, const ::rtl::OUString& _rQualifiedName, ::rtl::OUString& 
_rCatalog, ::rtl::OUString& _rSchema, ::rtl::OUString& _rName,EComposeRule 
_eComposeRule)
 {
        OSL_ENSURE(_rxConnMetaData.is(), "QualifiedNameComponents : invalid 
meta data!");
-    OSL_ENSURE( ( _eComposeRule == eInDataManipulation ) || ( _eComposeRule == 
eComplete ), "qualifiedNameComponents: un-implemented case!" );
-    bool bComplete = ( _eComposeRule == eComplete );
+
+    NameComponentSupport aNameComps( lcl_getNameComponentSupport( 
_rxConnMetaData, _eComposeRule ) );
+
        ::rtl::OUString sSeparator = _rxConnMetaData->getCatalogSeparator();
 
        ::rtl::OUString sName(_rQualifiedName);
        // do we have catalogs ?
-       if ( bComplete || _rxConnMetaData->supportsCatalogsInDataManipulation() 
)
+       if ( aNameComps.bCatalogs )
        {
                if (_rxConnMetaData->isCatalogAtStart())
                {
@@ -896,7 +924,7 @@
                }
        }
 
-       if ( bComplete || _rxConnMetaData->supportsSchemasInDataManipulation() )
+       if ( aNameComps.bSchemas )
        {
                sal_Int32 nIndex = sName.indexOf((sal_Unicode)'.');
                //      OSL_ENSURE(-1 != nIndex, "QualifiedNameComponents : no 
schema separator!");




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

Reply via email to