1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_connectivity.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include "connectivity/PColumn.hxx" 32*cdf0e10cSrcweir #include "connectivity/dbtools.hxx" 33*cdf0e10cSrcweir #include "TConnection.hxx" 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #include <comphelper/types.hxx> 36*cdf0e10cSrcweir #include <tools/diagnose_ex.h> 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir using namespace ::comphelper; 39*cdf0e10cSrcweir using namespace connectivity; 40*cdf0e10cSrcweir using namespace dbtools; 41*cdf0e10cSrcweir using namespace connectivity::parse; 42*cdf0e10cSrcweir using namespace ::com::sun::star::uno; 43*cdf0e10cSrcweir using namespace ::com::sun::star::sdbc; 44*cdf0e10cSrcweir using namespace ::com::sun::star::beans; 45*cdf0e10cSrcweir using namespace ::com::sun::star::container; 46*cdf0e10cSrcweir 47*cdf0e10cSrcweir // ------------------------------------------------------------------------- 48*cdf0e10cSrcweir OParseColumn::OParseColumn(const Reference<XPropertySet>& _xColumn,sal_Bool _bCase) 49*cdf0e10cSrcweir : connectivity::sdbcx::OColumn( getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))) 50*cdf0e10cSrcweir , getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))) 51*cdf0e10cSrcweir , getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))) 52*cdf0e10cSrcweir , getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))) 53*cdf0e10cSrcweir , getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))) 54*cdf0e10cSrcweir , getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))) 55*cdf0e10cSrcweir , getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))) 56*cdf0e10cSrcweir , getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))) 57*cdf0e10cSrcweir , getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))) 58*cdf0e10cSrcweir , sal_False 59*cdf0e10cSrcweir , getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))) 60*cdf0e10cSrcweir , _bCase 61*cdf0e10cSrcweir ) 62*cdf0e10cSrcweir , m_bFunction(sal_False) 63*cdf0e10cSrcweir , m_bDbasePrecisionChanged(sal_False) 64*cdf0e10cSrcweir , m_bAggregateFunction(sal_False) 65*cdf0e10cSrcweir , m_bIsSearchable( sal_True ) 66*cdf0e10cSrcweir { 67*cdf0e10cSrcweir construct(); 68*cdf0e10cSrcweir } 69*cdf0e10cSrcweir 70*cdf0e10cSrcweir // ------------------------------------------------------------------------- 71*cdf0e10cSrcweir OParseColumn::OParseColumn( const ::rtl::OUString& _Name, 72*cdf0e10cSrcweir const ::rtl::OUString& _TypeName, 73*cdf0e10cSrcweir const ::rtl::OUString& _DefaultValue, 74*cdf0e10cSrcweir const ::rtl::OUString& _Description, 75*cdf0e10cSrcweir sal_Int32 _IsNullable, 76*cdf0e10cSrcweir sal_Int32 _Precision, 77*cdf0e10cSrcweir sal_Int32 _Scale, 78*cdf0e10cSrcweir sal_Int32 _Type, 79*cdf0e10cSrcweir sal_Bool _IsAutoIncrement, 80*cdf0e10cSrcweir sal_Bool _IsCurrency, 81*cdf0e10cSrcweir sal_Bool _bCase 82*cdf0e10cSrcweir ) : connectivity::sdbcx::OColumn(_Name, 83*cdf0e10cSrcweir _TypeName, 84*cdf0e10cSrcweir _DefaultValue, 85*cdf0e10cSrcweir _Description, 86*cdf0e10cSrcweir _IsNullable, 87*cdf0e10cSrcweir _Precision, 88*cdf0e10cSrcweir _Scale, 89*cdf0e10cSrcweir _Type, 90*cdf0e10cSrcweir _IsAutoIncrement, 91*cdf0e10cSrcweir sal_False, 92*cdf0e10cSrcweir _IsCurrency, 93*cdf0e10cSrcweir _bCase) 94*cdf0e10cSrcweir , m_bFunction(sal_False) 95*cdf0e10cSrcweir , m_bDbasePrecisionChanged(sal_False) 96*cdf0e10cSrcweir , m_bAggregateFunction(sal_False) 97*cdf0e10cSrcweir , m_bIsSearchable( sal_True ) 98*cdf0e10cSrcweir { 99*cdf0e10cSrcweir construct(); 100*cdf0e10cSrcweir } 101*cdf0e10cSrcweir 102*cdf0e10cSrcweir // ------------------------------------------------------------------------- 103*cdf0e10cSrcweir ::vos::ORef< OSQLColumns > OParseColumn::createColumnsForResultSet( const Reference< XResultSetMetaData >& _rxResMetaData, 104*cdf0e10cSrcweir const Reference< XDatabaseMetaData >& _rxDBMetaData,const Reference< XNameAccess>& i_xQueryColumns ) 105*cdf0e10cSrcweir { 106*cdf0e10cSrcweir sal_Int32 nColumnCount = _rxResMetaData->getColumnCount(); 107*cdf0e10cSrcweir ::vos::ORef< OSQLColumns > aReturn( new OSQLColumns ); aReturn->get().reserve( nColumnCount ); 108*cdf0e10cSrcweir 109*cdf0e10cSrcweir StringMap aColumnMap; 110*cdf0e10cSrcweir for ( sal_Int32 i = 1; i <= nColumnCount; ++i ) 111*cdf0e10cSrcweir { 112*cdf0e10cSrcweir OParseColumn* pColumn = createColumnForResultSet( _rxResMetaData, _rxDBMetaData, i,aColumnMap ); 113*cdf0e10cSrcweir aReturn->get().push_back( pColumn ); 114*cdf0e10cSrcweir if ( i_xQueryColumns.is() && i_xQueryColumns->hasByName(pColumn->getRealName()) ) 115*cdf0e10cSrcweir { 116*cdf0e10cSrcweir Reference<XPropertySet> xColumn(i_xQueryColumns->getByName(pColumn->getRealName()),UNO_QUERY_THROW); 117*cdf0e10cSrcweir ::rtl::OUString sLabel; 118*cdf0e10cSrcweir xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_LABEL)) >>= sLabel; 119*cdf0e10cSrcweir if ( sLabel.getLength() ) 120*cdf0e10cSrcweir pColumn->setLabel(sLabel); 121*cdf0e10cSrcweir } 122*cdf0e10cSrcweir } 123*cdf0e10cSrcweir 124*cdf0e10cSrcweir return aReturn; 125*cdf0e10cSrcweir } 126*cdf0e10cSrcweir 127*cdf0e10cSrcweir // ------------------------------------------------------------------------- 128*cdf0e10cSrcweir OParseColumn* OParseColumn::createColumnForResultSet( const Reference< XResultSetMetaData >& _rxResMetaData, 129*cdf0e10cSrcweir const Reference< XDatabaseMetaData >& _rxDBMetaData, sal_Int32 _nColumnPos,StringMap& _rColumns ) 130*cdf0e10cSrcweir { 131*cdf0e10cSrcweir ::rtl::OUString sLabel = _rxResMetaData->getColumnLabel( _nColumnPos ); 132*cdf0e10cSrcweir // retrieve the name of the column 133*cdf0e10cSrcweir // check for duplicate entries 134*cdf0e10cSrcweir if(_rColumns.find(sLabel) != _rColumns.end()) 135*cdf0e10cSrcweir { 136*cdf0e10cSrcweir ::rtl::OUString sAlias(sLabel); 137*cdf0e10cSrcweir sal_Int32 searchIndex=1; 138*cdf0e10cSrcweir while(_rColumns.find(sAlias) != _rColumns.end()) 139*cdf0e10cSrcweir { 140*cdf0e10cSrcweir (sAlias = sLabel) += ::rtl::OUString::valueOf(searchIndex++); 141*cdf0e10cSrcweir } 142*cdf0e10cSrcweir sLabel = sAlias; 143*cdf0e10cSrcweir } 144*cdf0e10cSrcweir _rColumns.insert(StringMap::value_type(sLabel,0)); 145*cdf0e10cSrcweir OParseColumn* pColumn = new OParseColumn( 146*cdf0e10cSrcweir sLabel, 147*cdf0e10cSrcweir _rxResMetaData->getColumnTypeName( _nColumnPos ), 148*cdf0e10cSrcweir ::rtl::OUString(), 149*cdf0e10cSrcweir ::rtl::OUString(), 150*cdf0e10cSrcweir _rxResMetaData->isNullable( _nColumnPos ), 151*cdf0e10cSrcweir _rxResMetaData->getPrecision( _nColumnPos ), 152*cdf0e10cSrcweir _rxResMetaData->getScale( _nColumnPos ), 153*cdf0e10cSrcweir _rxResMetaData->getColumnType( _nColumnPos ), 154*cdf0e10cSrcweir _rxResMetaData->isAutoIncrement( _nColumnPos ), 155*cdf0e10cSrcweir _rxResMetaData->isCurrency( _nColumnPos ), 156*cdf0e10cSrcweir _rxDBMetaData->supportsMixedCaseQuotedIdentifiers() 157*cdf0e10cSrcweir ); 158*cdf0e10cSrcweir const ::rtl::OUString sTableName = _rxResMetaData->getTableName( _nColumnPos ); 159*cdf0e10cSrcweir if ( sTableName.getLength() ) 160*cdf0e10cSrcweir pColumn->setTableName( ::dbtools::composeTableName( _rxDBMetaData, 161*cdf0e10cSrcweir _rxResMetaData->getCatalogName( _nColumnPos ), 162*cdf0e10cSrcweir _rxResMetaData->getSchemaName( _nColumnPos ), 163*cdf0e10cSrcweir sTableName, 164*cdf0e10cSrcweir sal_False, 165*cdf0e10cSrcweir eComplete 166*cdf0e10cSrcweir ) ); 167*cdf0e10cSrcweir pColumn->setIsSearchable( _rxResMetaData->isSearchable( _nColumnPos ) ); 168*cdf0e10cSrcweir pColumn->setRealName(_rxResMetaData->getColumnName( _nColumnPos )); 169*cdf0e10cSrcweir pColumn->setLabel(sLabel); 170*cdf0e10cSrcweir return pColumn; 171*cdf0e10cSrcweir } 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir // ------------------------------------------------------------------------- 174*cdf0e10cSrcweir OParseColumn::~OParseColumn() 175*cdf0e10cSrcweir { 176*cdf0e10cSrcweir } 177*cdf0e10cSrcweir // ------------------------------------------------------------------------- 178*cdf0e10cSrcweir void OParseColumn::construct() 179*cdf0e10cSrcweir { 180*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FUNCTION), PROPERTY_ID_FUNCTION, 0, &m_bFunction, ::getCppuType(reinterpret_cast< sal_Bool*>(NULL))); 181*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_AGGREGATEFUNCTION), PROPERTY_ID_AGGREGATEFUNCTION, 0, &m_bAggregateFunction, ::getCppuType(reinterpret_cast< sal_Bool*>(NULL))); 182*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME), PROPERTY_ID_TABLENAME, 0, &m_aTableName, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL))); 183*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_REALNAME), PROPERTY_ID_REALNAME, 0, &m_aRealName, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL))); 184*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DBASEPRECISIONCHANGED), PROPERTY_ID_DBASEPRECISIONCHANGED, 0, &m_bDbasePrecisionChanged, ::getCppuType(reinterpret_cast<sal_Bool*>(NULL))); 185*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISSEARCHABLE), PROPERTY_ID_ISSEARCHABLE, 0, &m_bIsSearchable, ::getCppuType(reinterpret_cast< sal_Bool*>(NULL))); 186*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_LABEL), PROPERTY_ID_LABEL, 0, &m_sLabel, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL))); 187*cdf0e10cSrcweir } 188*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 189*cdf0e10cSrcweir ::cppu::IPropertyArrayHelper* OParseColumn::createArrayHelper() const 190*cdf0e10cSrcweir { 191*cdf0e10cSrcweir return doCreateArrayHelper(); 192*cdf0e10cSrcweir } 193*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 194*cdf0e10cSrcweir ::cppu::IPropertyArrayHelper & SAL_CALL OParseColumn::getInfoHelper() 195*cdf0e10cSrcweir { 196*cdf0e10cSrcweir OSL_ENSURE( !isNew(), "OParseColumn::getInfoHelper: a *new* ParseColumn?" ); 197*cdf0e10cSrcweir return *OParseColumn_PROP::getArrayHelper(); 198*cdf0e10cSrcweir } 199*cdf0e10cSrcweir 200*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 201*cdf0e10cSrcweir namespace 202*cdf0e10cSrcweir { 203*cdf0e10cSrcweir ::rtl::OUString lcl_getColumnTableName( const Reference< XPropertySet >& i_parseColumn ) 204*cdf0e10cSrcweir { 205*cdf0e10cSrcweir ::rtl::OUString sColumnTableName; 206*cdf0e10cSrcweir try 207*cdf0e10cSrcweir { 208*cdf0e10cSrcweir OSL_VERIFY( i_parseColumn->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_TABLENAME ) ) >>= sColumnTableName ); 209*cdf0e10cSrcweir } 210*cdf0e10cSrcweir catch( const Exception& ) 211*cdf0e10cSrcweir { 212*cdf0e10cSrcweir DBG_UNHANDLED_EXCEPTION(); 213*cdf0e10cSrcweir } 214*cdf0e10cSrcweir return sColumnTableName; 215*cdf0e10cSrcweir } 216*cdf0e10cSrcweir } 217*cdf0e10cSrcweir 218*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 219*cdf0e10cSrcweir OOrderColumn::OOrderColumn( const Reference<XPropertySet>& _xColumn, const ::rtl::OUString& i_rOriginatingTableName, 220*cdf0e10cSrcweir sal_Bool _bCase, sal_Bool _bAscending ) 221*cdf0e10cSrcweir : connectivity::sdbcx::OColumn( 222*cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))), 223*cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))), 224*cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))), 225*cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))), 226*cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))), 227*cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))), 228*cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))), 229*cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))), 230*cdf0e10cSrcweir getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))), 231*cdf0e10cSrcweir sal_False, 232*cdf0e10cSrcweir getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))), 233*cdf0e10cSrcweir _bCase 234*cdf0e10cSrcweir ) 235*cdf0e10cSrcweir ,m_bAscending(_bAscending) 236*cdf0e10cSrcweir ,m_sTableName( i_rOriginatingTableName ) 237*cdf0e10cSrcweir { 238*cdf0e10cSrcweir construct(); 239*cdf0e10cSrcweir } 240*cdf0e10cSrcweir 241*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 242*cdf0e10cSrcweir OOrderColumn::OOrderColumn( const Reference<XPropertySet>& _xColumn, sal_Bool _bCase, sal_Bool _bAscending ) 243*cdf0e10cSrcweir : connectivity::sdbcx::OColumn( 244*cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))), 245*cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))), 246*cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))), 247*cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))), 248*cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))), 249*cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))), 250*cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))), 251*cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))), 252*cdf0e10cSrcweir getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))), 253*cdf0e10cSrcweir sal_False, 254*cdf0e10cSrcweir getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))), 255*cdf0e10cSrcweir _bCase 256*cdf0e10cSrcweir ) 257*cdf0e10cSrcweir ,m_bAscending(_bAscending) 258*cdf0e10cSrcweir ,m_sTableName( lcl_getColumnTableName( _xColumn ) ) 259*cdf0e10cSrcweir { 260*cdf0e10cSrcweir construct(); 261*cdf0e10cSrcweir } 262*cdf0e10cSrcweir 263*cdf0e10cSrcweir // ------------------------------------------------------------------------- 264*cdf0e10cSrcweir OOrderColumn::~OOrderColumn() 265*cdf0e10cSrcweir { 266*cdf0e10cSrcweir } 267*cdf0e10cSrcweir 268*cdf0e10cSrcweir // ------------------------------------------------------------------------- 269*cdf0e10cSrcweir void OOrderColumn::construct() 270*cdf0e10cSrcweir { 271*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISASCENDING), PROPERTY_ID_ISASCENDING, 272*cdf0e10cSrcweir PropertyAttribute::READONLY, const_cast< sal_Bool* >( &m_bAscending ), ::getCppuType( reinterpret_cast< sal_Bool* >( NULL ) ) ); 273*cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME), PROPERTY_ID_TABLENAME, 274*cdf0e10cSrcweir PropertyAttribute::READONLY, const_cast< ::rtl::OUString* >( &m_sTableName ), ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL))); 275*cdf0e10cSrcweir } 276*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 277*cdf0e10cSrcweir ::cppu::IPropertyArrayHelper* OOrderColumn::createArrayHelper() const 278*cdf0e10cSrcweir { 279*cdf0e10cSrcweir return doCreateArrayHelper(); 280*cdf0e10cSrcweir } 281*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 282*cdf0e10cSrcweir ::cppu::IPropertyArrayHelper & SAL_CALL OOrderColumn::getInfoHelper() 283*cdf0e10cSrcweir { 284*cdf0e10cSrcweir OSL_ENSURE( !isNew(), "OOrderColumn::getInfoHelper: a *new* OrderColumn?" ); 285*cdf0e10cSrcweir return *OOrderColumn_PROP::getArrayHelper(); 286*cdf0e10cSrcweir } 287*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 288*cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL OOrderColumn::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) 289*cdf0e10cSrcweir { 290*cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(1); 291*cdf0e10cSrcweir aSupported[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.OrderColumn"); 292*cdf0e10cSrcweir 293*cdf0e10cSrcweir return aSupported; 294*cdf0e10cSrcweir } 295*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 296