summaryrefslogtreecommitdiff
path: root/reportdesign/source/filter/xml
diff options
context:
space:
mode:
authorOcke Janssen [oj] <Ocke.Janssen@oracle.com>2010-08-24 14:32:12 +0200
committerOcke Janssen [oj] <Ocke.Janssen@oracle.com>2010-08-24 14:32:12 +0200
commit7d8e147c64eb45bbbe8ff7e1ca47d20b4a2499b1 (patch)
tree70f7f4ff6f22720879883ef36d46dfbcfa717028 /reportdesign/source/filter/xml
parent504e95116ca717445e0da093bb940471167c9dde (diff)
fs33a: #i113583# handle column names from complex descriptions
Diffstat (limited to 'reportdesign/source/filter/xml')
-rw-r--r--reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx28
1 files changed, 23 insertions, 5 deletions
diff --git a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
index 3fa6b42e625b..1455dee74b3c 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)