User: hr      
Date: 2007-09-26 14:50:58+0000
Modified:
   dba/dbaccess/source/ui/misc/DExport.cxx

Log:
 INTEGRATION: CWS dba24a (1.37.54); FILE MERGED
 2007/08/30 08:19:53 oj 1.37.54.3: #i78257# check vector size of source vec
 2007/08/03 08:12:50 oj 1.37.54.2: #i73710# be mor error prone when update row
 2007/07/23 11:59:03 fs 1.37.54.1: when pasting tables, use a meaningful 
default in the wizard, as indicated by the current selection
 Issue number:  #i18907#
 Submitted by:  [EMAIL PROTECTED]
 Reviewed by:   [EMAIL PROTECTED]

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.37&r2=1.38
Delta lines:  +110 -80
----------------------
--- DExport.cxx 2007-01-15 14:35:51+0000        1.37
+++ DExport.cxx 2007-09-26 14:50:55+0000        1.38
@@ -291,9 +291,11 @@
                        }
 
                        sal_Int32 nPos = 1;
+            OSL_ENSURE((nPos) < static_cast<sal_Int32>(aTypes.size()),"aTypes: 
Illegal index for vector");
                        aValue.fill(nPos,aTypes[nPos],xRow);
                        ::rtl::OUString sTypeName = aValue;
                        ++nPos;
+            OSL_ENSURE((nPos) < static_cast<sal_Int32>(aTypes.size()),"aTypes: 
Illegal index for vector");
                        aValue.fill(nPos,aTypes[nPos],xRow);
                        sal_Int32 nType = aValue;
                        ++nPos;
@@ -305,6 +307,7 @@
                                m_pTypeInfo->aTypeName          = sTypeName;
                                m_pTypeInfo->nType                      = nType;
                                
+                OSL_ENSURE((nPos) < 
static_cast<sal_Int32>(aTypes.size()),"aTypes: Illegal index for vector");
                                aValue.fill(nPos,aTypes[nPos],xRow);
                                m_pTypeInfo->nPrecision         = aValue;
                                ++nPos;
@@ -380,13 +383,15 @@
         if(pField)
         {
             sal_Int32 nNewPos = m_bIsAutoIncrement ? m_nColumnPos+1 : 
m_nColumnPos;
-            OSL_ENSURE((nNewPos) < 
static_cast<sal_Int32>(m_vColumns.size()),"Illegal index for vector");
+            OSL_ENSURE((nNewPos) < 
static_cast<sal_Int32>(m_vColumns.size()),"m_vColumns: Illegal index for 
vector");
             
+            if ( (nNewPos) < static_cast<sal_Int32>(m_vColumns.size() ) )
+            {
             sal_Int32 nPos = m_vColumns[nNewPos].first;
             if ( nPos != COLUMN_POSITION_NOT_FOUND )
             {
-//                  if(m_nDefToken != LANGUAGE_DONTKNOW) // falls Sprache 
anders als Systemsprache
-//                      m_pNF->ChangeIntl((LanguageType)m_nDefToken);
+    //                  if(m_nDefToken != LANGUAGE_DONTKNOW) // falls Sprache 
anders als Systemsprache
+    //                      m_pNF->ChangeIntl((LanguageType)m_nDefToken);
 
                 if(!m_sTextToken.Len() && 
m_xResultSetMetaData->isNullable(nPos))
                     m_pUpdateHelper->updateNull(nPos,pField->GetType());
@@ -395,7 +400,7 @@
                     sal_Int32 nNumberFormat = 0;
                     double fOutNumber = 0.0;
                     OSL_ENSURE((nNewPos) < 
static_cast<sal_Int32>(m_vColumnTypes.size()),"Illegal index for vector");
-                    if (m_vColumnTypes[nNewPos] != DataType::VARCHAR)
+                        if (m_vColumnTypes[nNewPos] != DataType::VARCHAR && 
m_vColumnTypes[nNewPos] != DataType::CHAR && m_vColumnTypes[nNewPos] != 
DataType::LONGVARCHAR )
                     {
                         Reference< XNumberFormatsSupplier >  xSupplier = 
m_xFormatter->getNumberFormatsSupplier();
                         Reference<XPropertySet> xNumberFormatSettings = 
xSupplier->getNumberFormatSettings();
@@ -403,6 +408,7 @@
                         
xNumberFormatSettings->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NullDate")))
 >>= aNullDate;
 
                         ensureFormatter();
+                            bool bNumberFormatError = false;
                         if ( m_pFormatter && m_sNumToken.Len() )
                         {
                             LanguageType eNumLang;
@@ -437,9 +443,12 @@
                             }
                             catch(Exception&)
                             {
-                                OSL_ENSURE(0,"Could not convert to number!");
+                                    bNumberFormatError = true;
+                                    
m_pUpdateHelper->updateString(nPos,m_sTextToken);
                             }
                         }
+                            if ( !bNumberFormatError )
+                            {
                         try
                         {
                             Reference< XNumberFormats >         xFormats = 
xSupplier->getNumberFormats();
@@ -461,12 +470,14 @@
                         {
                             m_pUpdateHelper->updateString(nPos,m_sTextToken);
                         }
+                            }
 
                     }
                     else
                         m_pUpdateHelper->updateString(nPos,m_sTextToken);
                 }
             }
+            }
             eraseTokens();
         }
     }
@@ -621,6 +632,8 @@
                {
                        sal_Int32 nDataType;
                        sal_Int32 nLength(0),nScale(0);
+            OSL_ENSURE((i) < 
static_cast<sal_Int32>(m_vFormatKey.size()),"m_vFormatKey: Illegal index for 
vector");
+            OSL_ENSURE((i) < 
static_cast<sal_Int32>(m_vColumnSize.size()),"m_vColumnSize: Illegal index for 
vector");
             Reference<XPropertySet> xProp = 
xFormats->getByKey(m_vFormatKey[i]);
                    sal_Int16 nType = 0;
                    xProp->getPropertyValue(PROPERTY_TYPE) >>= nType;
@@ -683,13 +696,11 @@
                aAlias = 
::dbtools::convertName2SQLName(_rColumnName,xDestMetaData->getExtraNameCharacters());
 
        if(nMaxNameLen && aAlias.getLength() > nMaxNameLen)
-               aAlias = aAlias.copy(0, ::std::min<sal_Int32>( nMaxNameLen, 
aAlias.getLength() ) );
+               aAlias = aAlias.copy(0, ::std::min<sal_Int32>( nMaxNameLen-1, 
aAlias.getLength() ) );
        
        ::rtl::OUString sName(aAlias);
        if(m_aDestColumns.find(sName) != m_aDestColumns.end())
        {
-               aAlias = aAlias.copy(0,::std::min<sal_Int32>( nMaxNameLen-1, 
aAlias.getLength() ));
-       
                sal_Int32 nPos = 0;
                sal_Int32 nCount = 2;
                while(m_aDestColumns.find(sName) != m_aDestColumns.end())
@@ -765,14 +776,25 @@
 sal_Bool ODatabaseExport::executeWizard(const ::rtl::OUString& 
_sTableName,const Any& _aTextColor,const FontDescriptor& _rFont)
 {
        DBG_CHKTHIS(ODatabaseExport,NULL);
-       OCopyTableWizard 
aWizard(NULL,_sTableName,m_aDestColumns,m_vDestVector,m_xConnection,m_xFormatter,m_xFactory);
        
+       //--------dyf add 20070601
+       //if there is a table was selected,then create with 
m_sDefaultTableName,otherwise,with _sTableName
+       OCopyTableWizard 
aWizard(NULL,_sTableName,m_aDestColumns,m_vDestVector,m_xConnection,m_xFormatter,m_xFactory);
+       if (m_sDefaultTableName.getLength() != 0 )
+       {
+               aWizard.ResetsName(m_sDefaultTableName);
+               aWizard.setCreateStyle(OCopyTableWizard::WIZARD_APPEND_DATA);
+       }
        sal_Bool bError = sal_False;
        try
        {
                aWizard.fillTypeInfo();
 
-               OCopyTable*                     pPage1 = new 
OCopyTable(&aWizard,COPY, sal_False,OCopyTableWizard::WIZARD_DEF_DATA);
+               OCopyTable*                     pPage1;
+               pPage1 = new OCopyTable(&aWizard,COPY, sal_False);
+               pPage1->setCreateStyleAction();
+       //---------dyf add end
+
                OWizNameMatching*       pPage2 = new OWizNameMatching(&aWizard);
                OWizColumnSelect*       pPage3 = new 
OWizColumnSelect(&aWizard);                
                OWizTypeSelect*         pPage4 = createPage(&aWizard);
@@ -861,13 +883,20 @@
 {
     if ( m_sTextToken.Len() )
        {
-               sal_Int32 nColPos = m_vColumns[m_bIsAutoIncrement ? 
m_nColumnPos+1 : m_nColumnPos].first;
+        sal_Int32 nNewPos = m_bIsAutoIncrement ? m_nColumnPos+1 : m_nColumnPos;
+        OSL_ENSURE((nNewPos) < 
static_cast<sal_Int32>(m_vColumns.size()),"Illegal index for vector");
+        if ( (nNewPos) < static_cast<sal_Int32>(m_vColumns.size()) )
+        {
+                   sal_Int32 nColPos = m_vColumns[nNewPos].first;
                if( nColPos != sal::static_int_cast< long 
>(CONTAINER_ENTRY_NOTFOUND))
                {
             --nColPos;
+                OSL_ENSURE((nColPos) < 
static_cast<sal_Int32>(m_vFormatKey.size()),"m_vFormatKey: Illegal index for 
vector");
+                OSL_ENSURE((nColPos) < 
static_cast<sal_Int32>(m_vColumnSize.size()),"m_vColumnSize: Illegal index for 
vector");
                        m_vFormatKey[nColPos] = 
CheckString(m_sTextToken,m_vFormatKey[nColPos]);
                        m_vColumnSize[nColPos] = 
::std::max<sal_Int32>((sal_Int32)m_vColumnSize[nColPos],(sal_Int32)m_sTextToken.Len());
                }
+        }
                eraseTokens();
        }
 }
@@ -926,6 +955,7 @@
                        
::std::compose1(::std::bind2nd(::std::equal_to<sal_Int32>(),i+1),::std::select2nd<ODatabaseExport::TPositions::value_type>()));
                if ( _rvColumns.end() != aFind && aFind->second != 
sal::static_int_cast< long >(CONTAINER_ENTRY_NOTFOUND) && aFind->first != 
sal::static_int_cast< long >(CONTAINER_ENTRY_NOTFOUND) )
                {
+            OSL_ENSURE((aFind->first) < 
static_cast<sal_Int32>(aInsertList.size()),"aInsertList: Illegal index for 
vector");
                        aInsertList[aFind->first] = ::dbtools::quoteName( 
aQuote,*(pIter+i));
                }
        }




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

Reply via email to