[ooo-build-commit] .: 11 commits - dbaccess/source reportdesign/source

Jan Holesovsky kendy at kemper.freedesktop.org
Wed Sep 8 08:35:18 PDT 2010


 dbaccess/source/core/api/KeySet.cxx                         |   39 +++-
 dbaccess/source/core/api/KeySet.hxx                         |    1 
 dbaccess/source/core/dataaccess/documentdefinition.cxx      |   17 --
 dbaccess/source/core/inc/DatabaseDataProvider.hxx           |   27 +++
 dbaccess/source/core/misc/DatabaseDataProvider.cxx          |   95 +++++++++++-
 reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx |   18 ++
 6 files changed, 162 insertions(+), 35 deletions(-)

New commits:
commit da0499fda565b1f105c96b3a386670c0ad0a2c2b
Merge: 5eb7688... 2ee0e40...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Wed Sep 8 11:33:59 2010 +0200

    Merge commit 'ooo/OOO330_m7'

commit 2ee0e40b14191b4933e87cd85cee82d9ace2c800
Merge: 4022fd7... f391dff...
Author: Kurt Zenker <kz at openoffice.org>
Date:   Fri Sep 3 14:39:55 2010 +0200

    CWS-TOOLING: integrate CWS fs33a

commit f391dff52596dca6d1944f115a8e166ccea48f1f
Author: Ocke Janssen [oj] <Ocke.Janssen at oracle.com>
Date:   Thu Sep 2 10:54:17 2010 +0200

    fs33a: #i113583# use the categorie column as well to build table

diff --git a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
index 51a535a..40f211e 100644
--- a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
+++ b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
@@ -339,10 +339,16 @@ void SAL_CALL ExportDocumentHandler::initialize( const uno::Sequence< uno::Any >
 
     // set ourself as delegator
     m_xProxy->setDelegator( *this );
+    const ::rtl::OUString sCommand = m_xDatabaseDataProvider->getCommand();
+    if ( sCommand.getLength() )
+        m_aColumns = ::dbtools::getFieldNamesByCommandDescriptor(m_xDatabaseDataProvider->getActiveConnection()
+                    ,m_xDatabaseDataProvider->getCommandType()
+                    ,sCommand);
 
     uno::Reference< chart::XComplexDescriptionAccess > xDataProvider(m_xDatabaseDataProvider,uno::UNO_QUERY);
     if ( xDataProvider.is() )
     {
+        m_aColumns.realloc(1);
         uno::Sequence< uno::Sequence< ::rtl::OUString > > aColumnNames = xDataProvider->getComplexColumnDescriptions();
         for(sal_Int32 i = 0 ; i < aColumnNames.getLength();++i)
         {
@@ -354,14 +360,6 @@ void SAL_CALL ExportDocumentHandler::initialize( const uno::Sequence< uno::Any >
             }
         }
     }
-    else
-    {
-        const ::rtl::OUString sCommand = m_xDatabaseDataProvider->getCommand();
-        if ( sCommand.getLength() )
-            m_aColumns = ::dbtools::getFieldNamesByCommandDescriptor(m_xDatabaseDataProvider->getActiveConnection()
-                        ,m_xDatabaseDataProvider->getCommandType()
-                        ,sCommand);
-    }
 }
 // --------------------------------------------------------------------------------
 uno::Any SAL_CALL ExportDocumentHandler::queryInterface( const uno::Type& _rType ) throw (uno::RuntimeException)
commit 9bac46bf7bebcadfdbf4ee03a1e64650c950e036
Author: Ocke Janssen [oj] <Ocke.Janssen at oracle.com>
Date:   Wed Sep 1 13:09:46 2010 +0200

    dba33h: #i114246# use correct table name

diff --git a/dbaccess/source/core/api/KeySet.cxx b/dbaccess/source/core/api/KeySet.cxx
index eb1699f..4d76acc 100644
--- a/dbaccess/source/core/api/KeySet.cxx
+++ b/dbaccess/source/core/api/KeySet.cxx
@@ -198,7 +198,7 @@ void OKeySet::initColumns()
     m_pForeignColumnNames.reset( new SelectColumnsMetaData(bCase) );
 }
 void OKeySet::findTableColumnsMatching_throw(const Any& i_aTable
-                                                   ,const Reference<XDatabaseMetaData>& /*i_xMeta*/
+                                                   ,const Reference<XDatabaseMetaData>& i_xMeta
                                                    ,const Reference<XNameAccess>& i_xQueryColumns)
 {
     // first ask the database itself for the best columns which can be used
@@ -209,9 +209,6 @@ void OKeySet::findTableColumnsMatching_throw(const Any& i_aTable
 
     const Reference<XColumnsSupplier> xTblColSup(i_aTable,UNO_QUERY_THROW);
     const Reference<XNameAccess> xTblColumns = xTblColSup->getColumns();
-    ::dbaccess::getColumnPositions(i_xQueryColumns,aBestColumnNames,m_sUpdateTableName,(*m_pKeyColumnNames),true);
-    ::dbaccess::getColumnPositions(i_xQueryColumns,xTblColumns->getElementNames(),m_sUpdateTableName,(*m_pColumnNames),true);
-
     // locate parameter in select columns
     Reference<XParametersSupplier> xParaSup(m_xComposer,UNO_QUERY);
     Reference<XIndexAccess> xQueryParameters = xParaSup->getParameters();
@@ -222,7 +219,26 @@ void OKeySet::findTableColumnsMatching_throw(const Any& i_aTable
         Reference<XPropertySet> xPara(xQueryParameters->getByIndex(i),UNO_QUERY_THROW);
         xPara->getPropertyValue(PROPERTY_REALNAME) >>= aParameterColumns[i];
     }
-    ::dbaccess::getColumnPositions(i_xQueryColumns,aParameterColumns,m_sUpdateTableName,(*m_pParameterNames),true);
+
+    if ( m_sUpdateTableName.getLength() )
+    {
+        ::dbaccess::getColumnPositions(i_xQueryColumns,aBestColumnNames,m_sUpdateTableName,(*m_pKeyColumnNames),true);
+        ::dbaccess::getColumnPositions(i_xQueryColumns,xTblColumns->getElementNames(),m_sUpdateTableName,(*m_pColumnNames),true);
+        ::dbaccess::getColumnPositions(i_xQueryColumns,aParameterColumns,m_sUpdateTableName,(*m_pParameterNames),true);
+    }
+    else
+    {
+        ::rtl::OUString sCatalog,sSchema,sTable;
+        Reference<XPropertySet> xTableProp(i_aTable,UNO_QUERY);
+        Any aCatalog = xTableProp->getPropertyValue(PROPERTY_CATALOGNAME);
+        aCatalog >>= sCatalog;
+        xTableProp->getPropertyValue(PROPERTY_SCHEMANAME)	>>= sSchema;
+        xTableProp->getPropertyValue(PROPERTY_NAME)			>>= sTable;
+        const ::rtl::OUString sComposedUpdateTableName = dbtools::composeTableName( i_xMeta, sCatalog, sSchema, sTable, sal_False, ::dbtools::eInDataManipulation );
+        ::dbaccess::getColumnPositions(i_xQueryColumns,aBestColumnNames,sComposedUpdateTableName,(*m_pKeyColumnNames),true);
+        ::dbaccess::getColumnPositions(i_xQueryColumns,xTblColumns->getElementNames(),sComposedUpdateTableName,(*m_pColumnNames),true);
+        ::dbaccess::getColumnPositions(i_xQueryColumns,aParameterColumns,sComposedUpdateTableName,(*m_pParameterNames),true);
+    }
 
     SelectColumnsMetaData::const_iterator aPosIter = m_pKeyColumnNames->begin();
     SelectColumnsMetaData::const_iterator aPosEnd = m_pKeyColumnNames->end();
@@ -823,7 +839,10 @@ void OKeySet::executeInsert( const ORowSetRow& _rInsertRow,const ::rtl::OUString
             ::rtl::OUString sStmt = ::rtl::OUString::createFromAscii("SELECT ");
             sStmt += sMaxStmt;
             sStmt += ::rtl::OUString::createFromAscii("FROM ");
-            sStmt += m_aSelectComposedTableName;
+            ::rtl::OUString sCatalog,sSchema,sTable;
+            ::dbtools::qualifiedNameComponents(m_xConnection->getMetaData(),m_sUpdateTableName,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
+            sStmt += ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable );
+            //sStmt += m_aSelectComposedTableName;
             try
             {
                 // now fetch the autoincrement values
diff --git a/dbaccess/source/core/api/KeySet.hxx b/dbaccess/source/core/api/KeySet.hxx
index ccd5cf0..5403a56 100644
--- a/dbaccess/source/core/api/KeySet.hxx
+++ b/dbaccess/source/core/api/KeySet.hxx
@@ -112,7 +112,6 @@ namespace dbaccess
         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow>					m_xRow;
         ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >	m_xComposer;
         ::rtl::OUString																	m_sUpdateTableName;
-        ::rtl::OUString																	m_aSelectComposedTableName;
         ::std::vector< ::rtl::OUString >						m_aFilterColumns;
         
         sal_Bool m_bRowCountFinal;
commit bf76cc893df69ecb3408e4fcf1321c171a039c57
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Fri Aug 27 13:19:56 2010 +0200

    fs33a: reverting the fix for i112671. No string changes allowed in this phase.

diff --git a/dbaccess/source/ext/macromigration/macromigration.src b/dbaccess/source/ext/macromigration/macromigration.src
index 929547b..97cc72f 100644
--- a/dbaccess/source/ext/macromigration/macromigration.src
+++ b/dbaccess/source/ext/macromigration/macromigration.src
@@ -445,7 +445,7 @@ String STR_INVALID_NUMBER_ARGS
 };
 String STR_NO_DATABASE
 {
-    Text [ en-US ] = "No database document found in the initialization arguments.";
+    Text [ en-US ] = "No database document found in the initializatin arguments.";
 };
 String STR_NOT_READONLY
 {
commit 5521d0e17eccd263a154ad11066f07e1575eb806
Author: Ocke Janssen [oj] <Ocke.Janssen at oracle.com>
Date:   Tue Aug 24 15:36:19 2010 +0200

    fs33a: #i113631# use m_sUpdateTableName

diff --git a/dbaccess/source/core/api/KeySet.cxx b/dbaccess/source/core/api/KeySet.cxx
index c5dfe43..eb1699f 100644
--- a/dbaccess/source/core/api/KeySet.cxx
+++ b/dbaccess/source/core/api/KeySet.cxx
@@ -198,16 +198,9 @@ void OKeySet::initColumns()
     m_pForeignColumnNames.reset( new SelectColumnsMetaData(bCase) );
 }
 void OKeySet::findTableColumnsMatching_throw(const Any& i_aTable
-                                                   ,const Reference<XDatabaseMetaData>& i_xMeta
+                                                   ,const Reference<XDatabaseMetaData>& /*i_xMeta*/
                                                    ,const Reference<XNameAccess>& i_xQueryColumns)
 {
-    ::rtl::OUString sCatalog,sSchema,sTable;
-    Reference<XPropertySet> xTableProp(i_aTable,UNO_QUERY);
-    Any aCatalog = xTableProp->getPropertyValue(PROPERTY_CATALOGNAME);
-    aCatalog >>= sCatalog;
-    xTableProp->getPropertyValue(PROPERTY_SCHEMANAME)	>>= sSchema;
-    xTableProp->getPropertyValue(PROPERTY_NAME)			>>= sTable;
-
     // first ask the database itself for the best columns which can be used
     Sequence< ::rtl::OUString> aBestColumnNames;
     Reference<XNameAccess> xKeyColumns	= getPrimaryKeyColumns_throw(i_aTable);
@@ -216,9 +209,8 @@ void OKeySet::findTableColumnsMatching_throw(const Any& i_aTable
 
     const Reference<XColumnsSupplier> xTblColSup(i_aTable,UNO_QUERY_THROW);
     const Reference<XNameAccess> xTblColumns = xTblColSup->getColumns();
-    const ::rtl::OUString sComposedUpdateTableName = dbtools::composeTableName( i_xMeta, sCatalog, sSchema, sTable, sal_False, ::dbtools::eInDataManipulation );
-    ::dbaccess::getColumnPositions(i_xQueryColumns,aBestColumnNames,sComposedUpdateTableName,(*m_pKeyColumnNames),true);
-    ::dbaccess::getColumnPositions(i_xQueryColumns,xTblColumns->getElementNames(),sComposedUpdateTableName,(*m_pColumnNames),true);
+    ::dbaccess::getColumnPositions(i_xQueryColumns,aBestColumnNames,m_sUpdateTableName,(*m_pKeyColumnNames),true);
+    ::dbaccess::getColumnPositions(i_xQueryColumns,xTblColumns->getElementNames(),m_sUpdateTableName,(*m_pColumnNames),true);
 
     // locate parameter in select columns
     Reference<XParametersSupplier> xParaSup(m_xComposer,UNO_QUERY);
@@ -230,7 +222,7 @@ void OKeySet::findTableColumnsMatching_throw(const Any& i_aTable
         Reference<XPropertySet> xPara(xQueryParameters->getByIndex(i),UNO_QUERY_THROW);
         xPara->getPropertyValue(PROPERTY_REALNAME) >>= aParameterColumns[i];
     }
-    ::dbaccess::getColumnPositions(i_xQueryColumns,aParameterColumns,sComposedUpdateTableName,(*m_pParameterNames),true);
+    ::dbaccess::getColumnPositions(i_xQueryColumns,aParameterColumns,m_sUpdateTableName,(*m_pParameterNames),true);
 
     SelectColumnsMetaData::const_iterator aPosIter = m_pKeyColumnNames->begin();
     SelectColumnsMetaData::const_iterator aPosEnd = m_pKeyColumnNames->end();
commit 8fe8d81132d3b307e318afc1720dafe4b8fc8b3f
Author: Ocke Janssen [oj] <Ocke.Janssen at oracle.com>
Date:   Tue Aug 24 15:00:36 2010 +0200

    fs33a: #i113744# check length of value

diff --git a/dbaccess/source/core/api/KeySet.cxx b/dbaccess/source/core/api/KeySet.cxx
index 3de3133..c5dfe43 100644
--- a/dbaccess/source/core/api/KeySet.cxx
+++ b/dbaccess/source/core/api/KeySet.cxx
@@ -1667,7 +1667,7 @@ void OKeySet::impl_convertValue_throw(const ORowSetRow& _rInsertRow,const Select
                 sal_Int32 nIndex = sValue.indexOf('.');
                 if ( nIndex != -1 )
                 {
-                    aValue = sValue.copy(0,nIndex + (i_aMetaData.nScale > 0 ? i_aMetaData.nScale + 1 : 0));
+                    aValue = sValue.copy(0,::std::min(sValue.getLength(),nIndex + (i_aMetaData.nScale > 0 ? i_aMetaData.nScale + 1 : 0)));
                 }
             }
             break;
commit 54b57355495353aadd18c1846dec503c3d474b05
Author: Ocke Janssen [oj] <Ocke.Janssen at oracle.com>
Date:   Tue Aug 24 14:32:12 2010 +0200

    fs33a: #i113583# handle column names from complex descriptions

diff --git a/dbaccess/source/core/dataaccess/documentdefinition.cxx b/dbaccess/source/core/dataaccess/documentdefinition.cxx
index 98c88aa..ef8fc20 100644
--- a/dbaccess/source/core/dataaccess/documentdefinition.cxx
+++ b/dbaccess/source/core/dataaccess/documentdefinition.cxx
@@ -1569,16 +1569,7 @@ sal_Bool ODocumentDefinition::saveAs()
                 Reference<XNameContainer> xNC(pDocuSave->getContent(),UNO_QUERY);
                 if ( xNC.is() )
                 {
-                    if ( m_pImpl->m_aProps.aTitle == pDocuSave->getName() )
-                    {
-                        Reference<XEmbedPersist> xPersist(m_xEmbeddedObject,UNO_QUERY);
-                        if ( xPersist.is() )
-                        {
-                            xPersist->storeOwn();
-                            notifyDataSourceModified();
-                        }
-                    }
-                    else
+                    if ( m_pImpl->m_aProps.aTitle != pDocuSave->getName() )
                     {
                         try
                         {
@@ -1618,6 +1609,12 @@ sal_Bool ODocumentDefinition::saveAs()
                             DBG_UNHANDLED_EXCEPTION();
                         }
                     }
+                    Reference<XEmbedPersist> xPersist(m_xEmbeddedObject,UNO_QUERY);
+                    if ( xPersist.is() )
+                    {
+                        xPersist->storeOwn();
+                        notifyDataSourceModified();
+                    }
                 }
             }
         }
diff --git a/dbaccess/source/core/inc/DatabaseDataProvider.hxx b/dbaccess/source/core/inc/DatabaseDataProvider.hxx
index ade231e..dae466e 100644
--- a/dbaccess/source/core/inc/DatabaseDataProvider.hxx
+++ b/dbaccess/source/core/inc/DatabaseDataProvider.hxx
@@ -33,11 +33,12 @@
 #include "com/sun/star/lang/XServiceInfo.hpp"
 #include "com/sun/star/chart2/data/XDatabaseDataProvider.hpp"
 #include "com/sun/star/chart2/XInternalDataProvider.hpp"
+#include <com/sun/star/chart/XComplexDescriptionAccess.hpp>
 #include <com/sun/star/sdbc/XRowSet.hpp>
 #include <com/sun/star/sdbc/XParameters.hpp>
 #include <com/sun/star/container/XChild.hpp>
 
-#include "cppuhelper/compbase3.hxx"
+#include "cppuhelper/compbase4.hxx"
 #include "cppuhelper/basemutex.hxx"
 #include "cppuhelper/propertysetmixin.hxx"
 #include <cppuhelper/implementationentry.hxx>
@@ -52,8 +53,9 @@ namespace dbaccess
 {
 
 class DatabaseDataSource;
-typedef ::cppu::WeakComponentImplHelper3<   ::com::sun::star::chart2::data::XDatabaseDataProvider
+typedef ::cppu::WeakComponentImplHelper4<   ::com::sun::star::chart2::data::XDatabaseDataProvider
                                           , ::com::sun::star::container::XChild
+                                          , ::com::sun::star::chart::XComplexDescriptionAccess
                                           , ::com::sun::star::lang::XServiceInfo > TDatabaseDataProvider;
 
 class DatabaseDataProvider: private ::cppu::BaseMutex,
@@ -187,6 +189,26 @@ private:
     // conatiner::XChild
     virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent(  ) throw (::com::sun::star::uno::RuntimeException);
     virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
+
+    // ____ XComplexDescriptionAccess ____
+    virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > > SAL_CALL        getComplexRowDescriptions() throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL setComplexRowDescriptions(        const ::com::sun::star::uno::Sequence<        ::com::sun::star::uno::Sequence< ::rtl::OUString > >& aRowDescriptions )        throw (::com::sun::star::uno::RuntimeException);
+    virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > > SAL_CALL        getComplexColumnDescriptions() throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL setComplexColumnDescriptions(         const ::com::sun::star::uno::Sequence<        ::com::sun::star::uno::Sequence< ::rtl::OUString > >& aColumnDescriptions )        throw (::com::sun::star::uno::RuntimeException);
+
+    // ____ XChartDataArray (base of XComplexDescriptionAccess) ____
+    virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > > SAL_CALL getData()        throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL setData(        const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > >& aData )        throw (::com::sun::star::uno::RuntimeException);
+    virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getRowDescriptions()        throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL setRowDescriptions(        const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRowDescriptions )        throw (::com::sun::star::uno::RuntimeException);
+    virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getColumnDescriptions()        throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL setColumnDescriptions(        const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aColumnDescriptions )        throw (::com::sun::star::uno::RuntimeException);
+
+    // ____ XChartData (base of XChartDataArray) ____
+    virtual void SAL_CALL addChartDataChangeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL removeChartDataChangeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& aListener )throw (::com::sun::star::uno::RuntimeException);
+    virtual double SAL_CALL getNotANumber()throw (::com::sun::star::uno::RuntimeException);
+    virtual ::sal_Bool SAL_CALL isNotANumber(double nNumber )throw (::com::sun::star::uno::RuntimeException);
 private:
     DatabaseDataProvider(DatabaseDataProvider &); // not defined
     void operator =(DatabaseDataProvider &); // not defined
@@ -229,6 +251,7 @@ private:
     ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >                 m_xActiveConnection;
     ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >                     m_xRowSet;
     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XInternalDataProvider >     m_xInternal;
+    ::com::sun::star::uno::Reference< ::com::sun::star::chart::XComplexDescriptionAccess >  m_xComplexDescriptionAccess;
     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XRangeXMLConversion>  m_xRangeConversion;
     ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler>          m_xHandler;
     // the object doin' most of the work - an SDB-rowset
diff --git a/dbaccess/source/core/misc/DatabaseDataProvider.cxx b/dbaccess/source/core/misc/DatabaseDataProvider.cxx
index 1b4ea8f..0ede9ff 100644
--- a/dbaccess/source/core/misc/DatabaseDataProvider.cxx
+++ b/dbaccess/source/core/misc/DatabaseDataProvider.cxx
@@ -43,6 +43,7 @@
 #include <com/sun/star/sdbc/XResultSet.hpp>
 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
 #include <com/sun/star/sdbc/XResultSetMetaData.hpp>
+#include <com/sun/star/sdbc/XColumnLocate.hpp>
 #include <com/sun/star/beans/NamedValue.hpp>
 #include <com/sun/star/chart/ChartDataRowSource.hpp>
 #include <com/sun/star/chart/XChartDataArray.hpp>
@@ -72,6 +73,7 @@ DatabaseDataProvider::DatabaseDataProvider(uno::Reference< uno::XComponentContex
 {
     m_xInternal.set( m_xContext->getServiceManager()->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.chart.InternalDataProvider")),m_xContext ), uno::UNO_QUERY );
     m_xRangeConversion.set(m_xInternal,uno::UNO_QUERY);
+    m_xComplexDescriptionAccess.set(m_xInternal,uno::UNO_QUERY);
 
     osl_incrementInterlockedCount( &m_refCount );
     {
@@ -315,6 +317,75 @@ uno::Reference< chart2::data::XDataSequence > SAL_CALL DatabaseDataProvider::cre
     }
     return xData;
 }
+
+uno::Sequence< uno::Sequence< rtl::OUString > > SAL_CALL DatabaseDataProvider::getComplexRowDescriptions() throw (uno::RuntimeException)
+{
+    return m_xComplexDescriptionAccess->getComplexRowDescriptions();
+}
+void SAL_CALL DatabaseDataProvider::setComplexRowDescriptions( const uno::Sequence< uno::Sequence< ::rtl::OUString > >& aRowDescriptions ) throw (uno::RuntimeException)
+{
+    m_xComplexDescriptionAccess->setComplexRowDescriptions(aRowDescriptions);
+}
+uno::Sequence< uno::Sequence< rtl::OUString > > SAL_CALL DatabaseDataProvider::getComplexColumnDescriptions() throw (uno::RuntimeException)
+{
+    return m_xComplexDescriptionAccess->getComplexColumnDescriptions();
+}
+void SAL_CALL DatabaseDataProvider::setComplexColumnDescriptions( const uno::Sequence< uno::Sequence< rtl::OUString > >& aColumnDescriptions ) throw (uno::RuntimeException)
+{
+    m_xComplexDescriptionAccess->setComplexColumnDescriptions(aColumnDescriptions);
+}
+// ____ XChartDataArray ____
+uno::Sequence< uno::Sequence< double > > SAL_CALL DatabaseDataProvider::getData()    throw (uno::RuntimeException)
+{
+    return m_xComplexDescriptionAccess->getData();
+}
+
+void SAL_CALL DatabaseDataProvider::setData( const uno::Sequence< uno::Sequence< double > >& rDataInRows )    throw (uno::RuntimeException)
+{
+    m_xComplexDescriptionAccess->setData(rDataInRows);
+}
+
+void SAL_CALL DatabaseDataProvider::setRowDescriptions( const uno::Sequence< rtl::OUString >& aRowDescriptions )    throw (uno::RuntimeException)
+{
+    m_xComplexDescriptionAccess->setRowDescriptions(aRowDescriptions);
+}
+
+void SAL_CALL DatabaseDataProvider::setColumnDescriptions( const uno::Sequence< rtl::OUString >& aColumnDescriptions )    throw (uno::RuntimeException)
+{
+    m_xComplexDescriptionAccess->setColumnDescriptions(aColumnDescriptions);
+}
+
+uno::Sequence< rtl::OUString > SAL_CALL DatabaseDataProvider::getRowDescriptions()    throw (uno::RuntimeException)
+{    
+    return m_xComplexDescriptionAccess->getRowDescriptions();
+}
+
+uno::Sequence< rtl::OUString > SAL_CALL DatabaseDataProvider::getColumnDescriptions()    throw (uno::RuntimeException)
+{    
+    return m_xComplexDescriptionAccess->getColumnDescriptions();
+}
+
+// ____ XChartData (base of XChartDataArray) ____
+void SAL_CALL DatabaseDataProvider::addChartDataChangeEventListener(const uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& x)    throw (uno::RuntimeException)
+{
+    m_xComplexDescriptionAccess->addChartDataChangeEventListener(x);
+}
+
+void SAL_CALL DatabaseDataProvider::removeChartDataChangeEventListener(const uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& x)    throw (uno::RuntimeException)
+{
+    m_xComplexDescriptionAccess->removeChartDataChangeEventListener(x);
+}
+
+double SAL_CALL DatabaseDataProvider::getNotANumber()    throw (uno::RuntimeException)
+{
+    return m_xComplexDescriptionAccess->getNotANumber();
+}
+
+::sal_Bool SAL_CALL DatabaseDataProvider::isNotANumber( double nNumber )    throw (uno::RuntimeException)
+{
+    return m_xComplexDescriptionAccess->isNotANumber(nNumber);
+}
+
 // -----------------------------------------------------------------------------
 
 uno::Reference< sheet::XRangeSelection > SAL_CALL DatabaseDataProvider::getRangeSelection() throw (uno::RuntimeException)
@@ -616,26 +687,28 @@ void DatabaseDataProvider::impl_fillInternalDataProvider_throw(sal_Bool _bHasCat
     uno::Reference< sdbc::XResultSet> xRes(m_xRowSet,uno::UNO_QUERY_THROW);
     uno::Reference< sdbc::XRow> xRow(m_xRowSet,uno::UNO_QUERY_THROW);
     uno::Reference< sdbc::XResultSetMetaData> xResultSetMetaData = uno::Reference< sdbc::XResultSetMetaDataSupplier>(m_xRowSet,uno::UNO_QUERY)->getMetaData();
+    uno::Reference< sdbc::XColumnLocate> xColumnLocate(m_xRowSet,uno::UNO_QUERY_THROW);
 
     ::std::vector<sal_Int32> aColumnTypes;
     uno::Sequence< uno::Any > aLabelArgs(1);
     const sal_Int32 nCount = aColumns.getLength();
     if ( nCount )
         aColumnTypes.push_back(xResultSetMetaData->getColumnType(1));
-    for (sal_Int32 i = 1; i < nCount; ++i)
-    {
-        aColumnTypes.push_back(xResultSetMetaData->getColumnType(i+1));
-    } // for (sal_Int32 i = 1; i < nCount; ++i)
 
+    ::std::vector< sal_Int32 > aColumnPositions;
     const ::rtl::OUString* pIter = aColumns.getConstArray();
     const ::rtl::OUString* pEnd = pIter + aColumns.getLength();
     for(sal_Int32 k = 0;pIter != pEnd;++pIter,++k)
     {
+        aColumnPositions.push_back(xColumnLocate->findColumn(*pIter));
         uno::Reference< beans::XPropertySet> xColumn(xColumns->getByName(*pIter),uno::UNO_QUERY);
+        sal_Int32 nType = sdbc::DataType::VARCHAR;
         if ( xColumn.is() )
         {
             m_aNumberFormats.insert( ::std::map< ::rtl::OUString,uno::Any>::value_type(::rtl::OUString::valueOf(k),xColumn->getPropertyValue(PROPERTY_NUMBERFORMAT)));
+            xColumn->getPropertyValue(PROPERTY_TYPE) >>= nType;
         }
+        aColumnTypes.push_back(nType);
     }
 
     ::std::vector< ::rtl::OUString > aRowLabels;
@@ -649,9 +722,17 @@ void DatabaseDataProvider::impl_fillInternalDataProvider_throw(sal_Bool _bHasCat
         aValue.fill(1,aColumnTypes[0],xRow);
         aRowLabels.push_back(aValue.getString());
         ::std::vector< double > aRow;
-        for (sal_Int32 j = _bHasCategories ? 2 : 1,i = 0; j <= nCount; ++j,++i)
+        ::std::vector< sal_Int32 >::iterator aColumnPosIter = aColumnPositions.begin();
+        ::std::vector< sal_Int32 >::iterator aColumnPosEnd = aColumnPositions.end();
+        sal_Int32 i = 0;
+        if ( _bHasCategories )
         {
-            aValue.fill(j,aColumnTypes[j-1],xRow);
+            ++aColumnPosIter;
+            ++i;
+        }
+        for (; aColumnPosIter != aColumnPosEnd; ++aColumnPosIter,++i)
+        {
+            aValue.fill(*aColumnPosIter,aColumnTypes[i],xRow);
             if ( aValue.isNull() )
             {
                 double nValue;
@@ -660,7 +741,7 @@ void DatabaseDataProvider::impl_fillInternalDataProvider_throw(sal_Bool _bHasCat
             }
             else
                 aRow.push_back(aValue.getDouble());
-        } // for (sal_Int32 j = 2,i = 0; j <= nCount; ++j,++i)
+        }
         aDataValues.push_back(aRow);
     } // while( xRes->next() && (!m_RowLimit || nRowCount < m_RowLimit) )
 
diff --git a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
index 29f8857..51a535a 100644
--- a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
+++ b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
@@ -29,6 +29,7 @@
 #include "xmlExportDocumentHandler.hxx"
 #include <com/sun/star/sdb/CommandType.hpp>
 #include <com/sun/star/chart2/data/XDatabaseDataProvider.hpp>
+#include <com/sun/star/chart/XComplexDescriptionAccess.hpp>
 #include <com/sun/star/reflection/XProxyFactory.hpp>
 #include <com/sun/star/sdb/CommandType.hpp>
 #include <comphelper/sequence.hxx>
@@ -339,11 +340,28 @@ void SAL_CALL ExportDocumentHandler::initialize( const uno::Sequence< uno::Any >
     // set ourself as delegator
     m_xProxy->setDelegator( *this );
 
-    const ::rtl::OUString sCommand = m_xDatabaseDataProvider->getCommand();
-    if ( sCommand.getLength() )
-        m_aColumns = ::dbtools::getFieldNamesByCommandDescriptor(m_xDatabaseDataProvider->getActiveConnection()
-                    ,m_xDatabaseDataProvider->getCommandType()
-                    ,sCommand);
+    uno::Reference< chart::XComplexDescriptionAccess > xDataProvider(m_xDatabaseDataProvider,uno::UNO_QUERY);
+    if ( xDataProvider.is() )
+    {
+        uno::Sequence< uno::Sequence< ::rtl::OUString > > aColumnNames = xDataProvider->getComplexColumnDescriptions();
+        for(sal_Int32 i = 0 ; i < aColumnNames.getLength();++i)
+        {
+            if ( aColumnNames[i].getLength() )
+            {
+                sal_Int32 nCount = m_aColumns.getLength();
+                m_aColumns.realloc(nCount+1);
+                m_aColumns[nCount] = aColumnNames[i][0];
+            }
+        }
+    }
+    else
+    {
+        const ::rtl::OUString sCommand = m_xDatabaseDataProvider->getCommand();
+        if ( sCommand.getLength() )
+            m_aColumns = ::dbtools::getFieldNamesByCommandDescriptor(m_xDatabaseDataProvider->getActiveConnection()
+                        ,m_xDatabaseDataProvider->getCommandType()
+                        ,sCommand);
+    }
 }
 // --------------------------------------------------------------------------------
 uno::Any SAL_CALL ExportDocumentHandler::queryInterface( const uno::Type& _rType ) throw (uno::RuntimeException)
commit adaa62d63307602bfb940d42a8ad7d960d3fc0b2
Merge: 2fbec17... 4022fd7...
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Tue Aug 10 14:53:21 2010 +0200

    merging in latest changes from OOO330(m3)

diff --cc dbaccess/source/core/dataaccess/datasource.cxx
index e3f75ef,6a11515..6a11515
mode 100644,100755..100644
--- a/dbaccess/source/core/dataaccess/datasource.cxx
+++ b/dbaccess/source/core/dataaccess/datasource.cxx
diff --cc dbaccess/source/inc/OAuthenticationContinuation.hxx
index 0000000,8f44097..8f44097
mode 000000,100755..100644
--- a/dbaccess/source/inc/OAuthenticationContinuation.hxx
+++ b/dbaccess/source/inc/OAuthenticationContinuation.hxx
diff --cc dbaccess/source/ui/dlg/DbAdminImpl.cxx
index 0464080,816d3d5..816d3d5
mode 100644,100755..100644
--- a/dbaccess/source/ui/dlg/DbAdminImpl.cxx
+++ b/dbaccess/source/ui/dlg/DbAdminImpl.cxx
diff --cc dbaccess/source/ui/uno/dbinteraction.cxx
index 135838d,e735c03..e735c03
mode 100644,100755..100644
--- a/dbaccess/source/ui/uno/dbinteraction.cxx
+++ b/dbaccess/source/ui/uno/dbinteraction.cxx
commit 2fbec17c655c59232ba4b9f3ea3665507ba99d53
Merge: 8c9b117... 5c75695...
Author: Frank Schoenheit [fs] <frank.schoenheit at sun.com>
Date:   Tue Jul 6 15:24:32 2010 +0200

    Automated merge with ssh://hg@hg.services.openoffice.org/cws/unoawt2

commit 5c756956da3e5b218f63022430527bc3780afbcf
Author: Frank Schoenheit [fs] <frank.schoenheit at sun.com>
Date:   Wed Jun 23 13:31:43 2010 +0200

    fs33a: #i112617# fixed typo (thanks sophie)

diff --git a/dbaccess/source/ext/macromigration/macromigration.src b/dbaccess/source/ext/macromigration/macromigration.src
index 97cc72f..929547b 100644
--- a/dbaccess/source/ext/macromigration/macromigration.src
+++ b/dbaccess/source/ext/macromigration/macromigration.src
@@ -445,7 +445,7 @@ String STR_INVALID_NUMBER_ARGS
 };
 String STR_NO_DATABASE
 {
-    Text [ en-US ] = "No database document found in the initializatin arguments.";
+    Text [ en-US ] = "No database document found in the initialization arguments.";
 };
 String STR_NOT_READONLY
 {


More information about the ooo-build-commit mailing list