Tag: cws_src680_dba22b
User: fs      
Date: 2006/12/18 02:38:35

Modified:
   dba/connectivity/source/commontools/dbtools2.cxx

Log:
 RESYNC: (1.19-1.20); FILE MERGED

File Changes:

Directory: /dba/connectivity/source/commontools/
================================================

File [changed]: dbtools2.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/commontools/dbtools2.cxx?r1=1.19.44.1&r2=1.19.44.2
Delta lines:  +79 -33
---------------------
--- dbtools2.cxx        5 Dec 2006 09:31:18 -0000       1.19.44.1
+++ dbtools2.cxx        18 Dec 2006 10:38:32 -0000      1.19.44.2
@@ -41,8 +41,16 @@
 #endif
 #include "connectivity/dbconversion.hxx"
 #ifndef _DBHELPER_DBCHARSET_HXX_
-#include <connectivity/dbcharset.hxx>
+#include "connectivity/dbcharset.hxx"
 #endif
+
+#ifndef CONNECTIVITY_SHAREDRESOURCES_HXX
+#include "resource/sharedresources.hxx"
+#endif
+#ifndef CONNECTIVITY_RESOURCE_COMMON_HRC
+#include "resource/common_res.hrc"
+#endif
+
 #ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
 #include <com/sun/star/sdbc/XConnection.hpp>
 #endif
@@ -843,9 +851,26 @@
        }
     return bIsEmbedded;
 }
-    // 
-----------------------------------------------------------------------------
-sal_Int32 DBTypeConversion::convertUnicodeString( const ::rtl::OUString& 
_rSource, ::rtl::OString& _rDest, rtl_TextEncoding _eEncoding ) 
SAL_THROW((com::sun::star::sdbc::SQLException))
+// 
-----------------------------------------------------------------------------
+namespace
+{
+    ::rtl::OUString lcl_getEncodingName( rtl_TextEncoding _eEncoding )
     {
+        ::rtl::OUString sEncodingName;
+
+        OCharsetMap aCharsets;
+        OCharsetMap::CharsetIterator aEncodingPos = aCharsets.find( _eEncoding 
);
+        OSL_ENSURE( aEncodingPos != aCharsets.end(), "lcl_getEncodingName: 
*which* encoding?" );
+        if ( aEncodingPos != aCharsets.end() )
+            sEncodingName = (*aEncodingPos).getIanaName();
+
+        return sEncodingName;
+    }
+}
+
+// 
-----------------------------------------------------------------------------
+sal_Int32 DBTypeConversion::convertUnicodeString( const ::rtl::OUString& 
_rSource, ::rtl::OString& _rDest, rtl_TextEncoding _eEncoding ) 
SAL_THROW((com::sun::star::sdbc::SQLException))
+{
         if ( !rtl_convertUStringToString( &_rDest.pData, _rSource.getStr(), 
_rSource.getLength(),
                 _eEncoding,
                 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR |
@@ -854,19 +879,14 @@
                 RTL_UNICODETOTEXT_FLAGS_NOCOMPOSITE )
            )
         {
-            ::rtl::OUString sExplanation( RTL_CONSTASCII_USTRINGPARAM( "The 
string '" ) );
-            sExplanation += _rSource;
-            sExplanation += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "' 
cannot be converted using the encoding '" ) );
-
-            OCharsetMap aCharsets;
-            OCharsetMap::CharsetIterator aEncodingPos = aCharsets.find( 
_eEncoding );
-            OSL_ENSURE( aEncodingPos != aCharsets.end(), 
"ODbaseTable::UpdateBuffer: *which* encoding?" );
-            if ( aEncodingPos != aCharsets.end() )
-                sExplanation += (*aEncodingPos).getIanaName();
-            sExplanation += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "'." 
) );
+        SharedResources aResources;
+        ::rtl::OUString sMessage = 
aResources.getResourceStringWithSubstitution( STR_CANNOT_CONVERT_STRING,
+            "$string$", _rSource,
+            "$charset$", lcl_getEncodingName( _eEncoding )
+        );
 
             throw SQLException(
-                sExplanation,
+            sMessage,
                 NULL,
                 ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "22018" ) ),
                 22018,
@@ -875,7 +895,33 @@
         }
 
         return _rDest.getLength();
+}
+
+// 
-----------------------------------------------------------------------------
+sal_Int32 DBTypeConversion::convertUnicodeStringToLength( const 
::rtl::OUString& _rSource, ::rtl::OString&  _rDest,
+   sal_Int32 _nMaxLen, rtl_TextEncoding _eEncoding ) SAL_THROW((SQLException))
+{
+    sal_Int32 nLen = convertUnicodeString( _rSource, _rDest, _eEncoding );
+    if ( nLen > _nMaxLen )
+    {
+        SharedResources aResources;
+        ::rtl::OUString sMessage = 
aResources.getResourceStringWithSubstitution( STR_STRING_LENGTH_EXCEEDED,
+            "$string$", _rSource,
+            "$maxlen$", ::rtl::OUString::valueOf( _nMaxLen ),
+            "$charset$", lcl_getEncodingName( _eEncoding )
+        );
+
+        throw SQLException(
+            sMessage,
+            NULL,
+            ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "22001" ) ),
+            22001,
+            Any()
+        );
     }
+
+   return nLen;
+}
 //.........................................................................
 }      // namespace dbtools
 //.........................................................................




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

Reply via email to