19b5730f6SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 39b5730f6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 49b5730f6SAndrew Rist * or more contributor license agreements. See the NOTICE file 59b5730f6SAndrew Rist * distributed with this work for additional information 69b5730f6SAndrew Rist * regarding copyright ownership. The ASF licenses this file 79b5730f6SAndrew Rist * to you under the Apache License, Version 2.0 (the 89b5730f6SAndrew Rist * "License"); you may not use this file except in compliance 99b5730f6SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 119b5730f6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 139b5730f6SAndrew Rist * Unless required by applicable law or agreed to in writing, 149b5730f6SAndrew Rist * software distributed under the License is distributed on an 159b5730f6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 169b5730f6SAndrew Rist * KIND, either express or implied. See the License for the 179b5730f6SAndrew Rist * specific language governing permissions and limitations 189b5730f6SAndrew Rist * under the License. 19cdf0e10cSrcweir * 209b5730f6SAndrew Rist *************************************************************/ 219b5730f6SAndrew Rist 229b5730f6SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_connectivity.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "connectivity/PColumn.hxx" 28cdf0e10cSrcweir #include "connectivity/dbtools.hxx" 29cdf0e10cSrcweir #include "TConnection.hxx" 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include <comphelper/types.hxx> 32cdf0e10cSrcweir #include <tools/diagnose_ex.h> 33cdf0e10cSrcweir 34cdf0e10cSrcweir using namespace ::comphelper; 35cdf0e10cSrcweir using namespace connectivity; 36cdf0e10cSrcweir using namespace dbtools; 37cdf0e10cSrcweir using namespace connectivity::parse; 38cdf0e10cSrcweir using namespace ::com::sun::star::uno; 39cdf0e10cSrcweir using namespace ::com::sun::star::sdbc; 40cdf0e10cSrcweir using namespace ::com::sun::star::beans; 41cdf0e10cSrcweir using namespace ::com::sun::star::container; 42cdf0e10cSrcweir 43cdf0e10cSrcweir // ------------------------------------------------------------------------- 44cdf0e10cSrcweir OParseColumn::OParseColumn(const Reference<XPropertySet>& _xColumn,sal_Bool _bCase) 45cdf0e10cSrcweir : connectivity::sdbcx::OColumn( getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))) 46cdf0e10cSrcweir , getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))) 47cdf0e10cSrcweir , getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))) 48cdf0e10cSrcweir , getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))) 49cdf0e10cSrcweir , getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))) 50cdf0e10cSrcweir , getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))) 51cdf0e10cSrcweir , getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))) 52cdf0e10cSrcweir , getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))) 53cdf0e10cSrcweir , getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))) 54cdf0e10cSrcweir , sal_False 55cdf0e10cSrcweir , getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))) 56cdf0e10cSrcweir , _bCase 57cdf0e10cSrcweir ) 58cdf0e10cSrcweir , m_bFunction(sal_False) 59cdf0e10cSrcweir , m_bDbasePrecisionChanged(sal_False) 60cdf0e10cSrcweir , m_bAggregateFunction(sal_False) 61cdf0e10cSrcweir , m_bIsSearchable( sal_True ) 62cdf0e10cSrcweir { 63cdf0e10cSrcweir construct(); 64cdf0e10cSrcweir } 65cdf0e10cSrcweir 66cdf0e10cSrcweir // ------------------------------------------------------------------------- 67cdf0e10cSrcweir OParseColumn::OParseColumn( const ::rtl::OUString& _Name, 68cdf0e10cSrcweir const ::rtl::OUString& _TypeName, 69cdf0e10cSrcweir const ::rtl::OUString& _DefaultValue, 70cdf0e10cSrcweir const ::rtl::OUString& _Description, 71cdf0e10cSrcweir sal_Int32 _IsNullable, 72cdf0e10cSrcweir sal_Int32 _Precision, 73cdf0e10cSrcweir sal_Int32 _Scale, 74cdf0e10cSrcweir sal_Int32 _Type, 75cdf0e10cSrcweir sal_Bool _IsAutoIncrement, 76cdf0e10cSrcweir sal_Bool _IsCurrency, 77cdf0e10cSrcweir sal_Bool _bCase 78cdf0e10cSrcweir ) : connectivity::sdbcx::OColumn(_Name, 79cdf0e10cSrcweir _TypeName, 80cdf0e10cSrcweir _DefaultValue, 81cdf0e10cSrcweir _Description, 82cdf0e10cSrcweir _IsNullable, 83cdf0e10cSrcweir _Precision, 84cdf0e10cSrcweir _Scale, 85cdf0e10cSrcweir _Type, 86cdf0e10cSrcweir _IsAutoIncrement, 87cdf0e10cSrcweir sal_False, 88cdf0e10cSrcweir _IsCurrency, 89cdf0e10cSrcweir _bCase) 90cdf0e10cSrcweir , m_bFunction(sal_False) 91cdf0e10cSrcweir , m_bDbasePrecisionChanged(sal_False) 92cdf0e10cSrcweir , m_bAggregateFunction(sal_False) 93cdf0e10cSrcweir , m_bIsSearchable( sal_True ) 94cdf0e10cSrcweir { 95cdf0e10cSrcweir construct(); 96cdf0e10cSrcweir } 97cdf0e10cSrcweir 98cdf0e10cSrcweir // ------------------------------------------------------------------------- 99cdf0e10cSrcweir ::vos::ORef< OSQLColumns > OParseColumn::createColumnsForResultSet( const Reference< XResultSetMetaData >& _rxResMetaData, 100cdf0e10cSrcweir const Reference< XDatabaseMetaData >& _rxDBMetaData,const Reference< XNameAccess>& i_xQueryColumns ) 101cdf0e10cSrcweir { 102cdf0e10cSrcweir sal_Int32 nColumnCount = _rxResMetaData->getColumnCount(); 103cdf0e10cSrcweir ::vos::ORef< OSQLColumns > aReturn( new OSQLColumns ); aReturn->get().reserve( nColumnCount ); 104cdf0e10cSrcweir 105cdf0e10cSrcweir StringMap aColumnMap; 106cdf0e10cSrcweir for ( sal_Int32 i = 1; i <= nColumnCount; ++i ) 107cdf0e10cSrcweir { 108cdf0e10cSrcweir OParseColumn* pColumn = createColumnForResultSet( _rxResMetaData, _rxDBMetaData, i,aColumnMap ); 109cdf0e10cSrcweir aReturn->get().push_back( pColumn ); 110cdf0e10cSrcweir if ( i_xQueryColumns.is() && i_xQueryColumns->hasByName(pColumn->getRealName()) ) 111cdf0e10cSrcweir { 112cdf0e10cSrcweir Reference<XPropertySet> xColumn(i_xQueryColumns->getByName(pColumn->getRealName()),UNO_QUERY_THROW); 113cdf0e10cSrcweir ::rtl::OUString sLabel; 114cdf0e10cSrcweir xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_LABEL)) >>= sLabel; 115cdf0e10cSrcweir if ( sLabel.getLength() ) 116cdf0e10cSrcweir pColumn->setLabel(sLabel); 117cdf0e10cSrcweir } 118cdf0e10cSrcweir } 119cdf0e10cSrcweir 120cdf0e10cSrcweir return aReturn; 121cdf0e10cSrcweir } 122cdf0e10cSrcweir 123cdf0e10cSrcweir // ------------------------------------------------------------------------- 124cdf0e10cSrcweir OParseColumn* OParseColumn::createColumnForResultSet( const Reference< XResultSetMetaData >& _rxResMetaData, 125cdf0e10cSrcweir const Reference< XDatabaseMetaData >& _rxDBMetaData, sal_Int32 _nColumnPos,StringMap& _rColumns ) 126cdf0e10cSrcweir { 127cdf0e10cSrcweir ::rtl::OUString sLabel = _rxResMetaData->getColumnLabel( _nColumnPos ); 128cdf0e10cSrcweir // retrieve the name of the column 129cdf0e10cSrcweir // check for duplicate entries 130cdf0e10cSrcweir if(_rColumns.find(sLabel) != _rColumns.end()) 131cdf0e10cSrcweir { 132cdf0e10cSrcweir ::rtl::OUString sAlias(sLabel); 133cdf0e10cSrcweir sal_Int32 searchIndex=1; 134cdf0e10cSrcweir while(_rColumns.find(sAlias) != _rColumns.end()) 135cdf0e10cSrcweir { 136cdf0e10cSrcweir (sAlias = sLabel) += ::rtl::OUString::valueOf(searchIndex++); 137cdf0e10cSrcweir } 138cdf0e10cSrcweir sLabel = sAlias; 139cdf0e10cSrcweir } 140cdf0e10cSrcweir _rColumns.insert(StringMap::value_type(sLabel,0)); 141cdf0e10cSrcweir OParseColumn* pColumn = new OParseColumn( 142cdf0e10cSrcweir sLabel, 143cdf0e10cSrcweir _rxResMetaData->getColumnTypeName( _nColumnPos ), 144cdf0e10cSrcweir ::rtl::OUString(), 145cdf0e10cSrcweir ::rtl::OUString(), 146cdf0e10cSrcweir _rxResMetaData->isNullable( _nColumnPos ), 147cdf0e10cSrcweir _rxResMetaData->getPrecision( _nColumnPos ), 148cdf0e10cSrcweir _rxResMetaData->getScale( _nColumnPos ), 149cdf0e10cSrcweir _rxResMetaData->getColumnType( _nColumnPos ), 150cdf0e10cSrcweir _rxResMetaData->isAutoIncrement( _nColumnPos ), 151cdf0e10cSrcweir _rxResMetaData->isCurrency( _nColumnPos ), 152cdf0e10cSrcweir _rxDBMetaData->supportsMixedCaseQuotedIdentifiers() 153cdf0e10cSrcweir ); 154cdf0e10cSrcweir const ::rtl::OUString sTableName = _rxResMetaData->getTableName( _nColumnPos ); 155cdf0e10cSrcweir if ( sTableName.getLength() ) 156cdf0e10cSrcweir pColumn->setTableName( ::dbtools::composeTableName( _rxDBMetaData, 157cdf0e10cSrcweir _rxResMetaData->getCatalogName( _nColumnPos ), 158cdf0e10cSrcweir _rxResMetaData->getSchemaName( _nColumnPos ), 159cdf0e10cSrcweir sTableName, 160cdf0e10cSrcweir sal_False, 161cdf0e10cSrcweir eComplete 162cdf0e10cSrcweir ) ); 163cdf0e10cSrcweir pColumn->setIsSearchable( _rxResMetaData->isSearchable( _nColumnPos ) ); 164cdf0e10cSrcweir pColumn->setRealName(_rxResMetaData->getColumnName( _nColumnPos )); 165cdf0e10cSrcweir pColumn->setLabel(sLabel); 166cdf0e10cSrcweir return pColumn; 167cdf0e10cSrcweir } 168cdf0e10cSrcweir 169cdf0e10cSrcweir // ------------------------------------------------------------------------- 170cdf0e10cSrcweir OParseColumn::~OParseColumn() 171cdf0e10cSrcweir { 172cdf0e10cSrcweir } 173cdf0e10cSrcweir // ------------------------------------------------------------------------- 174cdf0e10cSrcweir void OParseColumn::construct() 175cdf0e10cSrcweir { 176*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FUNCTION), PROPERTY_ID_FUNCTION, 0, &m_bFunction, ::getCppuType(static_cast< sal_Bool*>(NULL))); 177*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_AGGREGATEFUNCTION), PROPERTY_ID_AGGREGATEFUNCTION, 0, &m_bAggregateFunction, ::getCppuType(static_cast< sal_Bool*>(NULL))); 178*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME), PROPERTY_ID_TABLENAME, 0, &m_aTableName, ::getCppuType(static_cast< ::rtl::OUString*>(NULL))); 179*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_REALNAME), PROPERTY_ID_REALNAME, 0, &m_aRealName, ::getCppuType(static_cast< ::rtl::OUString*>(NULL))); 180*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DBASEPRECISIONCHANGED), PROPERTY_ID_DBASEPRECISIONCHANGED, 0, &m_bDbasePrecisionChanged, ::getCppuType(static_cast<sal_Bool*>(NULL))); 181*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISSEARCHABLE), PROPERTY_ID_ISSEARCHABLE, 0, &m_bIsSearchable, ::getCppuType(static_cast< sal_Bool*>(NULL))); 182*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_LABEL), PROPERTY_ID_LABEL, 0, &m_sLabel, ::getCppuType(static_cast< ::rtl::OUString*>(NULL))); 183cdf0e10cSrcweir } 184cdf0e10cSrcweir // ----------------------------------------------------------------------------- 185cdf0e10cSrcweir ::cppu::IPropertyArrayHelper* OParseColumn::createArrayHelper() const 186cdf0e10cSrcweir { 187cdf0e10cSrcweir return doCreateArrayHelper(); 188cdf0e10cSrcweir } 189cdf0e10cSrcweir // ----------------------------------------------------------------------------- 190cdf0e10cSrcweir ::cppu::IPropertyArrayHelper & SAL_CALL OParseColumn::getInfoHelper() 191cdf0e10cSrcweir { 192cdf0e10cSrcweir OSL_ENSURE( !isNew(), "OParseColumn::getInfoHelper: a *new* ParseColumn?" ); 193cdf0e10cSrcweir return *OParseColumn_PROP::getArrayHelper(); 194cdf0e10cSrcweir } 195cdf0e10cSrcweir 196cdf0e10cSrcweir // ----------------------------------------------------------------------------- 197cdf0e10cSrcweir namespace 198cdf0e10cSrcweir { 199cdf0e10cSrcweir ::rtl::OUString lcl_getColumnTableName( const Reference< XPropertySet >& i_parseColumn ) 200cdf0e10cSrcweir { 201cdf0e10cSrcweir ::rtl::OUString sColumnTableName; 202cdf0e10cSrcweir try 203cdf0e10cSrcweir { 204cdf0e10cSrcweir OSL_VERIFY( i_parseColumn->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_TABLENAME ) ) >>= sColumnTableName ); 205cdf0e10cSrcweir } 206cdf0e10cSrcweir catch( const Exception& ) 207cdf0e10cSrcweir { 208cdf0e10cSrcweir DBG_UNHANDLED_EXCEPTION(); 209cdf0e10cSrcweir } 210cdf0e10cSrcweir return sColumnTableName; 211cdf0e10cSrcweir } 212cdf0e10cSrcweir } 213cdf0e10cSrcweir 214cdf0e10cSrcweir // ----------------------------------------------------------------------------- 215cdf0e10cSrcweir OOrderColumn::OOrderColumn( const Reference<XPropertySet>& _xColumn, const ::rtl::OUString& i_rOriginatingTableName, 216cdf0e10cSrcweir sal_Bool _bCase, sal_Bool _bAscending ) 217cdf0e10cSrcweir : connectivity::sdbcx::OColumn( 218cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))), 219cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))), 220cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))), 221cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))), 222cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))), 223cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))), 224cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))), 225cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))), 226cdf0e10cSrcweir getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))), 227cdf0e10cSrcweir sal_False, 228cdf0e10cSrcweir getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))), 229cdf0e10cSrcweir _bCase 230cdf0e10cSrcweir ) 231cdf0e10cSrcweir ,m_bAscending(_bAscending) 232cdf0e10cSrcweir ,m_sTableName( i_rOriginatingTableName ) 233cdf0e10cSrcweir { 234cdf0e10cSrcweir construct(); 235cdf0e10cSrcweir } 236cdf0e10cSrcweir 237cdf0e10cSrcweir // ----------------------------------------------------------------------------- 238cdf0e10cSrcweir OOrderColumn::OOrderColumn( const Reference<XPropertySet>& _xColumn, sal_Bool _bCase, sal_Bool _bAscending ) 239cdf0e10cSrcweir : connectivity::sdbcx::OColumn( 240cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))), 241cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))), 242cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))), 243cdf0e10cSrcweir getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))), 244cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))), 245cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))), 246cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))), 247cdf0e10cSrcweir getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))), 248cdf0e10cSrcweir getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))), 249cdf0e10cSrcweir sal_False, 250cdf0e10cSrcweir getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))), 251cdf0e10cSrcweir _bCase 252cdf0e10cSrcweir ) 253cdf0e10cSrcweir ,m_bAscending(_bAscending) 254cdf0e10cSrcweir ,m_sTableName( lcl_getColumnTableName( _xColumn ) ) 255cdf0e10cSrcweir { 256cdf0e10cSrcweir construct(); 257cdf0e10cSrcweir } 258cdf0e10cSrcweir 259cdf0e10cSrcweir // ------------------------------------------------------------------------- 260cdf0e10cSrcweir OOrderColumn::~OOrderColumn() 261cdf0e10cSrcweir { 262cdf0e10cSrcweir } 263cdf0e10cSrcweir 264cdf0e10cSrcweir // ------------------------------------------------------------------------- 265cdf0e10cSrcweir void OOrderColumn::construct() 266cdf0e10cSrcweir { 267cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISASCENDING), PROPERTY_ID_ISASCENDING, 268*bccc1572SDon Lewis PropertyAttribute::READONLY, const_cast< sal_Bool* >( &m_bAscending ), ::getCppuType( static_cast< sal_Bool* >( NULL ) ) ); 269cdf0e10cSrcweir registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME), PROPERTY_ID_TABLENAME, 270*bccc1572SDon Lewis PropertyAttribute::READONLY, const_cast< ::rtl::OUString* >( &m_sTableName ), ::getCppuType(static_cast< ::rtl::OUString*>(NULL))); 271cdf0e10cSrcweir } 272cdf0e10cSrcweir // ----------------------------------------------------------------------------- 273cdf0e10cSrcweir ::cppu::IPropertyArrayHelper* OOrderColumn::createArrayHelper() const 274cdf0e10cSrcweir { 275cdf0e10cSrcweir return doCreateArrayHelper(); 276cdf0e10cSrcweir } 277cdf0e10cSrcweir // ----------------------------------------------------------------------------- 278cdf0e10cSrcweir ::cppu::IPropertyArrayHelper & SAL_CALL OOrderColumn::getInfoHelper() 279cdf0e10cSrcweir { 280cdf0e10cSrcweir OSL_ENSURE( !isNew(), "OOrderColumn::getInfoHelper: a *new* OrderColumn?" ); 281cdf0e10cSrcweir return *OOrderColumn_PROP::getArrayHelper(); 282cdf0e10cSrcweir } 283cdf0e10cSrcweir // ----------------------------------------------------------------------------- 284cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL OOrderColumn::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) 285cdf0e10cSrcweir { 286cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(1); 287cdf0e10cSrcweir aSupported[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.OrderColumn"); 288cdf0e10cSrcweir 289cdf0e10cSrcweir return aSupported; 290cdf0e10cSrcweir } 291cdf0e10cSrcweir // ----------------------------------------------------------------------------- 292