Tag: cws_src680_dba30
User: fs      
Date: 06/03/21 10:37:26

Modified:
 /dba/dbaccess/source/ui/misc/
  DExport.cxx

Log:
 RESYNC: (1.26-1.28); FILE MERGED

File Changes:

Directory: /dba/dbaccess/source/ui/misc/
========================================

File [changed]: DExport.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/misc/DExport.cxx?r1=1.26.16.1&r2=1.26.16.2
Delta lines:  +110 -30
----------------------
--- DExport.cxx 2 Jan 2006 09:17:12 -0000       1.26.16.1
+++ DExport.cxx 21 Mar 2006 18:37:24 -0000      1.26.16.2
@@ -132,12 +132,21 @@
 #ifndef _DBHELPER_DBEXCEPTION_HXX_
 #include <connectivity/dbexception.hxx>
 #endif
+#ifndef _CONNECTIVITY_FILE_VALUE_HXX_
+#include <connectivity/FValue.hxx>
+#endif
 #ifndef _COM_SUN_STAR_SDBC_SQLWARNING_HPP_
 #include <com/sun/star/sdbc/SQLWarning.hpp>
 #endif
 #ifndef _COM_SUN_STAR_SDB_SQLCONTEXT_HPP_
 #include <com/sun/star/sdb/SQLContext.hpp>
 #endif
+#ifndef _DBAUI_SQLMESSAGE_HXX_
+#include "sqlmessage.hxx"
+#endif
+#ifndef _SV_MSGBOX_HXX
+#include <vcl/msgbox.hxx>
+#endif
 
 
 #define CONTAINER_ENTRY_NOTFOUND    ((ULONG)0xFFFFFFFF)
@@ -165,7 +174,9 @@
                                                                 const 
Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM,
                                                                 const 
TColumnVector* pList,
                                                                 const 
OTypeInfoMap* _pInfoMap)
-       :m_nColumnPos(0)
+       :m_pColumnList(pList)
+       ,m_pInfoMap(_pInfoMap)
+       ,m_nColumnPos(0)
        ,m_nRows(1)
        ,m_nRowCount(0)
        ,m_bError(FALSE)
@@ -205,11 +216,6 @@
        {
                SvtSysLocale aSysLocale;
                m_nLocale = aSysLocale.GetLocaleData().getLocale();
-//             Any aValue = 
ConfigManager::GetDirectConfigProperty(ConfigManager::LOCALE);
-//             m_nLocale.Language = ::comphelper::getString(aValue);
-//             String sLanguage, sCountry;
-//             ConvertLanguageToIsoNames(Window::GetSettings().GetLanguage(), 
sLanguage, sCountry);
-//             m_nLocale = Locale(sLanguage, sCountry, ::rtl::OUString());
        }
        catch(Exception&)
        {
@@ -224,6 +230,8 @@
                                                                 const 
TColumnVector* pList,
                                                                 const 
OTypeInfoMap* _pInfoMap)
        :m_xConnection(_rxConnection)
+       ,m_pColumnList(NULL)
+       ,m_pInfoMap(NULL)
        ,m_nColumnPos(0)
        ,m_nRows(1)
        ,m_nRowCount(0)
@@ -244,11 +252,6 @@
        {
                SvtSysLocale aSysLocale;
                m_nLocale = aSysLocale.GetLocaleData().getLocale();
-//             Any aValue = 
ConfigManager::GetDirectConfigProperty(ConfigManager::LOCALE);
-//             m_nLocale.Language = ::comphelper::getString(aValue);
-//             String sLanguage, sCountry;
-//             ConvertLanguageToIsoNames(Window::GetSettings().GetLanguage(), 
sLanguage, sCountry);
-//             m_nLocale = Locale(sLanguage, sCountry, ::rtl::OUString());
        }
        catch(Exception&)
        {
@@ -263,30 +266,89 @@
        Reference<XResultSet> xSet = xMeta.is() ? xMeta->getTypeInfo() : 
Reference<XResultSet>();
        if(xSet.is())
        {
+               ::connectivity::ORowSetValue aValue;
+               ::std::vector<sal_Int32> aTypes;
+               Reference<XResultSetMetaData> xResultSetMetaData = 
Reference<XResultSetMetaDataSupplier>(xSet,UNO_QUERY)->getMetaData();
                Reference<XRow> xRow(xSet,UNO_QUERY);
                while(xSet->next())
                {
-                       ::rtl::OUString sTypeName = xRow->getString (1);
-                       sal_Int16 nType = xRow->getShort(2);
+                       if ( aTypes.empty() )
+                       {
+                               sal_Int32 nCount = 
xResultSetMetaData->getColumnCount();
+                               if ( nCount < 1 )
+                                       nCount = 18;
+                               aTypes.reserve(nCount+1);
+                               aTypes.push_back(-1);
+                               for (sal_Int32 j = 1; j <= nCount ; ++j)
+                                       
aTypes.push_back(xResultSetMetaData->getColumnType(j));
+                       }
+
+                       sal_Int32 nPos = 1;
+                       aValue.fill(nPos,aTypes[nPos],xRow);
+                       ::rtl::OUString sTypeName = aValue;
+                       ++nPos;
+                       aValue.fill(nPos,aTypes[nPos],xRow);
+                       sal_Int32 nType = aValue;
+                       ++nPos;
+                       
                        if( nType == DataType::VARCHAR)
                        {
                                m_pTypeInfo                                     
= TOTypeInfoSP(new OTypeInfo());
+                               
                                m_pTypeInfo->aTypeName          = sTypeName;
                                m_pTypeInfo->nType                      = nType;
-                               m_pTypeInfo->nPrecision         = xRow->getInt 
(3);
-                               m_pTypeInfo->aLiteralPrefix     = 
xRow->getString (4);
-                               m_pTypeInfo->aLiteralSuffix     = 
xRow->getString (5);
-                               m_pTypeInfo->aCreateParams      = 
xRow->getString (6);
-                               m_pTypeInfo->bNullable          = xRow->getInt 
(7) == ColumnValue::NULLABLE;
-                               m_pTypeInfo->bCaseSensitive     = 
xRow->getBoolean (8);
-                               m_pTypeInfo->nSearchType        = 
xRow->getShort (9);
-                               m_pTypeInfo->bUnsigned          = 
xRow->getBoolean (10);
-                               m_pTypeInfo->bCurrency          = 
xRow->getBoolean (11);
-                               m_pTypeInfo->bAutoIncrement     = 
xRow->getBoolean (12);
-                               m_pTypeInfo->aLocalTypeName     = 
xRow->getString (13);
-                               m_pTypeInfo->nMinimumScale      = 
xRow->getShort (14);
-                               m_pTypeInfo->nMaximumScale      = 
xRow->getShort (15);
-                               m_pTypeInfo->nNumPrecRadix      = xRow->getInt 
(18);
+                               
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->nPrecision         = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->aLiteralPrefix     = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->aLiteralSuffix     = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->aCreateParams      = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->bNullable          = 
(sal_Int32)aValue == ColumnValue::NULLABLE;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->bCaseSensitive     = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->nSearchType                = 
aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->bUnsigned          = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->bCurrency          = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->bAutoIncrement     = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->aLocalTypeName     = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->nMinimumScale      = aValue;
+                               ++nPos;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->nMaximumScale      = aValue;
+                               nPos = 18;
+                               aValue.fill(nPos,aTypes[nPos],xRow);
+                               m_pTypeInfo->nNumPrecRadix      = aValue;
+
+                               // check if values are less than zero like it 
happens in a oracle jdbc driver
+                               if( m_pTypeInfo->nPrecision < 0)
+                                       m_pTypeInfo->nPrecision = 0;
+                               if( m_pTypeInfo->nMinimumScale < 0)
+                                       m_pTypeInfo->nMinimumScale = 0;
+                               if( m_pTypeInfo->nMaximumScale < 0)
+                                       m_pTypeInfo->nMaximumScale = 0;
+                               if( m_pTypeInfo->nNumPrecRadix < 0)
+                                       m_pTypeInfo->nNumPrecRadix = 10;
                                break;
                        }
                }
@@ -399,6 +461,7 @@
 
                {
                        OSL_ENSURE((m_nColumnPos) < 
static_cast<sal_Int32>(m_vColumns.size()),"Illegal index for vector");
+                       OSL_ENSURE(m_vColumns[m_nColumnPos].first < 
static_cast<sal_Int32>(m_vFormatKey.size()),"Illegal index for vector");
                        m_vFormatKey[m_vColumns[m_nColumnPos].first] = nFormat; 
// wird sp"ater f"ur die Column gebraucht
                        switch(nType)
                        {
@@ -722,6 +785,23 @@
        }
 
        return bError;
+}
+//---------------------------------------------------------------------------------
+void ODatabaseExport::showErrorDialog(const 
::com::sun::star::sdbc::SQLException& e)
+{
+       if(!m_bDontAskAgain)
+       {
+               String aMsg(e.Message);
+               aMsg += '\n';
+               aMsg += String(ModuleRes(STR_QRY_CONTINUE));
+               OSQLMessageBox aBox(NULL, String(ModuleRes(STR_STAT_WARNING)),
+                       aMsg, WB_YES_NO | WB_DEF_NO, OSQLMessageBox::Warning);
+
+               if (aBox.Execute() == RET_YES)
+                       m_bDontAskAgain = TRUE;
+               else
+                       m_bError = TRUE;
+       } // if(!m_bDontAskAgain)
 }
 // 
-----------------------------------------------------------------------------
 




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

Reply via email to