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]
