Tag: cws_src680_oj17
User: oj      
Date: 06/03/10 00:56:29

Modified:
 /dba/connectivity/source/drivers/calc/
  CTable.cxx
 /dba/connectivity/source/drivers/flat/
  ETable.cxx

Log:
 #131099# check row length

File Changes:

Directory: /dba/connectivity/source/drivers/calc/
=================================================

File [changed]: CTable.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/calc/CTable.cxx?r1=1.24&r2=1.24.78.1
Delta lines:  +57 -81
---------------------
--- CTable.cxx  8 Sep 2005 05:35:44 -0000       1.24
+++ CTable.cxx  10 Mar 2006 08:56:26 -0000      1.24.78.1
@@ -4,9 +4,9 @@
  *
  *  $RCSfile: CTable.cxx,v $
  *
- *  $Revision: 1.24 $
+ *  $Revision: 1.24.78.1 $
  *
- *  last change: $Author: rt $ $Date: 2005/09/08 05:35:44 $
+ *  last change: $Author: oj $ $Date: 2006/03/10 08:56:26 $
  *
  *  The Contents of this file are made available subject to
  *  the terms of GNU Lesser General Public License Version 2.1.
@@ -258,9 +258,7 @@
                {
                        CellRangeAddress aTotalRange = xAddr->getRangeAddress();
                        sal_Int32 nLastRow = aTotalRange.EndRow;
-                       Reference<XCellRange> xRange =
-                                       xSheet->getCellRangeByPosition( 
nDocColumn, nDocRow, nDocColumn, nLastRow );
-                       Reference<XCellRangesQuery> xQuery( xRange, UNO_QUERY );
+                       Reference<XCellRangesQuery> xQuery( 
xSheet->getCellRangeByPosition( nDocColumn, nDocRow, nDocColumn, nLastRow ), 
UNO_QUERY );
                        if (xQuery.is())
                        {
                                // queryIntersection to get a ranges object
@@ -274,8 +272,7 @@
                                                if ( xEnum.is() && 
xEnum->hasMoreElements() )
                                                {
                                                        // get first non-empty 
cell from enumeration
-                                                       Any aCellAny = 
xEnum->nextElement();
-                                                       aCellAny >>= xCell;
+                            xCell.set(xEnum->nextElement(),UNO_QUERY);
                                                }
                                                // otherwise, keep empty cell
                                        }
@@ -296,8 +293,7 @@
 
        if ( bHasHeaders )
        {
-               Reference<XCell> xHeaderCell = xSheet->getCellByPosition( 
nDocColumn, nStartRow );
-               Reference<XText> xHeaderText( xHeaderCell, UNO_QUERY );
+               Reference<XText> xHeaderText( xSheet->getCellByPosition( 
nDocColumn, nStartRow ), UNO_QUERY );
                if ( xHeaderText.is() )
                        rName = xHeaderText->getString();
        }
@@ -392,10 +388,7 @@
                                        // no difference between empty cell and 
empty string in spreadsheet
                                        Reference<XText> xText( xCell, 
UNO_QUERY );
                                        if ( xText.is() )
-                                       {
-                                               ::rtl::OUString sVal = 
xText->getString();
-                                               rValue = sVal;
-                                       }
+                                               rValue = xText->getString();
                                }
                                break;
                        case DataType::DECIMAL:
@@ -609,8 +602,8 @@
                Reference<XSpreadsheets> xSheets = xDoc->getSheets();
                if ( xSheets.is() && xSheets->hasByName( _Name ) )
                {
-                       Any aAny = xSheets->getByName( _Name );
-                       if ( aAny >>= m_xSheet )
+            m_xSheet.set(xSheets->getByName( _Name ),UNO_QUERY);
+                       if ( m_xSheet.is() )
                        {
                                lcl_GetDataArea( m_xSheet, m_nDataCols, 
m_nDataRows );
                                m_bHasHeaders = sal_True;
@@ -622,16 +615,11 @@
                        Reference<XPropertySet> xDocProp( xDoc, UNO_QUERY );
                        if ( xDocProp.is() )
                        {
-                               Any aRangesAny = xDocProp->getPropertyValue( 
::rtl::OUString::createFromAscii("DatabaseRanges") );
-                               Reference<XDatabaseRanges> xRanges;
-                               if ( aRangesAny >>= xRanges )
-                               {
+                Reference<XDatabaseRanges> xRanges(xDocProp->getPropertyValue( 
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DatabaseRanges")) ),UNO_QUERY);
+                               
                                        if ( xRanges.is() && 
xRanges->hasByName( _Name ) )
                                        {
-                                               Any aAny = xRanges->getByName( 
_Name );
-                                               Reference<XDatabaseRange> 
xDBRange;
-                                               if ( aAny >>= xDBRange )
-                                               {
+                    Reference<XDatabaseRange> xDBRange(xRanges->getByName( 
_Name ),UNO_QUERY);
                                                        
Reference<XCellRangeReferrer> xRefer( xDBRange, UNO_QUERY );
                                                        if ( xRefer.is() )
                                                        {
@@ -639,18 +627,12 @@
                                                                //      Get 
flag from FilterDescriptor
 
                                                                sal_Bool 
bRangeHeader = sal_True;
-                                                               
Reference<XSheetFilterDescriptor> xFilter = xDBRange->getFilterDescriptor();
-                                                               
Reference<XPropertySet> xFiltProp( xFilter, UNO_QUERY );
+                                               Reference<XPropertySet> 
xFiltProp( xDBRange->getFilterDescriptor(), UNO_QUERY );
                                                                if ( 
xFiltProp.is() )
-                                                               {
-                                                                       Any 
aHdrAny = xFiltProp->getPropertyValue(
-                                                                               
        ::rtl::OUString::createFromAscii("ContainsHeader") );
-                                                                       aHdrAny 
>>= bRangeHeader;
-                                                               }
+                            
xFiltProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ContainsHeader")))
 >>= bRangeHeader;
 
-                                                               
Reference<XCellRange> xCellRange = xRefer->getReferredCells();
-                                                               
Reference<XSheetCellRange> xSheetRange( xCellRange, UNO_QUERY );
-                                                               
Reference<XCellRangeAddressable> xAddr( xCellRange, UNO_QUERY );
+                                               Reference<XSheetCellRange> 
xSheetRange( xRefer->getReferredCells(), UNO_QUERY );
+                                               
Reference<XCellRangeAddressable> xAddr( xSheetRange, UNO_QUERY );
                                                                if ( 
xSheetRange.is() && xAddr.is() )
                                                                {
                                                                        
m_xSheet = xSheetRange->getSpreadsheet();
@@ -658,15 +640,12 @@
                                                                        
m_nStartCol = aRangeAddr.StartColumn;
                                                                        
m_nStartRow = aRangeAddr.StartRow;
                                                                        
m_nDataCols = aRangeAddr.EndColumn - m_nStartCol + 1;
-                                                                       if ( 
bRangeHeader )
-                                                                       {
                                                                                
//      m_nDataRows is excluding header row
                                                                                
m_nDataRows = aRangeAddr.EndRow - m_nStartRow;
-                                                                       }
-                                                                       else
+                                                       if ( !bRangeHeader )
                                                                        {
                                                                                
//      m_nDataRows counts the whole range
-                                                                               
m_nDataRows = aRangeAddr.EndRow - m_nStartRow + 1;
+                                                               m_nDataRows += 
1;
                                                                        }
 
                                                                        
m_bHasHeaders = bRangeHeader;
@@ -675,8 +654,6 @@
                                                }                               
                
                                        }
                                }
-                       }
-               }
 
                Reference<XNumberFormatsSupplier> xSupp( xDoc, UNO_QUERY );
                if (xSupp.is())
@@ -685,9 +662,8 @@
                Reference<XPropertySet> xProp( xDoc, UNO_QUERY );
                if (xProp.is())
                {
-                       Any aDateAny = xProp->getPropertyValue( 
::rtl::OUString::createFromAscii("NullDate") );
                        ::com::sun::star::util::Date aDateStruct;
-                       if ( aDateAny >>= aDateStruct )
+            if ( xProp->getPropertyValue( 
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NullDate")) ) >>= aDateStruct )
                                m_aNullDate = ::Date( aDateStruct.Day, 
aDateStruct.Month, aDateStruct.Year );
                }
        }
@@ -705,7 +681,8 @@
 
        TStringVector aVector;
 
-       for(OSQLColumns::const_iterator aIter = m_aColumns->begin();aIter != 
m_aColumns->end();++aIter)
+    OSQLColumns::const_iterator aEnd = m_aColumns->end();
+       for(OSQLColumns::const_iterator aIter = m_aColumns->begin();aIter != 
aEnd;++aIter)
                aVector.push_back(Reference< 
XNamed>(*aIter,UNO_QUERY)->getName());
 
        if(m_pColumns)
@@ -883,22 +860,21 @@
        // fields
 
        OSQLColumns::const_iterator aIter = _rCols.begin();
-       for (sal_Int32 i = 1; aIter != _rCols.end();++aIter, i++)
+    OSQLColumns::const_iterator aEnd = _rCols.end();
+       for (sal_Int32 i = 1; aIter != aEnd && i < _rRow->size();++aIter, i++)
+       {
+        if ( (*_rRow)[i]->isBound() )
        {
-               Reference< XPropertySet> xColumn = *aIter;
-
-//             ::rtl::OUString aName;
-//             
xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))
 >>= aName;
-
                sal_Int32 nType;
-               if(_bUseTableDefs)
+                   if ( _bUseTableDefs )
                        nType = m_aTypes[i-1];
                else
-                       
xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))
 >>= nType;
+                           
(*aIter)->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))
 >>= nType;
+
 
-               if ((*_rRow)[i]->isBound())
                        lcl_SetValue( (*_rRow)[i]->get(), m_xSheet, 
m_nStartCol, m_nStartRow, m_bHasHeaders, 
                                                        m_aNullDate, 
m_nFilePos, i, nType );
+        }
        }
        return sal_True;
 }

Directory: /dba/connectivity/source/drivers/flat/
=================================================

File [changed]: ETable.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/flat/ETable.cxx?r1=1.51&r2=1.51.46.1
Delta lines:  +14 -13
---------------------
--- ETable.cxx  21 Dec 2005 13:16:52 -0000      1.51
+++ ETable.cxx  10 Mar 2006 08:56:27 -0000      1.51.46.1
@@ -4,9 +4,9 @@
  *
  *  $RCSfile: ETable.cxx,v $
  *
- *  $Revision: 1.51 $
+ *  $Revision: 1.51.46.1 $
  *
- *  last change: $Author: obo $ $Date: 2005/12/21 13:16:52 $
+ *  last change: $Author: oj $ $Date: 2006/03/10 08:56:27 $
  *
  *  The Contents of this file are made available subject to
  *  the terms of GNU Lesser General Public License Version 2.1.
@@ -566,12 +566,13 @@
        xub_StrLen nStartPos = 0;
        String aStr;
        OSQLColumns::const_iterator aIter = _rCols.begin();
-       for (sal_Int32 i = 0; aIter != _rCols.end();++aIter, ++i)
+    OSQLColumns::const_iterator aEnd = _rCols.end();
+       for (sal_Int32 i = 1; aIter != aEnd && i < _rRow->size();++aIter, i++)
        {
                
m_aCurrentLine.GetTokenSpecial(aStr,nStartPos,pConnection->getFieldDelimiter(),pConnection->getStringDelimiter());
 
                if (aStr.Len() == 0)
-                       (*_rRow)[i+1]->setNull();
+                       (*_rRow)[i]->setNull();
                else
                {
                        // Laengen je nach Datentyp:
@@ -605,18 +606,18 @@
                                                switch(nType)
                                                {
                                                        case DataType::DATE:
-                                                               *(*_rRow)[i+1] 
= 
::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDate(nRes,aDate));
+                                                               *(*_rRow)[i] = 
::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDate(nRes,aDate));
                                                                break;
                                                        case 
DataType::TIMESTAMP:
-                                                               *(*_rRow)[i+1] 
= 
::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDateTime(nRes,aDate));
+                                                               *(*_rRow)[i] = 
::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDateTime(nRes,aDate));
                                                                break;
                                                        default:
-                                                               *(*_rRow)[i+1] 
= 
::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toTime(nRes));
+                                                               *(*_rRow)[i] = 
::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toTime(nRes));
                                                }
                                        }
                                        catch(Exception&)
                                        {
-                                               (*_rRow)[i+1]->setNull();
+                                               (*_rRow)[i]->setNull();
                                        }
                                }       break;
                                case DataType::DOUBLE:
@@ -650,15 +651,15 @@
 
                                        // #99178# OJ
                                        if ( DataType::DECIMAL == nType || 
DataType::NUMERIC == nType )
-                                               *(*_rRow)[i+1] = 
ORowSetValue(String::CreateFromDouble(nVal));
+                                               *(*_rRow)[i] = 
ORowSetValue(String::CreateFromDouble(nVal));
                                        else
-                                               *(*_rRow)[i+1] = nVal;
+                                               *(*_rRow)[i] = nVal;
                                } break;
 
                                default:
                                {
                                        // Wert als String in Variable der Row 
uebernehmen
-                                       *(*_rRow)[i+1] = ORowSetValue(aStr);
+                                       *(*_rRow)[i] = ORowSetValue(aStr);
                                }
                                break;
                        }




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

Reply via email to