LCOV - code coverage report
Current view: top level - dbaccess/source/core/misc - DatabaseDataProvider.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 2 552 0.4 %
Date: 2012-08-25 Functions: 1 124 0.8 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 842 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*
       3                 :            :  * This file is part of the LibreOffice project.
       4                 :            :  *
       5                 :            :  * This Source Code Form is subject to the terms of the Mozilla Public
       6                 :            :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7                 :            :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8                 :            :  *
       9                 :            :  * This file incorporates work covered by the following license notice:
      10                 :            :  *
      11                 :            :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12                 :            :  *   contributor license agreements. See the NOTICE file distributed
      13                 :            :  *   with this work for additional information regarding copyright
      14                 :            :  *   ownership. The ASF licenses this file to you under the Apache
      15                 :            :  *   License, Version 2.0 (the "License"); you may not use this file
      16                 :            :  *   except in compliance with the License. You may obtain a copy of
      17                 :            :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18                 :            :  */
      19                 :            : 
      20                 :            : #include "DatabaseDataProvider.hxx"
      21                 :            : #include "dbastrings.hrc"
      22                 :            : #include "cppuhelper/implbase1.hxx"
      23                 :            : #include <comphelper/types.hxx>
      24                 :            : #include <comphelper/namedvaluecollection.hxx>
      25                 :            : #include <connectivity/FValue.hxx>
      26                 :            : #include <connectivity/dbtools.hxx>
      27                 :            : #include <rtl/ustrbuf.hxx>
      28                 :            : #include <rtl/math.hxx>
      29                 :            : #include <sal/macros.h>
      30                 :            : #include <tools/diagnose_ex.h>
      31                 :            : 
      32                 :            : #include <com/sun/star/task/XInteractionHandler.hpp>
      33                 :            : #include <com/sun/star/sdb/XCompletedExecution.hpp>
      34                 :            : #include <com/sun/star/sdb/CommandType.hpp>
      35                 :            : #include <com/sun/star/sdbc/DataType.hpp>
      36                 :            : #include <com/sun/star/sdbc/XRow.hpp>
      37                 :            : #include <com/sun/star/sdbc/XResultSet.hpp>
      38                 :            : #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
      39                 :            : #include <com/sun/star/sdbc/XResultSetMetaData.hpp>
      40                 :            : #include <com/sun/star/sdbc/XColumnLocate.hpp>
      41                 :            : #include <com/sun/star/beans/NamedValue.hpp>
      42                 :            : #include <com/sun/star/chart/ChartDataRowSource.hpp>
      43                 :            : #include <com/sun/star/chart/XChartDataArray.hpp>
      44                 :            : #include <com/sun/star/chart/XDateCategories.hpp>
      45                 :            : 
      46                 :            : #include <vector>
      47                 :            : #include <list>
      48                 :            : 
      49                 :            : namespace dbaccess
      50                 :            : {
      51                 :            : using namespace ::com::sun::star;
      52                 :            : using ::com::sun::star::sdbc::SQLException;
      53                 :            : using ::com::sun::star::uno::Reference;
      54                 :            : using ::com::sun::star::uno::RuntimeException;
      55                 :            : // -----------------------------------------------------------------------------
      56                 :          0 : DatabaseDataProvider::DatabaseDataProvider(uno::Reference< uno::XComponentContext > const & context) :
      57                 :            :     TDatabaseDataProvider(m_aMutex),
      58                 :            :     ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >(
      59                 :            :         context, static_cast< Implements >(
      60                 :            :             IMPLEMENTS_PROPERTY_SET), uno::Sequence< ::rtl::OUString >()),
      61         [ #  # ]:          0 :     m_aParameterManager( m_aMutex, uno::Reference< lang::XMultiServiceFactory >(context->getServiceManager(),uno::UNO_QUERY) ),
      62         [ #  # ]:          0 :     m_aFilterManager( uno::Reference< lang::XMultiServiceFactory >(context->getServiceManager(),uno::UNO_QUERY) ),
      63                 :            :     m_xContext(context),
      64                 :            :     m_CommandType(sdb::CommandType::COMMAND), // #i94114
      65                 :            :     m_RowLimit(0),
      66                 :            :     m_EscapeProcessing(sal_True),
      67 [ #  # ][ #  # ]:          0 :     m_ApplyFilter(sal_True)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      68                 :            : {
      69 [ #  # ][ #  # ]:          0 :     m_xInternal.set( m_xContext->getServiceManager()->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.chart.InternalDataProvider")),m_xContext ), uno::UNO_QUERY );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      70         [ #  # ]:          0 :     m_xRangeConversion.set(m_xInternal,uno::UNO_QUERY);
      71         [ #  # ]:          0 :     m_xComplexDescriptionAccess.set(m_xInternal,uno::UNO_QUERY);
      72                 :            : 
      73         [ #  # ]:          0 :     osl_incrementInterlockedCount( &m_refCount );
      74                 :            :     {
      75 [ #  # ][ #  # ]:          0 :         m_xRowSet.set( m_xContext->getServiceManager()->createInstanceWithContext(SERVICE_SDB_ROWSET,m_xContext ), uno::UNO_QUERY );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      76         [ #  # ]:          0 :         m_xAggregate.set(m_xRowSet,uno::UNO_QUERY);
      77         [ #  # ]:          0 :         m_xAggregateSet.set(m_xRowSet,uno::UNO_QUERY);
      78         [ #  # ]:          0 :         uno::Reference<beans::XPropertySet> xProp(static_cast< ::cppu::OWeakObject* >( this ),uno::UNO_QUERY);
      79         [ #  # ]:          0 :         m_aFilterManager.initialize( m_xAggregateSet );
      80         [ #  # ]:          0 :         m_aParameterManager.initialize( xProp, m_xAggregate );
      81 [ #  # ][ #  # ]:          0 :         m_xAggregateSet->setPropertyValue(PROPERTY_COMMAND_TYPE,uno::makeAny(m_CommandType));
         [ #  # ][ #  # ]
      82 [ #  # ][ #  # ]:          0 :         m_xAggregateSet->setPropertyValue(PROPERTY_ESCAPE_PROCESSING,uno::makeAny(m_EscapeProcessing));
         [ #  # ][ #  # ]
      83                 :            :     }
      84         [ #  # ]:          0 :     osl_decrementInterlockedCount( &m_refCount );
      85                 :          0 : }
      86                 :            : // -----------------------------------------------------------------------------
      87                 :          0 : void SAL_CALL DatabaseDataProvider::disposing()
      88                 :            : {
      89 [ #  # ][ #  # ]:          0 :     lang::EventObject aEvt(static_cast<XWeak*>(this));
      90         [ #  # ]:          0 :     m_aParameterManager.disposing( aEvt );
      91                 :            : 
      92         [ #  # ]:          0 :     m_aParameterManager.dispose();   // (to free any references it may have to me)
      93         [ #  # ]:          0 :     m_aFilterManager.dispose();      // (dito)
      94                 :            : 
      95                 :          0 :     m_xParent.clear();
      96                 :          0 :     m_xAggregateSet.clear();
      97                 :          0 :     m_xAggregate.clear();
      98                 :          0 :     m_xRangeConversion.clear();
      99         [ #  # ]:          0 :     ::comphelper::disposeComponent(m_xRowSet);
     100         [ #  # ]:          0 :     ::comphelper::disposeComponent(m_xInternal);
     101         [ #  # ]:          0 :     m_xActiveConnection.clear();
     102                 :          0 : }
     103                 :            : // -----------------------------------------------------------------------------
     104                 :          0 : uno::Any DatabaseDataProvider::queryInterface(uno::Type const & type) throw (uno::RuntimeException)
     105                 :            : {
     106                 :          0 :     return TDatabaseDataProvider::queryInterface(type);
     107                 :            : }
     108                 :            : // -----------------------------------------------------------------------------
     109                 :            : 
     110                 :            : //------------------------------------------------------------------------------
     111                 :          9 : rtl::OUString DatabaseDataProvider::getImplementationName_Static(  ) throw(uno::RuntimeException)
     112                 :            : {
     113                 :          9 :     return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.dbaccess.DatabaseDataProvider"));
     114                 :            : }
     115                 :            : // -----------------------------------------------------------------------------
     116                 :            : // -------------------------------------------------------------------------
     117                 :            : // XServiceInfo
     118                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::getImplementationName(  ) throw(uno::RuntimeException)
     119                 :            : {
     120                 :          0 :     return getImplementationName_Static();
     121                 :            : }
     122                 :            : // -----------------------------------------------------------------------------
     123                 :            : // -------------------------------------------------------------------------
     124                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::supportsService( const ::rtl::OUString& _rServiceName ) throw(uno::RuntimeException)
     125                 :            : {
     126 [ #  # ][ #  # ]:          0 :     return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
     127                 :            : }
     128                 :            : // -----------------------------------------------------------------------------
     129                 :            : //------------------------------------------------------------------------------
     130                 :          0 : uno::Sequence< ::rtl::OUString > DatabaseDataProvider::getSupportedServiceNames_Static(  ) throw (uno::RuntimeException)
     131                 :            : {
     132                 :          0 :     uno::Sequence< rtl::OUString > aSNS( 1 );
     133 [ #  # ][ #  # ]:          0 :     aSNS[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.chart2.data.DatabaseDataProvider"));
     134                 :          0 :     return aSNS;
     135                 :            : }
     136                 :            : // -----------------------------------------------------------------------------
     137                 :          0 : uno::Sequence< ::rtl::OUString > SAL_CALL DatabaseDataProvider::getSupportedServiceNames(  ) throw(uno::RuntimeException)
     138                 :            : {
     139                 :          0 :     return getSupportedServiceNames_Static();
     140                 :            : }
     141                 :            : // -----------------------------------------------------------------------------
     142                 :          0 : uno::Reference< uno::XInterface > DatabaseDataProvider::Create(uno::Reference< uno::XComponentContext > const & context)
     143                 :            : {
     144         [ #  # ]:          0 :     return *(new DatabaseDataProvider(context)) ;
     145                 :            : }
     146                 :            : // -----------------------------------------------------------------------------
     147                 :            : // lang::XInitialization:
     148                 :          0 : void SAL_CALL DatabaseDataProvider::initialize(const uno::Sequence< uno::Any > & aArguments) throw (uno::RuntimeException, uno::Exception)
     149                 :            : {
     150         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     151                 :          0 :     const uno::Any* pIter   = aArguments.getConstArray();
     152                 :          0 :     const uno::Any* pEnd    = pIter + aArguments.getLength();
     153         [ #  # ]:          0 :     for(;pIter != pEnd;++pIter)
     154                 :            :     {
     155         [ #  # ]:          0 :         if ( !m_xActiveConnection.is() )
     156         [ #  # ]:          0 :             (*pIter) >>= m_xActiveConnection;
     157         [ #  # ]:          0 :         else if ( !m_xHandler.is() )
     158         [ #  # ]:          0 :             (*pIter) >>= m_xHandler;
     159                 :            :     }
     160 [ #  # ][ #  # ]:          0 :     m_xAggregateSet->setPropertyValue( PROPERTY_ACTIVE_CONNECTION, uno::makeAny( m_xActiveConnection ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     161                 :          0 : }
     162                 :            : // -----------------------------------------------------------------------------
     163                 :            : 
     164                 :            : // chart2::data::XDataProvider:
     165                 :          0 : ::sal_Bool SAL_CALL DatabaseDataProvider::createDataSourcePossible(const uno::Sequence< beans::PropertyValue > & _aArguments) throw (uno::RuntimeException)
     166                 :            : {
     167                 :          0 :     const beans::PropertyValue* pArgIter = _aArguments.getConstArray();
     168                 :          0 :     const beans::PropertyValue* pArgEnd  = pArgIter + _aArguments.getLength();
     169         [ #  # ]:          0 :     for(;pArgIter != pArgEnd;++pArgIter)
     170                 :            :     {
     171         [ #  # ]:          0 :         if ( pArgIter->Name == "DataRowSource" )
     172                 :            :         {
     173                 :          0 :             ::com::sun::star::chart::ChartDataRowSource eRowSource = ::com::sun::star::chart::ChartDataRowSource_COLUMNS;
     174         [ #  # ]:          0 :             pArgIter->Value >>= eRowSource;
     175         [ #  # ]:          0 :             if ( eRowSource != ::com::sun::star::chart::ChartDataRowSource_COLUMNS )
     176                 :          0 :                 return sal_False;
     177                 :            :         }
     178         [ #  # ]:          0 :         else if ( pArgIter->Name == "CellRangeRepresentation" )
     179                 :            :         {
     180                 :          0 :             ::rtl::OUString sRange;
     181                 :          0 :             pArgIter->Value >>= sRange;
     182         [ #  # ]:          0 :             if ( !sRange.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("all")) )
     183         [ #  # ]:          0 :                 return sal_False;
     184                 :            :         }
     185         [ #  # ]:          0 :         else if ( pArgIter->Name == "FirstCellAsLabel" )
     186                 :            :         {
     187                 :          0 :             sal_Bool bFirstCellAsLabel = sal_True;
     188                 :          0 :             pArgIter->Value >>= bFirstCellAsLabel;
     189         [ #  # ]:          0 :             if ( !bFirstCellAsLabel )
     190                 :          0 :                 return sal_False;
     191                 :            :         }
     192                 :            :     }
     193                 :          0 :     return sal_True;
     194                 :            : }
     195                 :            : // -----------------------------------------------------------------------------
     196                 :            : // -----------------------------------------------------------------------------
     197                 :          0 : uno::Reference< chart2::data::XDataSource > SAL_CALL DatabaseDataProvider::createDataSource(const uno::Sequence< beans::PropertyValue > & _aArguments) throw (uno::RuntimeException, lang::IllegalArgumentException)
     198                 :            : {
     199         [ #  # ]:          0 :     osl::ResettableMutexGuard aClearForNotifies(m_aMutex);
     200 [ #  # ][ #  # ]:          0 :     if ( createDataSourcePossible(_aArguments) )
     201                 :            :     {
     202                 :            :         try
     203                 :            :         {
     204         [ #  # ]:          0 :             uno::Reference< chart::XChartDataArray> xChartData( m_xInternal, uno::UNO_QUERY_THROW );
     205 [ #  # ][ #  # ]:          0 :             xChartData->setData( uno::Sequence< uno::Sequence< double > >() );
         [ #  # ][ #  # ]
     206 [ #  # ][ #  # ]:          0 :             xChartData->setColumnDescriptions( uno::Sequence< ::rtl::OUString >() );
         [ #  # ][ #  # ]
     207 [ #  # ][ #  # ]:          0 :             if ( m_xInternal->hasDataByRangeRepresentation( ::rtl::OUString::valueOf( sal_Int32(0) ) ) )
                 [ #  # ]
     208 [ #  # ][ #  # ]:          0 :                 m_xInternal->deleteSequence(0);
                 [ #  # ]
     209                 :            :         }
     210         [ #  # ]:          0 :         catch( const uno::Exception& )
     211                 :            :         {
     212                 :            :             DBG_UNHANDLED_EXCEPTION();
     213                 :            :         }
     214                 :            : 
     215         [ #  # ]:          0 :         ::comphelper::NamedValueCollection aArgs( _aArguments );
     216         [ #  # ]:          0 :         const sal_Bool bHasCategories = aArgs.getOrDefault( "HasCategories", sal_True );
     217                 :            :         uno::Sequence< ::rtl::OUString > aColumnNames =
     218 [ #  # ][ #  # ]:          0 :             aArgs.getOrDefault( "ColumnDescriptions", uno::Sequence< ::rtl::OUString >() );
           [ #  #  #  # ]
     219                 :            : 
     220                 :          0 :         bool bRet = false;
     221 [ #  # ][ #  # ]:          0 :         if ( !m_Command.isEmpty() && m_xActiveConnection.is() )
                 [ #  # ]
     222                 :            :         {
     223                 :            :             try
     224                 :            :             {
     225         [ #  # ]:          0 :                 impl_fillRowSet_throw();
     226         [ #  # ]:          0 :                 impl_executeRowSet_throw(aClearForNotifies);
     227         [ #  # ]:          0 :                 impl_fillInternalDataProvider_throw(bHasCategories,aColumnNames);
     228                 :          0 :                 bRet = true;
     229                 :            :             }
     230         [ #  # ]:          0 :             catch(const uno::Exception& /*e*/)
     231                 :            :             {
     232                 :            :             }
     233                 :            :         }
     234         [ #  # ]:          0 :         if ( !bRet ) // no command set or an error occurred, use Internal data handler
     235                 :            :         {
     236         [ #  # ]:          0 :             uno::Reference< lang::XInitialization> xIni(m_xInternal,uno::UNO_QUERY);
     237         [ #  # ]:          0 :             if ( xIni.is() )
     238                 :            :             {
     239         [ #  # ]:          0 :                 uno::Sequence< uno::Any > aInitArgs(1);
     240 [ #  # ][ #  # ]:          0 :                 beans::NamedValue aParam(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CreateDefaultData")),uno::makeAny(sal_True));
     241 [ #  # ][ #  # ]:          0 :                 aInitArgs[0] <<= aParam;
     242 [ #  # ][ #  # ]:          0 :                 xIni->initialize(aInitArgs);
                 [ #  # ]
     243                 :          0 :             }
     244 [ #  # ][ #  # ]:          0 :         }
     245                 :            : 
     246                 :            :     }
     247 [ #  # ][ #  # ]:          0 :     return m_xInternal->createDataSource(_aArguments);
                 [ #  # ]
     248                 :            : }
     249                 :            : // -----------------------------------------------------------------------------
     250                 :            : 
     251                 :          0 : uno::Sequence< beans::PropertyValue > SAL_CALL DatabaseDataProvider::detectArguments(const uno::Reference< chart2::data::XDataSource > & _xDataSource) throw (uno::RuntimeException)
     252                 :            : {
     253         [ #  # ]:          0 :     ::comphelper::NamedValueCollection aArguments;
     254 [ #  # ][ #  # ]:          0 :     aArguments.put( "CellRangeRepresentation", uno::Any( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "all" ) ) ) );
                 [ #  # ]
     255 [ #  # ][ #  # ]:          0 :     aArguments.put( "DataRowSource", uno::makeAny( chart::ChartDataRowSource_COLUMNS ) );
     256                 :            :     // internal data always contains labels and categories
     257 [ #  # ][ #  # ]:          0 :     aArguments.put( "FirstCellAsLabel", uno::makeAny( sal_True ) );
     258                 :            : 
     259                 :          0 :     sal_Bool bHasCategories = sal_False;
     260         [ #  # ]:          0 :     if( _xDataSource.is())
     261                 :            :     {
     262 [ #  # ][ #  # ]:          0 :         uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > aSequences(_xDataSource->getDataSequences());
     263                 :          0 :         const sal_Int32 nCount( aSequences.getLength());
     264         [ #  # ]:          0 :         for( sal_Int32 nIdx=0; nIdx<nCount; ++nIdx )
     265                 :            :         {
     266 [ #  # ][ #  # ]:          0 :             if( aSequences[nIdx].is() )
     267                 :            :             {
     268 [ #  # ][ #  # ]:          0 :                 uno::Reference< beans::XPropertySet > xSeqProp( aSequences[nIdx]->getValues(), uno::UNO_QUERY );
         [ #  # ][ #  # ]
     269                 :          0 :                 ::rtl::OUString aRole;
     270 [ #  # ][ #  #  :          0 :                 if  (   xSeqProp.is()
             #  #  #  # ]
     271 [ #  # ][ #  # ]:          0 :                     &&  ( xSeqProp->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Role" ) ) ) >>= aRole )
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
     272                 :          0 :                     &&  aRole == "categories"
     273                 :            :                     )
     274                 :            :                 {
     275                 :          0 :                     bHasCategories = sal_True;
     276                 :            :                     break;
     277 [ #  # ][ #  # ]:          0 :                 }
     278                 :            :             }
     279         [ #  # ]:          0 :         }
     280                 :            :     }
     281 [ #  # ][ #  # ]:          0 :     aArguments.put( "HasCategories", uno::makeAny( bHasCategories ) );
     282 [ #  # ][ #  # ]:          0 :     return aArguments.getPropertyValues();
     283                 :            : }
     284                 :            : // -----------------------------------------------------------------------------
     285                 :            : 
     286                 :          0 : ::sal_Bool SAL_CALL DatabaseDataProvider::createDataSequenceByRangeRepresentationPossible(const ::rtl::OUString & /*aRangeRepresentation*/) throw (uno::RuntimeException)
     287                 :            : {
     288                 :          0 :     return sal_True;
     289                 :            : }
     290                 :            : // -----------------------------------------------------------------------------
     291                 :          0 : uno::Any DatabaseDataProvider::impl_getNumberFormatKey_nothrow(const ::rtl::OUString & _sRangeRepresentation) const
     292                 :            : {
     293         [ #  # ]:          0 :     ::std::map< ::rtl::OUString,com::sun::star::uno::Any>::const_iterator aFind = m_aNumberFormats.find(_sRangeRepresentation);
     294         [ #  # ]:          0 :     if ( aFind != m_aNumberFormats.end() )
     295                 :          0 :         return aFind->second;
     296         [ #  # ]:          0 :     return uno::makeAny(sal_Int32(0));
     297                 :            : }
     298                 :            : // -----------------------------------------------------------------------------
     299                 :          0 : uno::Reference< chart2::data::XDataSequence > SAL_CALL DatabaseDataProvider::createDataSequenceByRangeRepresentation(const ::rtl::OUString & _sRangeRepresentation) throw (uno::RuntimeException, lang::IllegalArgumentException)
     300                 :            : {
     301         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     302 [ #  # ][ #  # ]:          0 :     uno::Reference< chart2::data::XDataSequence > xData = m_xInternal->createDataSequenceByRangeRepresentation(_sRangeRepresentation);
     303         [ #  # ]:          0 :     uno::Reference<beans::XPropertySet> xProp(xData,uno::UNO_QUERY);
     304 [ #  # ][ #  # ]:          0 :     const static ::rtl::OUString s_sNumberFormatKey(RTL_CONSTASCII_USTRINGPARAM("NumberFormatKey"));
         [ #  # ][ #  # ]
     305 [ #  # ][ #  # ]:          0 :     if ( xProp.is() && xProp->getPropertySetInfo()->hasPropertyByName(s_sNumberFormatKey) )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
     306                 :            :     {
     307 [ #  # ][ #  # ]:          0 :         xProp->setPropertyValue(s_sNumberFormatKey,impl_getNumberFormatKey_nothrow(_sRangeRepresentation));
                 [ #  # ]
     308                 :            :     }
     309         [ #  # ]:          0 :     return xData;
     310                 :            : }
     311                 :            : 
     312                 :          0 : uno::Sequence< uno::Sequence< rtl::OUString > > SAL_CALL DatabaseDataProvider::getComplexRowDescriptions() throw (uno::RuntimeException)
     313                 :            : {
     314                 :          0 :     return m_xComplexDescriptionAccess->getComplexRowDescriptions();
     315                 :            : }
     316                 :          0 : void SAL_CALL DatabaseDataProvider::setComplexRowDescriptions( const uno::Sequence< uno::Sequence< ::rtl::OUString > >& aRowDescriptions ) throw (uno::RuntimeException)
     317                 :            : {
     318                 :          0 :     m_xComplexDescriptionAccess->setComplexRowDescriptions(aRowDescriptions);
     319                 :          0 : }
     320                 :          0 : uno::Sequence< uno::Sequence< rtl::OUString > > SAL_CALL DatabaseDataProvider::getComplexColumnDescriptions() throw (uno::RuntimeException)
     321                 :            : {
     322                 :          0 :     return m_xComplexDescriptionAccess->getComplexColumnDescriptions();
     323                 :            : }
     324                 :          0 : void SAL_CALL DatabaseDataProvider::setComplexColumnDescriptions( const uno::Sequence< uno::Sequence< rtl::OUString > >& aColumnDescriptions ) throw (uno::RuntimeException)
     325                 :            : {
     326                 :          0 :     m_xComplexDescriptionAccess->setComplexColumnDescriptions(aColumnDescriptions);
     327                 :          0 : }
     328                 :            : // ____ XChartDataArray ____
     329                 :          0 : uno::Sequence< uno::Sequence< double > > SAL_CALL DatabaseDataProvider::getData()    throw (uno::RuntimeException)
     330                 :            : {
     331                 :          0 :     return m_xComplexDescriptionAccess->getData();
     332                 :            : }
     333                 :            : 
     334                 :          0 : void SAL_CALL DatabaseDataProvider::setData( const uno::Sequence< uno::Sequence< double > >& rDataInRows )    throw (uno::RuntimeException)
     335                 :            : {
     336                 :          0 :     m_xComplexDescriptionAccess->setData(rDataInRows);
     337                 :          0 : }
     338                 :            : 
     339                 :          0 : void SAL_CALL DatabaseDataProvider::setRowDescriptions( const uno::Sequence< rtl::OUString >& aRowDescriptions )    throw (uno::RuntimeException)
     340                 :            : {
     341                 :          0 :     m_xComplexDescriptionAccess->setRowDescriptions(aRowDescriptions);
     342                 :          0 : }
     343                 :            : 
     344                 :          0 : void SAL_CALL DatabaseDataProvider::setColumnDescriptions( const uno::Sequence< rtl::OUString >& aColumnDescriptions )    throw (uno::RuntimeException)
     345                 :            : {
     346                 :          0 :     m_xComplexDescriptionAccess->setColumnDescriptions(aColumnDescriptions);
     347                 :          0 : }
     348                 :            : 
     349                 :          0 : uno::Sequence< rtl::OUString > SAL_CALL DatabaseDataProvider::getRowDescriptions()    throw (uno::RuntimeException)
     350                 :            : {
     351                 :          0 :     return m_xComplexDescriptionAccess->getRowDescriptions();
     352                 :            : }
     353                 :            : 
     354                 :          0 : uno::Sequence< rtl::OUString > SAL_CALL DatabaseDataProvider::getColumnDescriptions()    throw (uno::RuntimeException)
     355                 :            : {
     356                 :          0 :     return m_xComplexDescriptionAccess->getColumnDescriptions();
     357                 :            : }
     358                 :            : 
     359                 :            : // ____ XChartData (base of XChartDataArray) ____
     360                 :          0 : void SAL_CALL DatabaseDataProvider::addChartDataChangeEventListener(const uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& x)    throw (uno::RuntimeException)
     361                 :            : {
     362                 :          0 :     m_xComplexDescriptionAccess->addChartDataChangeEventListener(x);
     363                 :          0 : }
     364                 :            : 
     365                 :          0 : void SAL_CALL DatabaseDataProvider::removeChartDataChangeEventListener(const uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& x)    throw (uno::RuntimeException)
     366                 :            : {
     367                 :          0 :     m_xComplexDescriptionAccess->removeChartDataChangeEventListener(x);
     368                 :          0 : }
     369                 :            : 
     370                 :          0 : double SAL_CALL DatabaseDataProvider::getNotANumber()    throw (uno::RuntimeException)
     371                 :            : {
     372                 :          0 :     return m_xComplexDescriptionAccess->getNotANumber();
     373                 :            : }
     374                 :            : 
     375                 :          0 : ::sal_Bool SAL_CALL DatabaseDataProvider::isNotANumber( double nNumber )    throw (uno::RuntimeException)
     376                 :            : {
     377                 :          0 :     return m_xComplexDescriptionAccess->isNotANumber(nNumber);
     378                 :            : }
     379                 :            : 
     380                 :            : // -----------------------------------------------------------------------------
     381                 :            : 
     382                 :          0 : uno::Reference< sheet::XRangeSelection > SAL_CALL DatabaseDataProvider::getRangeSelection() throw (uno::RuntimeException)
     383                 :            : {
     384                 :            :     // TODO: Exchange the default return implementation for "getRangeSelection" !!!
     385                 :            :     // Exchange the default return implementation.
     386                 :            :     // NOTE: Default initialized polymorphic structs can cause problems because of
     387                 :            :     // missing default initialization of primitive types of some C++ compilers or
     388                 :            :     // different Any initialization in Java and C++ polymorphic structs.
     389                 :          0 :     return uno::Reference< sheet::XRangeSelection >();
     390                 :            : }
     391                 :            : // -----------------------------------------------------------------------------
     392                 :            : // chart2::data::XRangeXMLConversion:
     393                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::convertRangeToXML(const ::rtl::OUString & _sRangeRepresentation) throw (uno::RuntimeException, lang::IllegalArgumentException)
     394                 :            : {
     395         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     396 [ #  # ][ #  # ]:          0 :     return m_xRangeConversion->convertRangeToXML(_sRangeRepresentation);
                 [ #  # ]
     397                 :            : }
     398                 :            : // -----------------------------------------------------------------------------
     399                 :            : 
     400                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::convertRangeFromXML(const ::rtl::OUString & _sXMLRange) throw (uno::RuntimeException, lang::IllegalArgumentException)
     401                 :            : {
     402         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     403 [ #  # ][ #  # ]:          0 :     return m_xRangeConversion->convertRangeFromXML(_sXMLRange);
                 [ #  # ]
     404                 :            : }
     405                 :            : // -----------------------------------------------------------------------------
     406                 :            : 
     407                 :            : // com.sun.star.beans.XPropertySet:
     408                 :          0 : uno::Reference< beans::XPropertySetInfo > SAL_CALL DatabaseDataProvider::getPropertySetInfo() throw (uno::RuntimeException)
     409                 :            : {
     410                 :          0 :     return ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::getPropertySetInfo();
     411                 :            : }
     412                 :            : // -----------------------------------------------------------------------------
     413                 :            : 
     414                 :          0 : void SAL_CALL DatabaseDataProvider::setPropertyValue(const ::rtl::OUString & aPropertyName, const uno::Any & aValue) throw (uno::RuntimeException, beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException)
     415                 :            : {
     416                 :          0 :     ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::setPropertyValue(aPropertyName, aValue);
     417                 :          0 : }
     418                 :            : // -----------------------------------------------------------------------------
     419                 :            : 
     420                 :          0 : uno::Any SAL_CALL DatabaseDataProvider::getPropertyValue(const ::rtl::OUString & aPropertyName) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
     421                 :            : {
     422                 :          0 :     return ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::getPropertyValue(aPropertyName);
     423                 :            : }
     424                 :            : // -----------------------------------------------------------------------------
     425                 :            : 
     426                 :          0 : void SAL_CALL DatabaseDataProvider::addPropertyChangeListener(const ::rtl::OUString & aPropertyName, const uno::Reference< beans::XPropertyChangeListener > & xListener) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
     427                 :            : {
     428                 :          0 :     ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::addPropertyChangeListener(aPropertyName, xListener);
     429                 :          0 : }
     430                 :            : // -----------------------------------------------------------------------------
     431                 :            : 
     432                 :          0 : void SAL_CALL DatabaseDataProvider::removePropertyChangeListener(const ::rtl::OUString & aPropertyName, const uno::Reference< beans::XPropertyChangeListener > & xListener) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
     433                 :            : {
     434                 :          0 :     ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::removePropertyChangeListener(aPropertyName, xListener);
     435                 :          0 : }
     436                 :            : // -----------------------------------------------------------------------------
     437                 :            : 
     438                 :          0 : void SAL_CALL DatabaseDataProvider::addVetoableChangeListener(const ::rtl::OUString & aPropertyName, const uno::Reference< beans::XVetoableChangeListener > & xListener) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
     439                 :            : {
     440                 :          0 :     ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::addVetoableChangeListener(aPropertyName, xListener);
     441                 :          0 : }
     442                 :            : // -----------------------------------------------------------------------------
     443                 :            : 
     444                 :          0 : void SAL_CALL DatabaseDataProvider::removeVetoableChangeListener(const ::rtl::OUString & aPropertyName, const uno::Reference< beans::XVetoableChangeListener > & xListener) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
     445                 :            : {
     446                 :          0 :     ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::removeVetoableChangeListener(aPropertyName, xListener);
     447                 :          0 : }
     448                 :            : // -----------------------------------------------------------------------------
     449                 :            : 
     450                 :            : // chart2::data::XDatabaseDataProvider:
     451                 :          0 : uno::Sequence< ::rtl::OUString > SAL_CALL DatabaseDataProvider::getMasterFields() throw (uno::RuntimeException)
     452                 :            : {
     453         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     454 [ #  # ][ #  # ]:          0 :     return m_MasterFields;
     455                 :            : }
     456                 :            : // -----------------------------------------------------------------------------
     457                 :            : 
     458                 :          0 : void SAL_CALL DatabaseDataProvider::setMasterFields(const uno::Sequence< ::rtl::OUString > & the_value) throw (uno::RuntimeException)
     459                 :            : {
     460                 :          0 :     impl_invalidateParameter_nothrow();
     461         [ #  # ]:          0 :     set(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MasterFields")),the_value,m_MasterFields);
     462                 :          0 : }
     463                 :            : // -----------------------------------------------------------------------------
     464                 :            : 
     465                 :          0 : uno::Sequence< ::rtl::OUString > SAL_CALL DatabaseDataProvider::getDetailFields() throw (uno::RuntimeException)
     466                 :            : {
     467         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     468 [ #  # ][ #  # ]:          0 :     return m_DetailFields;
     469                 :            : }
     470                 :            : // -----------------------------------------------------------------------------
     471                 :            : 
     472                 :          0 : void SAL_CALL DatabaseDataProvider::setDetailFields(const uno::Sequence< ::rtl::OUString > & the_value) throw (uno::RuntimeException)
     473                 :            : {
     474         [ #  # ]:          0 :     set(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DetailFields")),the_value,m_DetailFields);
     475                 :          0 : }
     476                 :            : // -----------------------------------------------------------------------------
     477                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::getCommand() throw (uno::RuntimeException)
     478                 :            : {
     479         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     480         [ #  # ]:          0 :     return m_Command;
     481                 :            : }
     482                 :            : // -----------------------------------------------------------------------------
     483                 :            : 
     484                 :          0 : void SAL_CALL DatabaseDataProvider::setCommand(const ::rtl::OUString & the_value) throw (uno::RuntimeException)
     485                 :            : {
     486                 :            :     {
     487         [ #  # ]:          0 :         osl::MutexGuard g(m_aMutex);
     488         [ #  # ]:          0 :         impl_invalidateParameter_nothrow();
     489 [ #  # ][ #  # ]:          0 :         m_xAggregateSet->setPropertyValue( PROPERTY_COMMAND,   uno::makeAny( the_value ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     490                 :            :     }
     491         [ #  # ]:          0 :     set(PROPERTY_COMMAND,the_value,m_Command);
     492                 :          0 : }
     493                 :            : // -----------------------------------------------------------------------------
     494                 :            : 
     495                 :          0 : ::sal_Int32 SAL_CALL DatabaseDataProvider::getCommandType() throw (uno::RuntimeException)
     496                 :            : {
     497         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     498         [ #  # ]:          0 :     return m_CommandType;
     499                 :            : }
     500                 :            : // -----------------------------------------------------------------------------
     501                 :            : 
     502                 :          0 : void SAL_CALL DatabaseDataProvider::setCommandType(::sal_Int32 the_value) throw (uno::RuntimeException)
     503                 :            : {
     504                 :            :     {
     505         [ #  # ]:          0 :         osl::MutexGuard g(m_aMutex);
     506 [ #  # ][ #  # ]:          0 :         m_xAggregateSet->setPropertyValue( PROPERTY_COMMAND_TYPE,   uno::makeAny( the_value ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     507                 :            :     }
     508         [ #  # ]:          0 :     set(PROPERTY_COMMAND_TYPE,the_value,m_CommandType);
     509                 :          0 : }
     510                 :            : // -----------------------------------------------------------------------------
     511                 :            : 
     512                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::getFilter() throw (uno::RuntimeException)
     513                 :            : {
     514         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     515 [ #  # ][ #  # ]:          0 :     return m_aFilterManager.getFilterComponent( dbtools::FilterManager::fcPublicFilter );
     516                 :            : }
     517                 :            : // -----------------------------------------------------------------------------
     518                 :            : 
     519                 :          0 : void SAL_CALL DatabaseDataProvider::setFilter(const ::rtl::OUString & the_value) throw (uno::RuntimeException)
     520                 :            : {
     521                 :            :     {
     522         [ #  # ]:          0 :         osl::MutexGuard g(m_aMutex);
     523 [ #  # ][ #  # ]:          0 :         m_aFilterManager.setFilterComponent( dbtools::FilterManager::fcPublicFilter, the_value );
     524                 :            :     }
     525         [ #  # ]:          0 :     set(PROPERTY_FILTER,the_value,m_Filter);
     526                 :          0 : }
     527                 :            : // -----------------------------------------------------------------------------
     528                 :          0 : ::sal_Bool SAL_CALL DatabaseDataProvider::getApplyFilter() throw (RuntimeException)
     529                 :            : {
     530         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     531         [ #  # ]:          0 :     return m_ApplyFilter;
     532                 :            : }
     533                 :            : // -----------------------------------------------------------------------------
     534                 :          0 : void SAL_CALL DatabaseDataProvider::setApplyFilter( ::sal_Bool the_value ) throw (RuntimeException)
     535                 :            : {
     536                 :            :     {
     537         [ #  # ]:          0 :         osl::MutexGuard g(m_aMutex);
     538 [ #  # ][ #  # ]:          0 :         m_xAggregateSet->setPropertyValue( PROPERTY_APPLYFILTER,   uno::makeAny( the_value ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     539                 :            :     }
     540         [ #  # ]:          0 :     set(PROPERTY_APPLYFILTER,the_value,m_ApplyFilter);
     541                 :          0 : }
     542                 :            : // -----------------------------------------------------------------------------
     543                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::getHavingClause() throw (uno::RuntimeException)
     544                 :            : {
     545         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     546         [ #  # ]:          0 :     return m_HavingClause;
     547                 :            : }
     548                 :            : // -----------------------------------------------------------------------------
     549                 :          0 : void SAL_CALL DatabaseDataProvider::setHavingClause( const ::rtl::OUString& the_value ) throw (beans::UnknownPropertyException, uno::RuntimeException)
     550                 :            : {
     551                 :            :     {
     552         [ #  # ]:          0 :         osl::MutexGuard g(m_aMutex);
     553 [ #  # ][ #  # ]:          0 :         m_xAggregateSet->setPropertyValue( PROPERTY_HAVING_CLAUSE,   uno::makeAny( the_value ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     554                 :            :     }
     555         [ #  # ]:          0 :     set(PROPERTY_HAVING_CLAUSE,the_value,m_HavingClause);
     556                 :          0 : }
     557                 :            : // -----------------------------------------------------------------------------
     558                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::getGroupBy() throw (uno::RuntimeException)
     559                 :            : {
     560         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     561         [ #  # ]:          0 :     return m_GroupBy;
     562                 :            : }
     563                 :            : // -----------------------------------------------------------------------------
     564                 :          0 : void SAL_CALL DatabaseDataProvider::setGroupBy( const ::rtl::OUString& the_value ) throw (beans::UnknownPropertyException, uno::RuntimeException)
     565                 :            : {
     566                 :            :     {
     567         [ #  # ]:          0 :         osl::MutexGuard g(m_aMutex);
     568 [ #  # ][ #  # ]:          0 :         m_xAggregateSet->setPropertyValue( PROPERTY_GROUP_BY,   uno::makeAny( the_value ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     569                 :            :     }
     570         [ #  # ]:          0 :     set(PROPERTY_GROUP_BY,the_value,m_GroupBy);
     571                 :          0 : }
     572                 :            : // -----------------------------------------------------------------------------
     573                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::getOrder() throw (uno::RuntimeException)
     574                 :            : {
     575         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     576         [ #  # ]:          0 :     return m_Order;
     577                 :            : }
     578                 :            : // -----------------------------------------------------------------------------
     579                 :          0 : void SAL_CALL DatabaseDataProvider::setOrder( const ::rtl::OUString& the_value ) throw (uno::RuntimeException)
     580                 :            : {
     581                 :            :     {
     582         [ #  # ]:          0 :         osl::MutexGuard g(m_aMutex);
     583 [ #  # ][ #  # ]:          0 :         m_xAggregateSet->setPropertyValue( PROPERTY_ORDER,   uno::makeAny( the_value ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     584                 :            :     }
     585         [ #  # ]:          0 :     set(PROPERTY_ORDER,the_value,m_Order);
     586                 :          0 : }
     587                 :            : // -----------------------------------------------------------------------------
     588                 :          0 : ::sal_Bool SAL_CALL DatabaseDataProvider::getEscapeProcessing() throw (uno::RuntimeException)
     589                 :            : {
     590         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     591         [ #  # ]:          0 :     return m_EscapeProcessing;
     592                 :            : }
     593                 :            : // -----------------------------------------------------------------------------
     594                 :            : 
     595                 :          0 : void SAL_CALL DatabaseDataProvider::setEscapeProcessing(::sal_Bool the_value) throw (uno::RuntimeException)
     596                 :            : {
     597         [ #  # ]:          0 :     set(PROPERTY_ESCAPE_PROCESSING,the_value,m_EscapeProcessing);
     598                 :          0 : }
     599                 :            : // -----------------------------------------------------------------------------
     600                 :          0 : ::sal_Int32 SAL_CALL DatabaseDataProvider::getRowLimit() throw (uno::RuntimeException)
     601                 :            : {
     602         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     603         [ #  # ]:          0 :     return m_RowLimit;
     604                 :            : }
     605                 :            : // -----------------------------------------------------------------------------
     606                 :            : 
     607                 :          0 : void SAL_CALL DatabaseDataProvider::setRowLimit(::sal_Int32 the_value) throw (uno::RuntimeException)
     608                 :            : {
     609         [ #  # ]:          0 :     set(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RowLimit")),the_value,m_RowLimit);
     610                 :          0 : }
     611                 :            : // -----------------------------------------------------------------------------
     612                 :          0 : uno::Reference< sdbc::XConnection > SAL_CALL DatabaseDataProvider::getActiveConnection() throw (uno::RuntimeException)
     613                 :            : {
     614         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     615         [ #  # ]:          0 :     return m_xActiveConnection;
     616                 :            : }
     617                 :            : // -----------------------------------------------------------------------------
     618                 :            : 
     619                 :          0 : void SAL_CALL DatabaseDataProvider::setActiveConnection(const uno::Reference< sdbc::XConnection > & the_value) throw (uno::RuntimeException, lang::IllegalArgumentException)
     620                 :            : {
     621         [ #  # ]:          0 :     if ( !the_value.is() )
     622         [ #  # ]:          0 :         throw lang::IllegalArgumentException();
     623         [ #  # ]:          0 :     set(PROPERTY_ACTIVE_CONNECTION,the_value,m_xActiveConnection);
     624                 :          0 : }
     625                 :            : // -----------------------------------------------------------------------------
     626                 :          0 : ::rtl::OUString SAL_CALL DatabaseDataProvider::getDataSourceName() throw (uno::RuntimeException)
     627                 :            : {
     628         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
     629         [ #  # ]:          0 :     return m_DataSourceName;
     630                 :            : }
     631                 :            : // -----------------------------------------------------------------------------
     632                 :            : 
     633                 :          0 : void SAL_CALL DatabaseDataProvider::setDataSourceName(const ::rtl::OUString& the_value) throw (uno::RuntimeException)
     634                 :            : {
     635         [ #  # ]:          0 :     set(PROPERTY_DATASOURCENAME,the_value,m_DataSourceName);
     636                 :          0 : }
     637                 :            : // -----------------------------------------------------------------------------
     638                 :          0 : void DatabaseDataProvider::impl_executeRowSet_throw(::osl::ResettableMutexGuard& _rClearForNotifies)
     639                 :            : {
     640         [ #  # ]:          0 :     if ( impl_fillParameters_nothrow(_rClearForNotifies) )
     641                 :          0 :         m_xRowSet->execute();
     642                 :          0 : }
     643                 :            : 
     644                 :            : // -----------------------------------------------------------------------------
     645                 :            : namespace
     646                 :            : {
     647                 :          0 :     struct ColumnDescription
     648                 :            :     {
     649                 :            :         ::rtl::OUString sName;
     650                 :            :         sal_Int32       nResultSetPosition;
     651                 :            :         sal_Int32       nDataType;
     652                 :            : 
     653                 :          0 :         ColumnDescription()
     654                 :            :             :sName()
     655                 :            :             ,nResultSetPosition( 0 )
     656                 :          0 :             ,nDataType( sdbc::DataType::VARCHAR )
     657                 :            :         {
     658                 :          0 :         }
     659                 :          0 :         explicit ColumnDescription( const ::rtl::OUString& i_rName )
     660                 :            :             :sName( i_rName )
     661                 :            :             ,nResultSetPosition( 0 )
     662                 :          0 :             ,nDataType( sdbc::DataType::VARCHAR )
     663                 :            :         {
     664                 :          0 :         }
     665                 :            :     };
     666                 :            : 
     667                 :            :     struct CreateColumnDescription : public ::std::unary_function< ::rtl::OUString, ColumnDescription >
     668                 :            :     {
     669                 :          0 :         ColumnDescription operator()( const ::rtl::OUString& i_rName )
     670                 :            :         {
     671                 :          0 :             return ColumnDescription( i_rName );
     672                 :            :         }
     673                 :            :     };
     674                 :            : 
     675                 :            :     struct SelectColumnName : public ::std::unary_function< ColumnDescription, ::rtl::OUString >
     676                 :            :     {
     677                 :          0 :         const ::rtl::OUString& operator()( const ColumnDescription& i_rColumn )
     678                 :            :         {
     679                 :          0 :             return i_rColumn.sName;
     680                 :            :         }
     681                 :            :     };
     682                 :            : }
     683                 :            : 
     684                 :            : // -----------------------------------------------------------------------------
     685                 :          0 : void DatabaseDataProvider::impl_fillInternalDataProvider_throw(sal_Bool _bHasCategories,const uno::Sequence< ::rtl::OUString >& i_aColumnNames)
     686                 :            : {
     687                 :            :     // clear the data before fill the new one
     688         [ #  # ]:          0 :     uno::Reference< sdbcx::XColumnsSupplier > xColSup(m_xRowSet,uno::UNO_QUERY_THROW);
     689 [ #  # ][ #  # ]:          0 :     uno::Reference< container::XNameAccess > xColumns( xColSup->getColumns(), uno::UNO_SET_THROW );
                 [ #  # ]
     690 [ #  # ][ #  # ]:          0 :     const uno::Sequence< ::rtl::OUString > aRowSetColumnNames( xColumns->getElementNames() );
     691                 :            : 
     692                 :            :     typedef ::std::vector< ColumnDescription > ColumnDescriptions;
     693         [ #  # ]:          0 :     ColumnDescriptions aColumns;
     694                 :          0 :     bool bFirstColumnIsCategory = _bHasCategories;
     695         [ #  # ]:          0 :     if ( i_aColumnNames.getLength() )
     696                 :            :     {
     697                 :            :         // some normalizations ...
     698         [ #  # ]:          0 :         uno::Sequence< ::rtl::OUString > aImposedColumnNames( i_aColumnNames );
     699                 :            : 
     700                 :            :         // strangely, there exist documents where the ColumnDescriptions end with a number of empty strings. /me
     701                 :            :         // thinks they're generated when you have a chart based on a result set with n columns, but remove some
     702                 :            :         // of those columns from the chart - it looks like a bug in the report XML export to me.
     703                 :            :         // So, get rid of the "trailing" empty columns
     704                 :          0 :         sal_Int32 nLastNonEmptyColName = aImposedColumnNames.getLength() - 1;
     705         [ #  # ]:          0 :         for ( ; nLastNonEmptyColName >= 0; --nLastNonEmptyColName )
     706                 :            :         {
     707 [ #  # ][ #  # ]:          0 :             if ( !aImposedColumnNames[ nLastNonEmptyColName ].isEmpty() )
     708                 :          0 :                 break;
     709                 :            :         }
     710         [ #  # ]:          0 :         aImposedColumnNames.realloc( nLastNonEmptyColName + 1 );
     711                 :            : 
     712                 :            :         // second, for X-Y-charts the ColumnDescriptions exported by chart miss the name of the first (non-category)
     713                 :            :         // column. This, this results in a ColumnDescriptions array like <"", "col2", "col3">, where you'd expect
     714                 :            :         // <"col1", "col2", "col3">.
     715                 :            :         // Fix this with some heuristics:
     716 [ #  # ][ #  # ]:          0 :         if ( ( aImposedColumnNames.getLength() > 0 ) && ( !aImposedColumnNames[0].isEmpty() ) )
         [ #  # ][ #  # ]
     717                 :            :         {
     718         [ #  # ]:          0 :             const sal_Int32 nAssumedRowSetColumnIndex = _bHasCategories ? 1 : 0;
     719         [ #  # ]:          0 :             if ( nAssumedRowSetColumnIndex < aRowSetColumnNames.getLength() )
     720         [ #  # ]:          0 :                 aImposedColumnNames[0] = aRowSetColumnNames[ nAssumedRowSetColumnIndex ];
     721                 :            :         }
     722                 :            : 
     723                 :          0 :         const sal_Int32 nCount = aImposedColumnNames.getLength();
     724         [ #  # ]:          0 :         for ( sal_Int32 i = 0 ; i < nCount; ++i )
     725                 :            :         {
     726         [ #  # ]:          0 :             const ::rtl::OUString sColumnName( aImposedColumnNames[i] );
     727 [ #  # ][ #  # ]:          0 :             if ( !xColumns->hasByName( sColumnName ) )
                 [ #  # ]
     728                 :          0 :                 continue;
     729                 :            : 
     730 [ #  # ][ #  # ]:          0 :             if ( _bHasCategories && aColumns.empty() )
                 [ #  # ]
     731                 :            :             {
     732         [ #  # ]:          0 :                 if ( aRowSetColumnNames.getLength() )
     733         [ #  # ]:          0 :                     aColumns.push_back( ColumnDescription( aRowSetColumnNames[0] ) );
     734                 :            :                 else
     735         [ #  # ]:          0 :                     aColumns.push_back( ColumnDescription( sColumnName ) );
     736                 :          0 :                 bFirstColumnIsCategory = true;
     737                 :            :             }
     738 [ #  # ][ #  # ]:          0 :             aColumns.push_back( ColumnDescription( sColumnName ) );
     739         [ #  # ]:          0 :         }
     740                 :            :     }
     741         [ #  # ]:          0 :     if ( aColumns.empty() )
     742                 :            :     {
     743         [ #  # ]:          0 :         aColumns.resize( aRowSetColumnNames.getLength() );
     744                 :            :         ::std::transform(
     745                 :            :             aRowSetColumnNames.getConstArray(),
     746                 :          0 :             aRowSetColumnNames.getConstArray() + aRowSetColumnNames.getLength(),
     747                 :            :             aColumns.begin(),
     748                 :            :             CreateColumnDescription()
     749         [ #  # ]:          0 :        );
     750                 :            :     }
     751                 :            : 
     752                 :            :     // fill the data
     753         [ #  # ]:          0 :     uno::Reference< sdbc::XResultSet> xRes( m_xRowSet, uno::UNO_QUERY_THROW );
     754         [ #  # ]:          0 :     uno::Reference< sdbc::XRow> xRow( m_xRowSet,uno::UNO_QUERY_THROW );
     755         [ #  # ]:          0 :     uno::Reference< sdbc::XResultSetMetaDataSupplier > xSuppMeta( m_xRowSet,uno::UNO_QUERY_THROW );
     756 [ #  # ][ #  # ]:          0 :     uno::Reference< sdbc::XResultSetMetaData > xResultSetMetaData( xSuppMeta->getMetaData(), uno::UNO_SET_THROW );
                 [ #  # ]
     757         [ #  # ]:          0 :     uno::Reference< sdbc::XColumnLocate > xColumnLocate( m_xRowSet, uno::UNO_QUERY_THROW );
     758                 :            : 
     759 [ #  # ][ #  # ]:          0 :     for (   ColumnDescriptions::iterator col = aColumns.begin();
     760                 :          0 :             col != aColumns.end();
     761                 :            :             ++col
     762                 :            :          )
     763                 :            :     {
     764 [ #  # ][ #  # ]:          0 :         col->nResultSetPosition = xColumnLocate->findColumn( col->sName );
     765                 :            : 
     766 [ #  # ][ #  # ]:          0 :         const uno::Reference< beans::XPropertySet > xColumn( xColumns->getByName( col->sName ), uno::UNO_QUERY_THROW );
                 [ #  # ]
     767 [ #  # ][ #  # ]:          0 :         const uno::Any aNumberFormat( xColumn->getPropertyValue( PROPERTY_NUMBERFORMAT ) );
                 [ #  # ]
     768 [ #  # ][ #  # ]:          0 :         OSL_VERIFY( xColumn->getPropertyValue( PROPERTY_TYPE ) >>= col->nDataType );
                 [ #  # ]
     769                 :            : 
     770         [ #  # ]:          0 :         const sal_Int32 columnIndex = col - aColumns.begin();
     771                 :          0 :         const ::rtl::OUString sRangeName = ::rtl::OUString::valueOf( columnIndex );
     772         [ #  # ]:          0 :         m_aNumberFormats.insert( ::std::map< ::rtl::OUString, uno::Any >::value_type( sRangeName, aNumberFormat ) );
     773                 :          0 :     }
     774                 :            : 
     775         [ #  # ]:          0 :     ::std::vector< ::rtl::OUString > aRowLabels;
     776         [ #  # ]:          0 :     ::std::vector< ::std::vector< double > > aDataValues;
     777                 :          0 :     sal_Int32 nRowCount = 0;
     778                 :          0 :     ::connectivity::ORowSetValue aValue;
     779 [ #  # ][ #  # ]:          0 :     while( xRes->next() && (!m_RowLimit || nRowCount < m_RowLimit) )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     780                 :            :     {
     781                 :          0 :         ++nRowCount;
     782                 :            : 
     783         [ #  # ]:          0 :         aValue.fill( aColumns[0].nResultSetPosition, aColumns[0].nDataType, xRow );
     784 [ #  # ][ #  # ]:          0 :         aRowLabels.push_back( aValue.getString() );
     785                 :            : 
     786         [ #  # ]:          0 :         ::std::vector< double > aRow;
     787 [ #  # ][ #  # ]:          0 :         for (   ColumnDescriptions::const_iterator col = aColumns.begin();
                 [ #  # ]
     788                 :          0 :                 col != aColumns.end();
     789                 :            :                 ++col
     790                 :            :             )
     791                 :            :         {
     792 [ #  # ][ #  # ]:          0 :             if ( bFirstColumnIsCategory && ( col == aColumns.begin() )  )
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     793                 :          0 :                 continue;
     794                 :            : 
     795         [ #  # ]:          0 :             aValue.fill( col->nResultSetPosition, col->nDataType, xRow );
     796         [ #  # ]:          0 :             if ( aValue.isNull() )
     797                 :            :             {
     798                 :            :                 double nValue;
     799                 :          0 :                 ::rtl::math::setNan( &nValue );
     800         [ #  # ]:          0 :                 aRow.push_back( nValue );
     801                 :            :             }
     802                 :            :             else
     803 [ #  # ][ #  # ]:          0 :                 aRow.push_back( aValue.getDouble() );
     804                 :            :         }
     805                 :            : 
     806         [ #  # ]:          0 :         aDataValues.push_back( aRow );
     807                 :          0 :     }
     808                 :            : 
     809                 :            :     // insert default data when no rows exist
     810         [ #  # ]:          0 :     if ( !nRowCount )
     811                 :            :     {
     812                 :          0 :         nRowCount = 3;
     813                 :            :         const double fDefaultData[ ] =
     814                 :            :             { 9.10, 3.20, 4.54,
     815                 :            :               2.40, 8.80, 9.65,
     816                 :            :               3.10, 1.50, 3.70,
     817                 :          0 :               4.30, 9.02, 6.20 };
     818         [ #  # ]:          0 :         for(sal_Int32 h = 0,k = 0; h < nRowCount; ++h,++k )
     819                 :            :         {
     820         [ #  # ]:          0 :             aRowLabels.push_back(::rtl::OUString::valueOf(h+1));
     821         [ #  # ]:          0 :             ::std::vector< double > aRow;
     822                 :          0 :             const sal_Int32 nSize = sizeof(fDefaultData)/sizeof(fDefaultData[0]);
     823         [ #  # ]:          0 :             for (size_t j = 0; j < (aColumns.size()-1); ++j,++k)
     824                 :            :             {
     825         [ #  # ]:          0 :                 if ( k >= nSize )
     826                 :          0 :                     k = 0;
     827         [ #  # ]:          0 :                 aRow.push_back(fDefaultData[k]);
     828                 :            :             }
     829         [ #  # ]:          0 :             aDataValues.push_back(aRow);
     830                 :          0 :         }
     831                 :            :     }
     832                 :            : 
     833         [ #  # ]:          0 :     uno::Reference< chart::XChartDataArray> xData(m_xInternal,uno::UNO_QUERY);
     834 [ #  # ][ #  # ]:          0 :     xData->setRowDescriptions(uno::Sequence< ::rtl::OUString >(&(*aRowLabels.begin()),aRowLabels.size()));
         [ #  # ][ #  # ]
     835                 :            : 
     836         [ #  # ]:          0 :     const size_t nOffset = bFirstColumnIsCategory ? 1 : 0;
     837         [ #  # ]:          0 :     uno::Sequence< ::rtl::OUString > aColumnDescriptions( aColumns.size() - nOffset );
     838                 :            :     ::std::transform(
     839                 :            :         aColumns.begin() + nOffset,
     840                 :            :         aColumns.end(),
     841                 :            :         aColumnDescriptions.getArray(),
     842                 :            :         SelectColumnName()
     843 [ #  # ][ #  # ]:          0 :     );
                 [ #  # ]
     844 [ #  # ][ #  # ]:          0 :     xData->setColumnDescriptions( aColumnDescriptions );
     845                 :            : 
     846         [ #  # ]:          0 :     uno::Sequence< uno::Sequence< double > > aData(aDataValues.size());
     847         [ #  # ]:          0 :     uno::Sequence< double >* pDataIter  = aData.getArray();
     848                 :          0 :     uno::Sequence< double >* pDataEnd   = pDataIter + aData.getLength();
     849         [ #  # ]:          0 :     for(sal_Int32 i= 0;pDataIter != pDataEnd; ++pDataIter,++i )
     850                 :            :     {
     851 [ #  # ][ #  # ]:          0 :         if ( !aDataValues[i].empty() )
     852 [ #  # ][ #  # ]:          0 :             *pDataIter = uno::Sequence< double >(&(*(aDataValues[i]).begin()),(aDataValues[i]).size());
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     853                 :            :     }
     854 [ #  # ][ #  # ]:          0 :     xData->setData(aData);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     855                 :          0 : }
     856                 :            : // -----------------------------------------------------------------------------
     857                 :          0 : void DatabaseDataProvider::impl_fillRowSet_throw()
     858                 :            : {
     859 [ #  # ][ #  # ]:          0 :     m_xAggregateSet->setPropertyValue( PROPERTY_FILTER,   uno::makeAny( getFilter() ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     860         [ #  # ]:          0 :     uno::Reference< sdbc::XParameters> xParam(m_xRowSet,uno::UNO_QUERY_THROW);
     861 [ #  # ][ #  # ]:          0 :     xParam->clearParameters( );
     862                 :          0 : }
     863                 :            : // -----------------------------------------------------------------------------
     864                 :          0 : bool DatabaseDataProvider::impl_fillParameters_nothrow( ::osl::ResettableMutexGuard& _rClearForNotifies)
     865                 :            : {
     866                 :            :     // do we have to fill the parameters again?
     867         [ #  # ]:          0 :     if ( !m_aParameterManager.isUpToDate() )
     868                 :          0 :         m_aParameterManager.updateParameterInfo( m_aFilterManager );
     869                 :            : 
     870         [ #  # ]:          0 :     if ( m_aParameterManager.isUpToDate() )
     871                 :          0 :         return m_aParameterManager.fillParameterValues( m_xHandler, _rClearForNotifies );
     872                 :            : 
     873                 :          0 :     return true;
     874                 :            : }
     875                 :            : // com::sun::star::sdbc::XParameters
     876                 :            : //------------------------------------------------------------------------------
     877                 :          0 : void SAL_CALL DatabaseDataProvider::setNull(sal_Int32 parameterIndex, sal_Int32 sqlType) throw( SQLException, RuntimeException )
     878                 :            : {
     879                 :          0 :     m_aParameterManager.setNull(parameterIndex, sqlType);
     880                 :          0 : }
     881                 :            : 
     882                 :            : //------------------------------------------------------------------------------
     883                 :          0 : void SAL_CALL DatabaseDataProvider::setObjectNull(sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName) throw( SQLException, RuntimeException )
     884                 :            : {
     885                 :          0 :     m_aParameterManager.setObjectNull(parameterIndex, sqlType, typeName);
     886                 :          0 : }
     887                 :            : 
     888                 :            : //------------------------------------------------------------------------------
     889                 :          0 : void SAL_CALL DatabaseDataProvider::setBoolean(sal_Int32 parameterIndex, sal_Bool x) throw( SQLException, RuntimeException )
     890                 :            : {
     891                 :          0 :     m_aParameterManager.setBoolean(parameterIndex, x);
     892                 :          0 : }
     893                 :            : 
     894                 :            : //------------------------------------------------------------------------------
     895                 :          0 : void SAL_CALL DatabaseDataProvider::setByte(sal_Int32 parameterIndex, sal_Int8 x) throw( SQLException, RuntimeException )
     896                 :            : {
     897                 :          0 :     m_aParameterManager.setByte(parameterIndex, x);
     898                 :          0 : }
     899                 :            : 
     900                 :            : //------------------------------------------------------------------------------
     901                 :          0 : void SAL_CALL DatabaseDataProvider::setShort(sal_Int32 parameterIndex, sal_Int16 x) throw( SQLException, RuntimeException )
     902                 :            : {
     903                 :          0 :     m_aParameterManager.setShort(parameterIndex, x);
     904                 :          0 : }
     905                 :            : 
     906                 :            : //------------------------------------------------------------------------------
     907                 :          0 : void SAL_CALL DatabaseDataProvider::setInt(sal_Int32 parameterIndex, sal_Int32 x) throw( SQLException, RuntimeException )
     908                 :            : {
     909                 :          0 :     m_aParameterManager.setInt(parameterIndex, x);
     910                 :          0 : }
     911                 :            : 
     912                 :            : //------------------------------------------------------------------------------
     913                 :          0 : void SAL_CALL DatabaseDataProvider::setLong(sal_Int32 parameterIndex, sal_Int64 x) throw( SQLException, RuntimeException )
     914                 :            : {
     915                 :          0 :     m_aParameterManager.setLong(parameterIndex, x);
     916                 :          0 : }
     917                 :            : 
     918                 :            : //------------------------------------------------------------------------------
     919                 :          0 : void SAL_CALL DatabaseDataProvider::setFloat(sal_Int32 parameterIndex, float x) throw( SQLException, RuntimeException )
     920                 :            : {
     921                 :          0 :     m_aParameterManager.setFloat(parameterIndex, x);
     922                 :          0 : }
     923                 :            : 
     924                 :            : //------------------------------------------------------------------------------
     925                 :          0 : void SAL_CALL DatabaseDataProvider::setDouble(sal_Int32 parameterIndex, double x) throw( SQLException, RuntimeException )
     926                 :            : {
     927                 :          0 :     m_aParameterManager.setDouble(parameterIndex, x);
     928                 :          0 : }
     929                 :            : 
     930                 :            : //------------------------------------------------------------------------------
     931                 :          0 : void SAL_CALL DatabaseDataProvider::setString(sal_Int32 parameterIndex, const ::rtl::OUString& x) throw( SQLException, RuntimeException )
     932                 :            : {
     933                 :          0 :     m_aParameterManager.setString(parameterIndex, x);
     934                 :          0 : }
     935                 :            : 
     936                 :            : //------------------------------------------------------------------------------
     937                 :          0 : void SAL_CALL DatabaseDataProvider::setBytes(sal_Int32 parameterIndex, const uno::Sequence< sal_Int8 >& x) throw( SQLException, RuntimeException )
     938                 :            : {
     939                 :          0 :     m_aParameterManager.setBytes(parameterIndex, x);
     940                 :          0 : }
     941                 :            : 
     942                 :            : //------------------------------------------------------------------------------
     943                 :          0 : void SAL_CALL DatabaseDataProvider::setDate(sal_Int32 parameterIndex, const util::Date& x) throw( SQLException, RuntimeException )
     944                 :            : {
     945                 :          0 :     m_aParameterManager.setDate(parameterIndex, x);
     946                 :          0 : }
     947                 :            : 
     948                 :            : //------------------------------------------------------------------------------
     949                 :          0 : void SAL_CALL DatabaseDataProvider::setTime(sal_Int32 parameterIndex, const util::Time& x) throw( SQLException, RuntimeException )
     950                 :            : {
     951                 :          0 :     m_aParameterManager.setTime(parameterIndex, x);
     952                 :          0 : }
     953                 :            : 
     954                 :            : //------------------------------------------------------------------------------
     955                 :          0 : void SAL_CALL DatabaseDataProvider::setTimestamp(sal_Int32 parameterIndex, const util::DateTime& x) throw( SQLException, RuntimeException )
     956                 :            : {
     957                 :          0 :     m_aParameterManager.setTimestamp(parameterIndex, x);
     958                 :          0 : }
     959                 :            : 
     960                 :            : //------------------------------------------------------------------------------
     961                 :          0 : void SAL_CALL DatabaseDataProvider::setBinaryStream(sal_Int32 parameterIndex, const uno::Reference<io::XInputStream>& x, sal_Int32 length) throw( SQLException, RuntimeException )
     962                 :            : {
     963                 :          0 :     m_aParameterManager.setBinaryStream(parameterIndex, x, length);
     964                 :          0 : }
     965                 :            : 
     966                 :            : //------------------------------------------------------------------------------
     967                 :          0 : void SAL_CALL DatabaseDataProvider::setCharacterStream(sal_Int32 parameterIndex, const uno::Reference<io::XInputStream>& x, sal_Int32 length) throw( SQLException, RuntimeException )
     968                 :            : {
     969                 :          0 :     m_aParameterManager.setCharacterStream(parameterIndex, x, length);
     970                 :          0 : }
     971                 :            : 
     972                 :            : //------------------------------------------------------------------------------
     973                 :          0 : void SAL_CALL DatabaseDataProvider::setObjectWithInfo(sal_Int32 parameterIndex, const uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale) throw( SQLException, RuntimeException )
     974                 :            : {
     975                 :          0 :     m_aParameterManager.setObjectWithInfo(parameterIndex, x, targetSqlType, scale);
     976                 :          0 : }
     977                 :            : 
     978                 :            : //------------------------------------------------------------------------------
     979                 :          0 : void SAL_CALL DatabaseDataProvider::setObject(sal_Int32 parameterIndex, const uno::Any& x) throw( SQLException, RuntimeException )
     980                 :            : {
     981                 :          0 :     m_aParameterManager.setObject(parameterIndex, x);
     982                 :          0 : }
     983                 :            : 
     984                 :            : //------------------------------------------------------------------------------
     985                 :          0 : void SAL_CALL DatabaseDataProvider::setRef(sal_Int32 parameterIndex, const uno::Reference<sdbc::XRef>& x) throw( SQLException, RuntimeException )
     986                 :            : {
     987                 :          0 :     m_aParameterManager.setRef(parameterIndex, x);
     988                 :          0 : }
     989                 :            : 
     990                 :            : //------------------------------------------------------------------------------
     991                 :          0 : void SAL_CALL DatabaseDataProvider::setBlob(sal_Int32 parameterIndex, const uno::Reference<sdbc::XBlob>& x) throw( SQLException, RuntimeException )
     992                 :            : {
     993                 :          0 :     m_aParameterManager.setBlob(parameterIndex, x);
     994                 :          0 : }
     995                 :            : 
     996                 :            : //------------------------------------------------------------------------------
     997                 :          0 : void SAL_CALL DatabaseDataProvider::setClob(sal_Int32 parameterIndex, const uno::Reference<sdbc::XClob>& x) throw( SQLException, RuntimeException )
     998                 :            : {
     999                 :          0 :     m_aParameterManager.setClob(parameterIndex, x);
    1000                 :          0 : }
    1001                 :            : 
    1002                 :            : //------------------------------------------------------------------------------
    1003                 :          0 : void SAL_CALL DatabaseDataProvider::setArray(sal_Int32 parameterIndex, const Reference<sdbc::XArray>& x) throw( SQLException, RuntimeException )
    1004                 :            : {
    1005                 :          0 :     m_aParameterManager.setArray(parameterIndex, x);
    1006                 :          0 : }
    1007                 :            : 
    1008                 :            : //------------------------------------------------------------------------------
    1009                 :          0 : void SAL_CALL DatabaseDataProvider::clearParameters() throw( SQLException, RuntimeException )
    1010                 :            : {
    1011                 :          0 :     m_aParameterManager.clearParameters();
    1012                 :          0 : }
    1013                 :            : //==============================================================================
    1014                 :            : // com::sun::star::sdbc::XRowSet
    1015                 :            : //------------------------------------------------------------------------------
    1016                 :          0 : void SAL_CALL DatabaseDataProvider::execute() throw( SQLException, RuntimeException )
    1017                 :            : {
    1018         [ #  # ]:          0 :     uno::Sequence< beans::PropertyValue > aEmpty;
    1019 [ #  # ][ #  # ]:          0 :     createDataSource(aEmpty);
    1020                 :          0 : }
    1021                 :            : //------------------------------------------------------------------------------
    1022                 :          0 : void SAL_CALL DatabaseDataProvider::addRowSetListener(const uno::Reference<sdbc::XRowSetListener>& _rListener) throw( RuntimeException )
    1023                 :            : {
    1024         [ #  # ]:          0 :     if (m_xRowSet.is())
    1025                 :          0 :         m_xRowSet->addRowSetListener(_rListener);
    1026                 :          0 : }
    1027                 :            : 
    1028                 :            : //------------------------------------------------------------------------------
    1029                 :          0 : void SAL_CALL DatabaseDataProvider::removeRowSetListener(const uno::Reference<sdbc::XRowSetListener>& _rListener) throw( RuntimeException )
    1030                 :            : {
    1031         [ #  # ]:          0 :     if (m_xRowSet.is())
    1032                 :          0 :         m_xRowSet->removeRowSetListener(_rListener);
    1033                 :          0 : }
    1034                 :            : //==============================================================================
    1035                 :            : // com::sun::star::sdbc::XResultSet
    1036                 :            : //------------------------------------------------------------------------------
    1037                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::next() throw( SQLException, RuntimeException )
    1038                 :            : {
    1039                 :          0 :     return m_xRowSet->next();
    1040                 :            : }
    1041                 :            : 
    1042                 :            : //------------------------------------------------------------------------------
    1043                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::isBeforeFirst() throw( SQLException, RuntimeException )
    1044                 :            : {
    1045                 :          0 :     return m_xRowSet->isBeforeFirst();
    1046                 :            : }
    1047                 :            : 
    1048                 :            : //------------------------------------------------------------------------------
    1049                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::isAfterLast() throw( SQLException, RuntimeException )
    1050                 :            : {
    1051                 :          0 :     return m_xRowSet->isAfterLast();
    1052                 :            : }
    1053                 :            : 
    1054                 :            : //------------------------------------------------------------------------------
    1055                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::isFirst() throw( SQLException, RuntimeException )
    1056                 :            : {
    1057                 :          0 :     return m_xRowSet->isFirst();
    1058                 :            : }
    1059                 :            : 
    1060                 :            : //------------------------------------------------------------------------------
    1061                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::isLast() throw( SQLException, RuntimeException )
    1062                 :            : {
    1063                 :          0 :     return m_xRowSet->isLast();
    1064                 :            : }
    1065                 :            : 
    1066                 :            : //------------------------------------------------------------------------------
    1067                 :          0 : void SAL_CALL DatabaseDataProvider::beforeFirst() throw( SQLException, RuntimeException )
    1068                 :            : {
    1069                 :          0 :     m_xRowSet->beforeFirst();
    1070                 :          0 : }
    1071                 :            : 
    1072                 :            : //------------------------------------------------------------------------------
    1073                 :          0 : void SAL_CALL DatabaseDataProvider::afterLast() throw( SQLException, RuntimeException )
    1074                 :            : {
    1075                 :          0 :     m_xRowSet->afterLast();
    1076                 :          0 : }
    1077                 :            : 
    1078                 :            : //------------------------------------------------------------------------------
    1079                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::first() throw( SQLException, RuntimeException )
    1080                 :            : {
    1081                 :          0 :     return m_xRowSet->first();
    1082                 :            : }
    1083                 :            : 
    1084                 :            : //------------------------------------------------------------------------------
    1085                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::last() throw( SQLException, RuntimeException )
    1086                 :            : {
    1087                 :          0 :     return m_xRowSet->last();
    1088                 :            : }
    1089                 :            : 
    1090                 :            : //------------------------------------------------------------------------------
    1091                 :          0 : sal_Int32 SAL_CALL DatabaseDataProvider::getRow() throw( SQLException, RuntimeException )
    1092                 :            : {
    1093                 :          0 :     return m_xRowSet->getRow();
    1094                 :            : }
    1095                 :            : 
    1096                 :            : //------------------------------------------------------------------------------
    1097                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::absolute(sal_Int32 row) throw( SQLException, RuntimeException )
    1098                 :            : {
    1099                 :          0 :     return m_xRowSet->absolute(row);
    1100                 :            : }
    1101                 :            : 
    1102                 :            : //------------------------------------------------------------------------------
    1103                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::relative(sal_Int32 rows) throw( SQLException, RuntimeException )
    1104                 :            : {
    1105                 :          0 :     return m_xRowSet->relative(rows);
    1106                 :            : }
    1107                 :            : 
    1108                 :            : //------------------------------------------------------------------------------
    1109                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::previous() throw( SQLException, RuntimeException )
    1110                 :            : {
    1111                 :          0 :     return m_xRowSet->previous();
    1112                 :            : }
    1113                 :            : 
    1114                 :            : //------------------------------------------------------------------------------
    1115                 :          0 : void SAL_CALL DatabaseDataProvider::refreshRow() throw( SQLException, RuntimeException )
    1116                 :            : {
    1117                 :          0 :     m_xRowSet->refreshRow();
    1118                 :          0 : }
    1119                 :            : 
    1120                 :            : //------------------------------------------------------------------------------
    1121                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::rowUpdated() throw( SQLException, RuntimeException )
    1122                 :            : {
    1123                 :          0 :     return m_xRowSet->rowUpdated();
    1124                 :            : }
    1125                 :            : 
    1126                 :            : //------------------------------------------------------------------------------
    1127                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::rowInserted() throw( SQLException, RuntimeException )
    1128                 :            : {
    1129                 :          0 :     return m_xRowSet->rowInserted();
    1130                 :            : }
    1131                 :            : 
    1132                 :            : //------------------------------------------------------------------------------
    1133                 :          0 : sal_Bool SAL_CALL DatabaseDataProvider::rowDeleted() throw( SQLException, RuntimeException )
    1134                 :            : {
    1135                 :          0 :     return m_xRowSet->rowDeleted();
    1136                 :            : }
    1137                 :            : 
    1138                 :            : //------------------------------------------------------------------------------
    1139                 :          0 : uno::Reference< uno::XInterface > SAL_CALL DatabaseDataProvider::getStatement() throw( SQLException, RuntimeException )
    1140                 :            : {
    1141                 :          0 :     return m_xRowSet->getStatement();
    1142                 :            : }
    1143                 :            : // -----------------------------------------------------------------------------
    1144                 :          0 : uno::Reference< uno::XInterface > SAL_CALL DatabaseDataProvider::getParent(  ) throw (uno::RuntimeException)
    1145                 :            : {
    1146                 :          0 :     return m_xParent;
    1147                 :            : }
    1148                 :            : // -----------------------------------------------------------------------------
    1149                 :          0 : void SAL_CALL DatabaseDataProvider::setParent( const uno::Reference< uno::XInterface >& _xParent ) throw (lang::NoSupportException, uno::RuntimeException)
    1150                 :            : {
    1151         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
    1152 [ #  # ][ #  # ]:          0 :     m_xParent = _xParent;
    1153                 :          0 : }
    1154                 :            : // -----------------------------------------------------------------------------
    1155                 :          0 : void DatabaseDataProvider::impl_invalidateParameter_nothrow()
    1156                 :            : {
    1157         [ #  # ]:          0 :     osl::MutexGuard g(m_aMutex);
    1158 [ #  # ][ #  # ]:          0 :     m_aParameterManager.clearAllParameterInformation();
    1159                 :          0 : }
    1160                 :            : // -----------------------------------------------------------------------------
    1161                 :            : } // namespace dbaccess
    1162                 :            : 
    1163                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10