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 "ParameterSubstitution.hxx" 28cdf0e10cSrcweir #include "FDatabaseMetaDataResultSet.hxx" 29cdf0e10cSrcweir #include "FDatabaseMetaDataResultSetMetaData.hxx" 30cdf0e10cSrcweir #include <com/sun/star/sdbc/DataType.hpp> 31cdf0e10cSrcweir #include <com/sun/star/sdbc/ColumnSearch.hpp> 32cdf0e10cSrcweir #include <com/sun/star/sdbc/KeyRule.hpp> 33cdf0e10cSrcweir #include <com/sun/star/sdbc/ProcedureResult.hpp> 34cdf0e10cSrcweir #include <com/sun/star/sdbc/IndexType.hpp> 35cdf0e10cSrcweir #include <comphelper/property.hxx> 36cdf0e10cSrcweir #include <com/sun/star/lang/DisposedException.hpp> 37cdf0e10cSrcweir #include <com/sun/star/sdbc/ResultSetConcurrency.hpp> 38cdf0e10cSrcweir #include <com/sun/star/sdbc/ResultSetType.hpp> 39cdf0e10cSrcweir #include <com/sun/star/sdbc/FetchDirection.hpp> 40cdf0e10cSrcweir #include <com/sun/star/beans/PropertyAttribute.hpp> 41cdf0e10cSrcweir #include <cppuhelper/typeprovider.hxx> 42cdf0e10cSrcweir #include <comphelper/sequence.hxx> 43cdf0e10cSrcweir #include <cppuhelper/factory.hxx> 44cdf0e10cSrcweir #include <cppuhelper/implementationentry.hxx> 45cdf0e10cSrcweir #include "connectivity/dbexception.hxx" 46cdf0e10cSrcweir #include "TConnection.hxx" 47cdf0e10cSrcweir 48cdf0e10cSrcweir using namespace connectivity; 49cdf0e10cSrcweir using namespace dbtools; 50cdf0e10cSrcweir using namespace cppu; 51cdf0e10cSrcweir //------------------------------------------------------------------------------ 52cdf0e10cSrcweir using namespace ::com::sun::star::beans; 53cdf0e10cSrcweir using namespace ::com::sun::star::uno; 54cdf0e10cSrcweir using namespace ::com::sun::star::sdbcx; 55cdf0e10cSrcweir using namespace ::com::sun::star::sdbc; 56cdf0e10cSrcweir using namespace ::com::sun::star::container; 57cdf0e10cSrcweir using namespace ::com::sun::star::lang; 58cdf0e10cSrcweir // ------------------------------------------------------------------------- 59cdf0e10cSrcweir ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet() 60cdf0e10cSrcweir :ODatabaseMetaDataResultSet_BASE(m_aMutex) 61cdf0e10cSrcweir ,::comphelper::OPropertyContainer(ODatabaseMetaDataResultSet_BASE::rBHelper) 62cdf0e10cSrcweir ,m_aStatement(NULL) 63cdf0e10cSrcweir ,m_xMetaData(NULL) 64cdf0e10cSrcweir ,m_bBOF(sal_True) 65cdf0e10cSrcweir ,m_bEOF(sal_True) 66cdf0e10cSrcweir { 67cdf0e10cSrcweir construct(); 68cdf0e10cSrcweir } 69cdf0e10cSrcweir 70cdf0e10cSrcweir // ------------------------------------------------------------------------- 71cdf0e10cSrcweir ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet( MetaDataResultSetType _eType ) 72cdf0e10cSrcweir :ODatabaseMetaDataResultSet_BASE(m_aMutex) 73cdf0e10cSrcweir ,::comphelper::OPropertyContainer(ODatabaseMetaDataResultSet_BASE::rBHelper) 74cdf0e10cSrcweir ,m_aStatement(NULL) 75cdf0e10cSrcweir ,m_xMetaData(NULL) 76cdf0e10cSrcweir ,m_bBOF(sal_True) 77cdf0e10cSrcweir ,m_bEOF(sal_True) 78cdf0e10cSrcweir { 79cdf0e10cSrcweir construct(); 80cdf0e10cSrcweir 81cdf0e10cSrcweir setType(_eType); 82cdf0e10cSrcweir } 83cdf0e10cSrcweir 84cdf0e10cSrcweir // ------------------------------------------------------------------------- 85cdf0e10cSrcweir ODatabaseMetaDataResultSet::~ODatabaseMetaDataResultSet() 86cdf0e10cSrcweir { 87cdf0e10cSrcweir } 88cdf0e10cSrcweir // ------------------------------------------------------------------------- 89cdf0e10cSrcweir void ODatabaseMetaDataResultSet::construct() 90cdf0e10cSrcweir { 91*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FETCHSIZE), PROPERTY_ID_FETCHSIZE, 0,&m_nFetchSize, ::getCppuType(static_cast<sal_Int32*>(NULL))); 92*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_RESULTSETTYPE), PROPERTY_ID_RESULTSETTYPE, PropertyAttribute::READONLY,&m_nResultSetType, ::getCppuType(static_cast<sal_Int32*>(NULL))); 93*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FETCHDIRECTION), PROPERTY_ID_FETCHDIRECTION, 0, &m_nFetchDirection, ::getCppuType(static_cast<sal_Int32*>(NULL))); 94*bccc1572SDon Lewis registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_RESULTSETCONCURRENCY), PROPERTY_ID_RESULTSETCONCURRENCY, PropertyAttribute::READONLY,&m_nResultSetConcurrency, ::getCppuType(static_cast<sal_Int32*>(NULL))); 95cdf0e10cSrcweir } 96cdf0e10cSrcweir // ----------------------------------------------------------------------------- 97cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setType(MetaDataResultSetType _eType) 98cdf0e10cSrcweir { 99cdf0e10cSrcweir switch( _eType ) 100cdf0e10cSrcweir { 101cdf0e10cSrcweir case eCatalogs: setCatalogsMap(); break; 102cdf0e10cSrcweir case eSchemas: setSchemasMap(); break; 103cdf0e10cSrcweir case eColumnPrivileges: setColumnPrivilegesMap(); break; 104cdf0e10cSrcweir case eColumns: setColumnsMap(); break; 105cdf0e10cSrcweir case eTables: setTablesMap(); break; 106cdf0e10cSrcweir case eTableTypes: setTableTypes(); break; 107cdf0e10cSrcweir case eProcedureColumns: setProcedureColumnsMap(); break; 108cdf0e10cSrcweir case eProcedures: setProceduresMap(); break; 109cdf0e10cSrcweir case eExportedKeys: setExportedKeysMap(); break; 110cdf0e10cSrcweir case eImportedKeys: setImportedKeysMap(); break; 111cdf0e10cSrcweir case ePrimaryKeys: setPrimaryKeysMap(); break; 112cdf0e10cSrcweir case eIndexInfo: setIndexInfoMap(); break; 113cdf0e10cSrcweir case eTablePrivileges: setTablePrivilegesMap(); break; 114cdf0e10cSrcweir case eCrossReference: setCrossReferenceMap(); break; 115cdf0e10cSrcweir case eTypeInfo: setTypeInfoMap(); break; 116cdf0e10cSrcweir case eBestRowIdentifier: setBestRowIdentifierMap(); break; 117cdf0e10cSrcweir case eVersionColumns: setVersionColumnsMap(); break; 118cdf0e10cSrcweir default: 119cdf0e10cSrcweir OSL_ENSURE(0,"Wrong type!"); 120cdf0e10cSrcweir } 121cdf0e10cSrcweir } 122cdf0e10cSrcweir // ------------------------------------------------------------------------- 123cdf0e10cSrcweir void ODatabaseMetaDataResultSet::disposing(void) 124cdf0e10cSrcweir { 125cdf0e10cSrcweir OPropertySetHelper::disposing(); 126cdf0e10cSrcweir 127cdf0e10cSrcweir ::osl::MutexGuard aGuard(m_aMutex); 128cdf0e10cSrcweir m_aStatement = NULL; 129cdf0e10cSrcweir m_xMetaData.clear(); 130cdf0e10cSrcweir m_aRowsIter = m_aRows.end(); 131cdf0e10cSrcweir m_aRows.clear(); 132cdf0e10cSrcweir m_aRowsIter = m_aRows.end(); 133cdf0e10cSrcweir } 134cdf0e10cSrcweir // ----------------------------------------------------------------------------- 135cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::acquire() throw() 136cdf0e10cSrcweir { 137cdf0e10cSrcweir ODatabaseMetaDataResultSet_BASE::acquire(); 138cdf0e10cSrcweir } 139cdf0e10cSrcweir // ----------------------------------------------------------------------------- 140cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::release() throw() 141cdf0e10cSrcweir { 142cdf0e10cSrcweir ODatabaseMetaDataResultSet_BASE::release(); 143cdf0e10cSrcweir } 144cdf0e10cSrcweir // ------------------------------------------------------------------------- 145cdf0e10cSrcweir Any SAL_CALL ODatabaseMetaDataResultSet::queryInterface( const Type & rType ) throw(RuntimeException) 146cdf0e10cSrcweir { 147cdf0e10cSrcweir Any aRet = OPropertySetHelper::queryInterface(rType); 148cdf0e10cSrcweir return aRet.hasValue() ? aRet : ODatabaseMetaDataResultSet_BASE::queryInterface(rType); 149cdf0e10cSrcweir } 150cdf0e10cSrcweir // ------------------------------------------------------------------------- 151cdf0e10cSrcweir Sequence< Type > SAL_CALL ODatabaseMetaDataResultSet::getTypes( ) throw(RuntimeException) 152cdf0e10cSrcweir { 153cdf0e10cSrcweir ::cppu::OTypeCollection aTypes( ::getCppuType( (const Reference< ::com::sun::star::beans::XMultiPropertySet > *)0 ), 154cdf0e10cSrcweir ::getCppuType( (const Reference< ::com::sun::star::beans::XFastPropertySet > *)0 ), 155cdf0e10cSrcweir ::getCppuType( (const Reference< ::com::sun::star::beans::XPropertySet > *)0 )); 156cdf0e10cSrcweir 157cdf0e10cSrcweir return ::comphelper::concatSequences(aTypes.getTypes(),ODatabaseMetaDataResultSet_BASE::getTypes()); 158cdf0e10cSrcweir } 159cdf0e10cSrcweir // ----------------------------------------------------------------------------- 160cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setRows(const ORows& _rRows) 161cdf0e10cSrcweir { 162cdf0e10cSrcweir m_aRows = _rRows; 163cdf0e10cSrcweir m_bBOF = sal_True; 164cdf0e10cSrcweir m_bEOF = m_aRows.empty(); 165cdf0e10cSrcweir } 166cdf0e10cSrcweir // ------------------------------------------------------------------------- 167cdf0e10cSrcweir sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::findColumn( const ::rtl::OUString& columnName ) throw(SQLException, RuntimeException) 168cdf0e10cSrcweir { 169cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 170cdf0e10cSrcweir checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed ); 171cdf0e10cSrcweir 172cdf0e10cSrcweir 173cdf0e10cSrcweir Reference< XResultSetMetaData > xMeta = getMetaData(); 174cdf0e10cSrcweir sal_Int32 nLen = xMeta->getColumnCount(); 175cdf0e10cSrcweir sal_Int32 i = 1; 176cdf0e10cSrcweir for(;i<=nLen;++i) 177cdf0e10cSrcweir if(xMeta->isCaseSensitive(i) ? columnName == xMeta->getColumnName(i) : 178cdf0e10cSrcweir columnName.equalsIgnoreAsciiCase(xMeta->getColumnName(i)) 179cdf0e10cSrcweir ) 180cdf0e10cSrcweir break; 181cdf0e10cSrcweir return i; 182cdf0e10cSrcweir } 183cdf0e10cSrcweir // ----------------------------------------------------------------------------- 184cdf0e10cSrcweir void ODatabaseMetaDataResultSet::checkIndex(sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException) 185cdf0e10cSrcweir { 186cdf0e10cSrcweir if(columnIndex >= (sal_Int32)(*m_aRowsIter).size() || columnIndex < 1) 187cdf0e10cSrcweir ::dbtools::throwInvalidIndexException(*this); 188cdf0e10cSrcweir } 189cdf0e10cSrcweir // ------------------------------------------------------------------------- 190cdf0e10cSrcweir Reference< ::com::sun::star::io::XInputStream > SAL_CALL ODatabaseMetaDataResultSet::getBinaryStream( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException) 191cdf0e10cSrcweir { 192cdf0e10cSrcweir return NULL; 193cdf0e10cSrcweir } 194cdf0e10cSrcweir // ------------------------------------------------------------------------- 195cdf0e10cSrcweir Reference< ::com::sun::star::io::XInputStream > SAL_CALL ODatabaseMetaDataResultSet::getCharacterStream( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException) 196cdf0e10cSrcweir { 197cdf0e10cSrcweir return NULL; 198cdf0e10cSrcweir } 199cdf0e10cSrcweir 200cdf0e10cSrcweir // ------------------------------------------------------------------------- 201cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 202cdf0e10cSrcweir { 203cdf0e10cSrcweir return getValue(columnIndex); 204cdf0e10cSrcweir } 205cdf0e10cSrcweir // ------------------------------------------------------------------------- 206cdf0e10cSrcweir 207cdf0e10cSrcweir sal_Int8 SAL_CALL ODatabaseMetaDataResultSet::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 208cdf0e10cSrcweir { 209cdf0e10cSrcweir return getValue(columnIndex); 210cdf0e10cSrcweir } 211cdf0e10cSrcweir // ------------------------------------------------------------------------- 212cdf0e10cSrcweir 213cdf0e10cSrcweir Sequence< sal_Int8 > SAL_CALL ODatabaseMetaDataResultSet::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 214cdf0e10cSrcweir { 215cdf0e10cSrcweir return getValue(columnIndex); 216cdf0e10cSrcweir } 217cdf0e10cSrcweir // ------------------------------------------------------------------------- 218cdf0e10cSrcweir 219cdf0e10cSrcweir ::com::sun::star::util::Date SAL_CALL ODatabaseMetaDataResultSet::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 220cdf0e10cSrcweir { 221cdf0e10cSrcweir return getValue(columnIndex); 222cdf0e10cSrcweir } 223cdf0e10cSrcweir // ------------------------------------------------------------------------- 224cdf0e10cSrcweir 225cdf0e10cSrcweir double SAL_CALL ODatabaseMetaDataResultSet::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 226cdf0e10cSrcweir { 227cdf0e10cSrcweir return getValue(columnIndex); 228cdf0e10cSrcweir } 229cdf0e10cSrcweir // ------------------------------------------------------------------------- 230cdf0e10cSrcweir 231cdf0e10cSrcweir float SAL_CALL ODatabaseMetaDataResultSet::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 232cdf0e10cSrcweir { 233cdf0e10cSrcweir return getValue(columnIndex); 234cdf0e10cSrcweir } 235cdf0e10cSrcweir // ------------------------------------------------------------------------- 236cdf0e10cSrcweir 237cdf0e10cSrcweir sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 238cdf0e10cSrcweir { 239cdf0e10cSrcweir return getValue(columnIndex); 240cdf0e10cSrcweir } 241cdf0e10cSrcweir 242cdf0e10cSrcweir // ------------------------------------------------------------------------- 243cdf0e10cSrcweir 244cdf0e10cSrcweir sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getRow( ) throw(SQLException, RuntimeException) 245cdf0e10cSrcweir { 246cdf0e10cSrcweir return 0; 247cdf0e10cSrcweir } 248cdf0e10cSrcweir // ------------------------------------------------------------------------- 249cdf0e10cSrcweir 250cdf0e10cSrcweir sal_Int64 SAL_CALL ODatabaseMetaDataResultSet::getLong( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 251cdf0e10cSrcweir { 252cdf0e10cSrcweir return getValue(columnIndex); 253cdf0e10cSrcweir } 254cdf0e10cSrcweir // ------------------------------------------------------------------------- 255cdf0e10cSrcweir 256cdf0e10cSrcweir Reference< XResultSetMetaData > SAL_CALL ODatabaseMetaDataResultSet::getMetaData( ) throw(SQLException, RuntimeException) 257cdf0e10cSrcweir { 258cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 259cdf0e10cSrcweir checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed ); 260cdf0e10cSrcweir 261cdf0e10cSrcweir 262cdf0e10cSrcweir if(!m_xMetaData.is()) 263cdf0e10cSrcweir m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); 264cdf0e10cSrcweir 265cdf0e10cSrcweir return m_xMetaData; 266cdf0e10cSrcweir } 267cdf0e10cSrcweir // ------------------------------------------------------------------------- 268cdf0e10cSrcweir Reference< XArray > SAL_CALL ODatabaseMetaDataResultSet::getArray( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException) 269cdf0e10cSrcweir { 270cdf0e10cSrcweir return NULL; 271cdf0e10cSrcweir } 272cdf0e10cSrcweir 273cdf0e10cSrcweir // ------------------------------------------------------------------------- 274cdf0e10cSrcweir 275cdf0e10cSrcweir Reference< XClob > SAL_CALL ODatabaseMetaDataResultSet::getClob( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException) 276cdf0e10cSrcweir { 277cdf0e10cSrcweir return NULL; 278cdf0e10cSrcweir } 279cdf0e10cSrcweir // ------------------------------------------------------------------------- 280cdf0e10cSrcweir Reference< XBlob > SAL_CALL ODatabaseMetaDataResultSet::getBlob( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException) 281cdf0e10cSrcweir { 282cdf0e10cSrcweir return NULL; 283cdf0e10cSrcweir } 284cdf0e10cSrcweir // ------------------------------------------------------------------------- 285cdf0e10cSrcweir 286cdf0e10cSrcweir Reference< XRef > SAL_CALL ODatabaseMetaDataResultSet::getRef( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException) 287cdf0e10cSrcweir { 288cdf0e10cSrcweir return NULL; 289cdf0e10cSrcweir } 290cdf0e10cSrcweir // ------------------------------------------------------------------------- 291cdf0e10cSrcweir 292cdf0e10cSrcweir Any SAL_CALL ODatabaseMetaDataResultSet::getObject( sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& /*typeMap*/ ) throw(SQLException, RuntimeException) 293cdf0e10cSrcweir { 294cdf0e10cSrcweir return getValue(columnIndex).makeAny(); 295cdf0e10cSrcweir } 296cdf0e10cSrcweir // ------------------------------------------------------------------------- 297cdf0e10cSrcweir 298cdf0e10cSrcweir sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 299cdf0e10cSrcweir { 300cdf0e10cSrcweir return getValue(columnIndex); 301cdf0e10cSrcweir } 302cdf0e10cSrcweir // ------------------------------------------------------------------------- 303cdf0e10cSrcweir 304cdf0e10cSrcweir ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSet::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 305cdf0e10cSrcweir { 306cdf0e10cSrcweir return getValue(columnIndex); 307cdf0e10cSrcweir } 308cdf0e10cSrcweir 309cdf0e10cSrcweir // ------------------------------------------------------------------------- 310cdf0e10cSrcweir 311cdf0e10cSrcweir 312cdf0e10cSrcweir ::com::sun::star::util::Time SAL_CALL ODatabaseMetaDataResultSet::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 313cdf0e10cSrcweir { 314cdf0e10cSrcweir return getValue(columnIndex); 315cdf0e10cSrcweir } 316cdf0e10cSrcweir // ------------------------------------------------------------------------- 317cdf0e10cSrcweir 318cdf0e10cSrcweir 319cdf0e10cSrcweir ::com::sun::star::util::DateTime SAL_CALL ODatabaseMetaDataResultSet::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 320cdf0e10cSrcweir { 321cdf0e10cSrcweir return getValue(columnIndex); 322cdf0e10cSrcweir } 323cdf0e10cSrcweir // ------------------------------------------------------------------------- 324cdf0e10cSrcweir 325cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isAfterLast( ) throw(SQLException, RuntimeException) 326cdf0e10cSrcweir { 327cdf0e10cSrcweir return m_bEOF; 328cdf0e10cSrcweir } 329cdf0e10cSrcweir // ------------------------------------------------------------------------- 330cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isFirst( ) throw(SQLException, RuntimeException) 331cdf0e10cSrcweir { 332cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 333cdf0e10cSrcweir return sal_False; 334cdf0e10cSrcweir } 335cdf0e10cSrcweir // ------------------------------------------------------------------------- 336cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isLast( ) throw(SQLException, RuntimeException) 337cdf0e10cSrcweir { 338cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 339cdf0e10cSrcweir return sal_False; 340cdf0e10cSrcweir } 341cdf0e10cSrcweir // ------------------------------------------------------------------------- 342cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::beforeFirst( ) throw(SQLException, RuntimeException) 343cdf0e10cSrcweir { 344cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 345cdf0e10cSrcweir } 346cdf0e10cSrcweir // ------------------------------------------------------------------------- 347cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::afterLast( ) throw(SQLException, RuntimeException) 348cdf0e10cSrcweir { 349cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 350cdf0e10cSrcweir } 351cdf0e10cSrcweir // ------------------------------------------------------------------------- 352cdf0e10cSrcweir 353cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::close( ) throw(SQLException, RuntimeException) 354cdf0e10cSrcweir { 355cdf0e10cSrcweir { 356cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 357cdf0e10cSrcweir checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed ); 358cdf0e10cSrcweir 359cdf0e10cSrcweir } 360cdf0e10cSrcweir dispose(); 361cdf0e10cSrcweir } 362cdf0e10cSrcweir // ------------------------------------------------------------------------- 363cdf0e10cSrcweir 364cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::first( ) throw(SQLException, RuntimeException) 365cdf0e10cSrcweir { 366cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 367cdf0e10cSrcweir return sal_False; 368cdf0e10cSrcweir } 369cdf0e10cSrcweir // ------------------------------------------------------------------------- 370cdf0e10cSrcweir 371cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::last( ) throw(SQLException, RuntimeException) 372cdf0e10cSrcweir { 373cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 374cdf0e10cSrcweir return sal_False; 375cdf0e10cSrcweir } 376cdf0e10cSrcweir // ------------------------------------------------------------------------- 377cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::absolute( sal_Int32 /*row*/ ) throw(SQLException, RuntimeException) 378cdf0e10cSrcweir { 379cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 380cdf0e10cSrcweir return sal_False; 381cdf0e10cSrcweir } 382cdf0e10cSrcweir // ------------------------------------------------------------------------- 383cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::relative( sal_Int32 /*row*/ ) throw(SQLException, RuntimeException) 384cdf0e10cSrcweir { 385cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 386cdf0e10cSrcweir return sal_False; 387cdf0e10cSrcweir } 388cdf0e10cSrcweir // ------------------------------------------------------------------------- 389cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::previous( ) throw(SQLException, RuntimeException) 390cdf0e10cSrcweir { 391cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 392cdf0e10cSrcweir return sal_False; 393cdf0e10cSrcweir } 394cdf0e10cSrcweir // ------------------------------------------------------------------------- 395cdf0e10cSrcweir Reference< XInterface > SAL_CALL ODatabaseMetaDataResultSet::getStatement( ) throw(SQLException, RuntimeException) 396cdf0e10cSrcweir { 397cdf0e10cSrcweir return m_aStatement.get(); 398cdf0e10cSrcweir } 399cdf0e10cSrcweir // ------------------------------------------------------------------------- 400cdf0e10cSrcweir 401cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowDeleted( ) throw(SQLException, RuntimeException) 402cdf0e10cSrcweir { 403cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 404cdf0e10cSrcweir return sal_False; 405cdf0e10cSrcweir } 406cdf0e10cSrcweir // ------------------------------------------------------------------------- 407cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowInserted( ) throw(SQLException, RuntimeException) 408cdf0e10cSrcweir { 409cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 410cdf0e10cSrcweir return sal_False; 411cdf0e10cSrcweir } 412cdf0e10cSrcweir // ------------------------------------------------------------------------- 413cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowUpdated( ) throw(SQLException, RuntimeException) 414cdf0e10cSrcweir { 415cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException(*this); 416cdf0e10cSrcweir return sal_False; 417cdf0e10cSrcweir } 418cdf0e10cSrcweir // ------------------------------------------------------------------------- 419cdf0e10cSrcweir 420cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isBeforeFirst( ) throw(SQLException, RuntimeException) 421cdf0e10cSrcweir { 422cdf0e10cSrcweir return m_bBOF; 423cdf0e10cSrcweir } 424cdf0e10cSrcweir // ------------------------------------------------------------------------- 425cdf0e10cSrcweir 426cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::next( ) throw(SQLException, RuntimeException) 427cdf0e10cSrcweir { 428cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 429cdf0e10cSrcweir checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed ); 430cdf0e10cSrcweir 431cdf0e10cSrcweir if ( m_bBOF ) 432cdf0e10cSrcweir { 433cdf0e10cSrcweir m_aRowsIter = m_aRows.begin(); 434cdf0e10cSrcweir m_bBOF = sal_False; 435cdf0e10cSrcweir } 436cdf0e10cSrcweir else 437cdf0e10cSrcweir { 438cdf0e10cSrcweir if ( m_bEOF ) 439cdf0e10cSrcweir throwFunctionSequenceException( *this ); 440cdf0e10cSrcweir else 441cdf0e10cSrcweir if ( m_aRowsIter != m_aRows.end() ) 442cdf0e10cSrcweir ++m_aRowsIter; 443cdf0e10cSrcweir } 444cdf0e10cSrcweir 445cdf0e10cSrcweir bool bSuccess = m_aRowsIter != m_aRows.end(); 446cdf0e10cSrcweir if ( !bSuccess ) 447cdf0e10cSrcweir { 448cdf0e10cSrcweir m_bEOF = sal_True; 449cdf0e10cSrcweir m_bBOF = m_aRows.empty(); 450cdf0e10cSrcweir } 451cdf0e10cSrcweir return bSuccess; 452cdf0e10cSrcweir } 453cdf0e10cSrcweir // ------------------------------------------------------------------------- 454cdf0e10cSrcweir 455cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::wasNull( ) throw(SQLException, RuntimeException) 456cdf0e10cSrcweir { 457cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 458cdf0e10cSrcweir checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed ); 459cdf0e10cSrcweir 460cdf0e10cSrcweir 461cdf0e10cSrcweir if(m_aRowsIter == m_aRows.end() || !(*m_aRowsIter)[m_nColPos].isValid()) 462cdf0e10cSrcweir return sal_True; 463cdf0e10cSrcweir 464cdf0e10cSrcweir return (*m_aRowsIter)[m_nColPos]->getValue().isNull(); 465cdf0e10cSrcweir } 466cdf0e10cSrcweir // ------------------------------------------------------------------------- 467cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::refreshRow( ) throw(SQLException, RuntimeException) 468cdf0e10cSrcweir { 469cdf0e10cSrcweir } 470cdf0e10cSrcweir // ------------------------------------------------------------------------- 471cdf0e10cSrcweir 472cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::cancel( ) throw(RuntimeException) 473cdf0e10cSrcweir { 474cdf0e10cSrcweir } 475cdf0e10cSrcweir // ------------------------------------------------------------------------- 476cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::clearWarnings( ) throw(SQLException, RuntimeException) 477cdf0e10cSrcweir { 478cdf0e10cSrcweir } 479cdf0e10cSrcweir // ------------------------------------------------------------------------- 480cdf0e10cSrcweir Any SAL_CALL ODatabaseMetaDataResultSet::getWarnings( ) throw(SQLException, RuntimeException) 481cdf0e10cSrcweir { 482cdf0e10cSrcweir return Any(); 483cdf0e10cSrcweir } 484cdf0e10cSrcweir // ------------------------------------------------------------------------- 485cdf0e10cSrcweir ::cppu::IPropertyArrayHelper* ODatabaseMetaDataResultSet::createArrayHelper( ) const 486cdf0e10cSrcweir { 487cdf0e10cSrcweir Sequence< Property > aProps; 488cdf0e10cSrcweir describeProperties(aProps); 489cdf0e10cSrcweir return new ::cppu::OPropertyArrayHelper(aProps); 490cdf0e10cSrcweir } 491cdf0e10cSrcweir // ------------------------------------------------------------------------- 492cdf0e10cSrcweir ::cppu::IPropertyArrayHelper & ODatabaseMetaDataResultSet::getInfoHelper() 493cdf0e10cSrcweir { 494cdf0e10cSrcweir return *const_cast<ODatabaseMetaDataResultSet*>(this)->getArrayHelper(); 495cdf0e10cSrcweir } 496cdf0e10cSrcweir // ------------------------------------------------------------------------- 497cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setProceduresMap() 498cdf0e10cSrcweir { 499cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 500cdf0e10cSrcweir pMetaData->setProceduresMap(); 501cdf0e10cSrcweir m_xMetaData = pMetaData; 502cdf0e10cSrcweir } 503cdf0e10cSrcweir // ------------------------------------------------------------------------- 504cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setCatalogsMap() 505cdf0e10cSrcweir { 506cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 507cdf0e10cSrcweir pMetaData->setCatalogsMap(); 508cdf0e10cSrcweir m_xMetaData = pMetaData; 509cdf0e10cSrcweir } 510cdf0e10cSrcweir // ------------------------------------------------------------------------- 511cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setSchemasMap() 512cdf0e10cSrcweir { 513cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 514cdf0e10cSrcweir pMetaData->setSchemasMap(); 515cdf0e10cSrcweir m_xMetaData = pMetaData; 516cdf0e10cSrcweir } 517cdf0e10cSrcweir // ------------------------------------------------------------------------- 518cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setColumnPrivilegesMap() 519cdf0e10cSrcweir { 520cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 521cdf0e10cSrcweir pMetaData->setColumnPrivilegesMap(); 522cdf0e10cSrcweir m_xMetaData = pMetaData; 523cdf0e10cSrcweir } 524cdf0e10cSrcweir // ------------------------------------------------------------------------- 525cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setColumnsMap() 526cdf0e10cSrcweir { 527cdf0e10cSrcweir 528cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 529cdf0e10cSrcweir pMetaData->setColumnsMap(); 530cdf0e10cSrcweir m_xMetaData = pMetaData; 531cdf0e10cSrcweir } 532cdf0e10cSrcweir // ------------------------------------------------------------------------- 533cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setTablesMap() 534cdf0e10cSrcweir { 535cdf0e10cSrcweir 536cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 537cdf0e10cSrcweir pMetaData->setTablesMap(); 538cdf0e10cSrcweir m_xMetaData = pMetaData; 539cdf0e10cSrcweir } 540cdf0e10cSrcweir // ------------------------------------------------------------------------- 541cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setProcedureColumnsMap() 542cdf0e10cSrcweir { 543cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 544cdf0e10cSrcweir pMetaData->setProcedureColumnsMap(); 545cdf0e10cSrcweir m_xMetaData = pMetaData; 546cdf0e10cSrcweir } 547cdf0e10cSrcweir // ------------------------------------------------------------------------- 548cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setPrimaryKeysMap() 549cdf0e10cSrcweir { 550cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 551cdf0e10cSrcweir pMetaData->setPrimaryKeysMap(); 552cdf0e10cSrcweir m_xMetaData = pMetaData; 553cdf0e10cSrcweir } 554cdf0e10cSrcweir // ------------------------------------------------------------------------- 555cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setIndexInfoMap() 556cdf0e10cSrcweir { 557cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 558cdf0e10cSrcweir pMetaData->setIndexInfoMap(); 559cdf0e10cSrcweir m_xMetaData = pMetaData; 560cdf0e10cSrcweir } 561cdf0e10cSrcweir // ------------------------------------------------------------------------- 562cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setTablePrivilegesMap() 563cdf0e10cSrcweir { 564cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 565cdf0e10cSrcweir pMetaData->setTablePrivilegesMap(); 566cdf0e10cSrcweir m_xMetaData = pMetaData; 567cdf0e10cSrcweir } 568cdf0e10cSrcweir // ------------------------------------------------------------------------- 569cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setCrossReferenceMap() 570cdf0e10cSrcweir { 571cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 572cdf0e10cSrcweir pMetaData->setCrossReferenceMap(); 573cdf0e10cSrcweir m_xMetaData = pMetaData; 574cdf0e10cSrcweir } 575cdf0e10cSrcweir // ------------------------------------------------------------------------- 576cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setVersionColumnsMap() 577cdf0e10cSrcweir { 578cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 579cdf0e10cSrcweir pMetaData->setVersionColumnsMap(); 580cdf0e10cSrcweir m_xMetaData = pMetaData; 581cdf0e10cSrcweir } 582cdf0e10cSrcweir // ------------------------------------------------------------------------- 583cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setBestRowIdentifierMap() 584cdf0e10cSrcweir { 585cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 586cdf0e10cSrcweir pMetaData->setBestRowIdentifierMap(); 587cdf0e10cSrcweir m_xMetaData = pMetaData; 588cdf0e10cSrcweir } 589cdf0e10cSrcweir // ------------------------------------------------------------------------- 590cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setTypeInfoMap() 591cdf0e10cSrcweir { 592cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 593cdf0e10cSrcweir pMetaData->setTypeInfoMap(); 594cdf0e10cSrcweir m_xMetaData = pMetaData; 595cdf0e10cSrcweir } 596cdf0e10cSrcweir // ------------------------------------------------------------------------- 597cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setTableTypes() 598cdf0e10cSrcweir { 599cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 600cdf0e10cSrcweir pMetaData->setTableTypes(); 601cdf0e10cSrcweir m_xMetaData = pMetaData; 602cdf0e10cSrcweir } 603cdf0e10cSrcweir // ------------------------------------------------------------------------- 604cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setExportedKeysMap() 605cdf0e10cSrcweir { 606cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 607cdf0e10cSrcweir pMetaData->setExportedKeysMap(); 608cdf0e10cSrcweir m_xMetaData = pMetaData; 609cdf0e10cSrcweir } 610cdf0e10cSrcweir // ------------------------------------------------------------------------- 611cdf0e10cSrcweir void ODatabaseMetaDataResultSet::setImportedKeysMap() 612cdf0e10cSrcweir { 613cdf0e10cSrcweir ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(); 614cdf0e10cSrcweir pMetaData->setImportedKeysMap(); 615cdf0e10cSrcweir m_xMetaData = pMetaData; 616cdf0e10cSrcweir } 617cdf0e10cSrcweir // ----------------------------------------------------------------------------- 618cdf0e10cSrcweir Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL ODatabaseMetaDataResultSet::getPropertySetInfo( ) throw(RuntimeException) 619cdf0e10cSrcweir { 620cdf0e10cSrcweir return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper()); 621cdf0e10cSrcweir } 622cdf0e10cSrcweir // ----------------------------------------------------------------------------- 623cdf0e10cSrcweir ORowSetValueDecorator& ORowSetValueDecorator::operator=(const ORowSetValue& _aValue) 624cdf0e10cSrcweir { 625cdf0e10cSrcweir m_aValue = _aValue; 626cdf0e10cSrcweir return *this; 627cdf0e10cSrcweir } 628cdf0e10cSrcweir // ----------------------------------------------------------------------------- 629cdf0e10cSrcweir const ORowSetValue& ODatabaseMetaDataResultSet::getValue(sal_Int32 columnIndex) 630cdf0e10cSrcweir { 631cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 632cdf0e10cSrcweir checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed ); 633cdf0e10cSrcweir 634cdf0e10cSrcweir if ( isBeforeFirst() || isAfterLast() ) 635cdf0e10cSrcweir ::dbtools::throwFunctionSequenceException( *this ); 636cdf0e10cSrcweir 637cdf0e10cSrcweir checkIndex(columnIndex ); 638cdf0e10cSrcweir m_nColPos = columnIndex; 639cdf0e10cSrcweir 640cdf0e10cSrcweir if(m_aRowsIter != m_aRows.end() && (*m_aRowsIter)[columnIndex].isValid()) 641cdf0e10cSrcweir return *(*m_aRowsIter)[columnIndex]; 642cdf0e10cSrcweir return m_aEmptyValue; 643cdf0e10cSrcweir } 644cdf0e10cSrcweir // ----------------------------------------------------------------------------- 645cdf0e10cSrcweir /// return an empty ORowSetValueDecorator 646cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getEmptyValue() 647cdf0e10cSrcweir { 648cdf0e10cSrcweir static ORowSetValueDecoratorRef aEmptyValueRef = new ORowSetValueDecorator(); 649cdf0e10cSrcweir return aEmptyValueRef; 650cdf0e10cSrcweir } 651cdf0e10cSrcweir // ----------------------------------------------------------------------------- 652cdf0e10cSrcweir /// return an ORowSetValueDecorator with 0 as value 653cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::get0Value() 654cdf0e10cSrcweir { 655cdf0e10cSrcweir static ORowSetValueDecoratorRef a0ValueRef = new ORowSetValueDecorator((sal_Int32)0); 656cdf0e10cSrcweir return a0ValueRef; 657cdf0e10cSrcweir } 658cdf0e10cSrcweir // ----------------------------------------------------------------------------- 659cdf0e10cSrcweir /// return an ORowSetValueDecorator with 1 as value 660cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::get1Value() 661cdf0e10cSrcweir { 662cdf0e10cSrcweir static ORowSetValueDecoratorRef a1ValueRef = new ORowSetValueDecorator((sal_Int32)1); 663cdf0e10cSrcweir return a1ValueRef; 664cdf0e10cSrcweir } 665cdf0e10cSrcweir // ----------------------------------------------------------------------------- 666cdf0e10cSrcweir /// return an ORowSetValueDecorator with ColumnSearch::BASIC as value 667cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getBasicValue() 668cdf0e10cSrcweir { 669cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(ColumnSearch::BASIC); 670cdf0e10cSrcweir return aValueRef; 671cdf0e10cSrcweir } 672cdf0e10cSrcweir // ----------------------------------------------------------------------------- 673cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getSelectValue() 674cdf0e10cSrcweir { 675cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("SELECT")); 676cdf0e10cSrcweir return aValueRef; 677cdf0e10cSrcweir } 678cdf0e10cSrcweir // ----------------------------------------------------------------------------- 679cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getInsertValue() 680cdf0e10cSrcweir { 681cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("INSERT")); 682cdf0e10cSrcweir return aValueRef; 683cdf0e10cSrcweir } 684cdf0e10cSrcweir // ----------------------------------------------------------------------------- 685cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getDeleteValue() 686cdf0e10cSrcweir { 687cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("DELETE")); 688cdf0e10cSrcweir return aValueRef; 689cdf0e10cSrcweir } 690cdf0e10cSrcweir // ----------------------------------------------------------------------------- 691cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getUpdateValue() 692cdf0e10cSrcweir { 693cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("UPDATE")); 694cdf0e10cSrcweir return aValueRef; 695cdf0e10cSrcweir } 696cdf0e10cSrcweir // ----------------------------------------------------------------------------- 697cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getCreateValue() 698cdf0e10cSrcweir { 699cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("CREATE")); 700cdf0e10cSrcweir return aValueRef; 701cdf0e10cSrcweir } 702cdf0e10cSrcweir // ----------------------------------------------------------------------------- 703cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getReadValue() 704cdf0e10cSrcweir { 705cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("READ")); 706cdf0e10cSrcweir return aValueRef; 707cdf0e10cSrcweir } 708cdf0e10cSrcweir // ----------------------------------------------------------------------------- 709cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getAlterValue() 710cdf0e10cSrcweir { 711cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("ALTER")); 712cdf0e10cSrcweir return aValueRef; 713cdf0e10cSrcweir } 714cdf0e10cSrcweir // ----------------------------------------------------------------------------- 715cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getDropValue() 716cdf0e10cSrcweir { 717cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("DROP")); 718cdf0e10cSrcweir return aValueRef; 719cdf0e10cSrcweir } 720cdf0e10cSrcweir // ----------------------------------------------------------------------------- 721cdf0e10cSrcweir ORowSetValueDecoratorRef ODatabaseMetaDataResultSet::getQuoteValue() 722cdf0e10cSrcweir { 723cdf0e10cSrcweir static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("'")); 724cdf0e10cSrcweir return aValueRef; 725cdf0e10cSrcweir } 726cdf0e10cSrcweir // ----------------------------------------------------------------------------- 727cdf0e10cSrcweir void SAL_CALL ODatabaseMetaDataResultSet::initialize( const Sequence< Any >& _aArguments ) throw (Exception, RuntimeException) 728cdf0e10cSrcweir { 729cdf0e10cSrcweir if ( _aArguments.getLength() == 2 ) 730cdf0e10cSrcweir { 731cdf0e10cSrcweir sal_Int32 nResultSetType = 0; 732cdf0e10cSrcweir if ( _aArguments[0] >>= nResultSetType) 733cdf0e10cSrcweir { 734cdf0e10cSrcweir setType(static_cast<MetaDataResultSetType>(nResultSetType)); 735cdf0e10cSrcweir Sequence< Sequence<Any> > aRows; 736cdf0e10cSrcweir if ( _aArguments[1] >>= aRows ) 737cdf0e10cSrcweir { 738cdf0e10cSrcweir ORows aRowsToSet; 739cdf0e10cSrcweir const Sequence<Any>* pRowsIter = aRows.getConstArray(); 740cdf0e10cSrcweir const Sequence<Any>* pRowsEnd = pRowsIter + aRows.getLength(); 741cdf0e10cSrcweir for (; pRowsIter != pRowsEnd;++pRowsIter) 742cdf0e10cSrcweir { 743cdf0e10cSrcweir ORow aRowToSet; 744cdf0e10cSrcweir const Any* pRowIter = pRowsIter->getConstArray(); 745cdf0e10cSrcweir const Any* pRowEnd = pRowIter + pRowsIter->getLength(); 746cdf0e10cSrcweir for (; pRowIter != pRowEnd;++pRowIter) 747cdf0e10cSrcweir { 748cdf0e10cSrcweir ORowSetValueDecoratorRef aValue; 749cdf0e10cSrcweir switch( pRowIter->getValueTypeClass() ) 750cdf0e10cSrcweir { 751cdf0e10cSrcweir case TypeClass_BOOLEAN: 752cdf0e10cSrcweir { 753cdf0e10cSrcweir sal_Bool bValue = sal_False; 754cdf0e10cSrcweir *pRowIter >>= bValue; 755cdf0e10cSrcweir aValue = new ORowSetValueDecorator(ORowSetValue(bValue)); 756cdf0e10cSrcweir } 757cdf0e10cSrcweir break; 758cdf0e10cSrcweir case TypeClass_BYTE: 759cdf0e10cSrcweir { 760cdf0e10cSrcweir sal_Int8 nValue(0); 761cdf0e10cSrcweir *pRowIter >>= nValue; 762cdf0e10cSrcweir aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); 763cdf0e10cSrcweir } 764cdf0e10cSrcweir break; 765cdf0e10cSrcweir case TypeClass_SHORT: 766cdf0e10cSrcweir case TypeClass_UNSIGNED_SHORT: 767cdf0e10cSrcweir { 768cdf0e10cSrcweir sal_Int16 nValue(0); 769cdf0e10cSrcweir *pRowIter >>= nValue; 770cdf0e10cSrcweir aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); 771cdf0e10cSrcweir } 772cdf0e10cSrcweir break; 773cdf0e10cSrcweir case TypeClass_LONG: 774cdf0e10cSrcweir case TypeClass_UNSIGNED_LONG: 775cdf0e10cSrcweir { 776cdf0e10cSrcweir sal_Int32 nValue(0); 777cdf0e10cSrcweir *pRowIter >>= nValue; 778cdf0e10cSrcweir aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); 779cdf0e10cSrcweir } 780cdf0e10cSrcweir break; 781cdf0e10cSrcweir case TypeClass_HYPER: 782cdf0e10cSrcweir case TypeClass_UNSIGNED_HYPER: 783cdf0e10cSrcweir { 784cdf0e10cSrcweir sal_Int64 nValue(0); 785cdf0e10cSrcweir *pRowIter >>= nValue; 786cdf0e10cSrcweir aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); 787cdf0e10cSrcweir } 788cdf0e10cSrcweir break; 789cdf0e10cSrcweir case TypeClass_FLOAT: 790cdf0e10cSrcweir { 791cdf0e10cSrcweir float nValue(0.0); 792cdf0e10cSrcweir *pRowIter >>= nValue; 793cdf0e10cSrcweir aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); 794cdf0e10cSrcweir } 795cdf0e10cSrcweir break; 796cdf0e10cSrcweir case TypeClass_DOUBLE: 797cdf0e10cSrcweir { 798cdf0e10cSrcweir double nValue(0.0); 799cdf0e10cSrcweir *pRowIter >>= nValue; 800cdf0e10cSrcweir aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); 801cdf0e10cSrcweir } 802cdf0e10cSrcweir break; 803cdf0e10cSrcweir case TypeClass_STRING: 804cdf0e10cSrcweir { 805cdf0e10cSrcweir ::rtl::OUString sValue; 806cdf0e10cSrcweir *pRowIter >>= sValue; 807cdf0e10cSrcweir aValue = new ORowSetValueDecorator(ORowSetValue(sValue)); 808cdf0e10cSrcweir } 809cdf0e10cSrcweir break; 810cdf0e10cSrcweir default: 811cdf0e10cSrcweir break; 812cdf0e10cSrcweir } 813cdf0e10cSrcweir aRowToSet.push_back(aValue); 814cdf0e10cSrcweir } 815cdf0e10cSrcweir aRowsToSet.push_back(aRowToSet); 816cdf0e10cSrcweir } // for (; pRowsIter != pRowsEnd;++pRowsIter 817cdf0e10cSrcweir setRows(aRowsToSet); 818cdf0e10cSrcweir } 819cdf0e10cSrcweir } 820cdf0e10cSrcweir } 821cdf0e10cSrcweir } 822cdf0e10cSrcweir // XServiceInfo 823cdf0e10cSrcweir // -------------------------------------------------------------------------------- 824cdf0e10cSrcweir //------------------------------------------------------------------------------ 825cdf0e10cSrcweir rtl::OUString ODatabaseMetaDataResultSet::getImplementationName_Static( ) throw(RuntimeException) 826cdf0e10cSrcweir { 827cdf0e10cSrcweir return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet")); 828cdf0e10cSrcweir } 829cdf0e10cSrcweir //------------------------------------------------------------------------------ 830cdf0e10cSrcweir Sequence< ::rtl::OUString > ODatabaseMetaDataResultSet::getSupportedServiceNames_Static( ) throw (RuntimeException) 831cdf0e10cSrcweir { 832cdf0e10cSrcweir Sequence< ::rtl::OUString > aSNS( 1 ); 833cdf0e10cSrcweir aSNS[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdbc.ResultSet"); 834cdf0e10cSrcweir return aSNS; 835cdf0e10cSrcweir } 836cdf0e10cSrcweir //------------------------------------------------------------------ 837cdf0e10cSrcweir ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSet::getImplementationName( ) throw(RuntimeException) 838cdf0e10cSrcweir { 839cdf0e10cSrcweir return getImplementationName_Static(); 840cdf0e10cSrcweir } 841cdf0e10cSrcweir 842cdf0e10cSrcweir //------------------------------------------------------------------ 843cdf0e10cSrcweir sal_Bool SAL_CALL ODatabaseMetaDataResultSet::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException) 844cdf0e10cSrcweir { 845cdf0e10cSrcweir Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); 846cdf0e10cSrcweir const ::rtl::OUString* pSupported = aSupported.getConstArray(); 847cdf0e10cSrcweir const ::rtl::OUString* pEnd = pSupported + aSupported.getLength(); 848cdf0e10cSrcweir for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported) 849cdf0e10cSrcweir ; 850cdf0e10cSrcweir 851cdf0e10cSrcweir return pSupported != pEnd; 852cdf0e10cSrcweir } 853cdf0e10cSrcweir //------------------------------------------------------------------ 854cdf0e10cSrcweir Sequence< ::rtl::OUString > SAL_CALL ODatabaseMetaDataResultSet::getSupportedServiceNames( ) throw(RuntimeException) 855cdf0e10cSrcweir { 856cdf0e10cSrcweir return getSupportedServiceNames_Static(); 857cdf0e10cSrcweir } 858cdf0e10cSrcweir // ------------------------------------------------------------------------- 859cdf0e10cSrcweir namespace connectivity 860cdf0e10cSrcweir { 861cdf0e10cSrcweir Reference< XInterface > SAL_CALL ODatabaseMetaDataResultSet_CreateInstance(const Reference< XComponentContext >& ) throw( Exception ) 862cdf0e10cSrcweir { 863cdf0e10cSrcweir return *(new ODatabaseMetaDataResultSet()); 864cdf0e10cSrcweir } 865cdf0e10cSrcweir } 866cdf0e10cSrcweir 867cdf0e10cSrcweir // ----------------------------------------------------------------------------- 868cdf0e10cSrcweir namespace 869cdf0e10cSrcweir { 870cdf0e10cSrcweir cppu::ImplementationEntry entries[] = { 871cdf0e10cSrcweir { &ODatabaseMetaDataResultSet_CreateInstance, &ODatabaseMetaDataResultSet::getImplementationName_Static, &ODatabaseMetaDataResultSet::getSupportedServiceNames_Static, 872cdf0e10cSrcweir &cppu::createSingleComponentFactory, 0, 0 }, 873cdf0e10cSrcweir { &ParameterSubstitution::create, &ParameterSubstitution::getImplementationName_Static, &ParameterSubstitution::getSupportedServiceNames_Static, 874cdf0e10cSrcweir &cppu::createSingleComponentFactory, 0, 0 }, 875cdf0e10cSrcweir { 0, 0, 0, 0, 0, 0 } 876cdf0e10cSrcweir }; 877cdf0e10cSrcweir } 878cdf0e10cSrcweir using ::rtl::OUString; 879cdf0e10cSrcweir using ::com::sun::star::uno::Reference; 880cdf0e10cSrcweir using ::com::sun::star::uno::Sequence; 881cdf0e10cSrcweir using ::com::sun::star::registry::XRegistryKey; 882cdf0e10cSrcweir using ::com::sun::star::registry::InvalidRegistryException; 883cdf0e10cSrcweir using ::com::sun::star::registry::InvalidValueException; 884cdf0e10cSrcweir using ::com::sun::star::lang::XMultiServiceFactory; 885cdf0e10cSrcweir 886cdf0e10cSrcweir //========================================================================== 887cdf0e10cSrcweir //= registration 888cdf0e10cSrcweir //========================================================================== 889cdf0e10cSrcweir extern "C" 890cdf0e10cSrcweir { 891cdf0e10cSrcweir 892cdf0e10cSrcweir //--------------------------------------------------------------------------------------- 893cdf0e10cSrcweir SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(const sal_Char** _ppEnvTypeName, uno_Environment** /*_ppEnv*/) 894cdf0e10cSrcweir { 895cdf0e10cSrcweir *_ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; 896cdf0e10cSrcweir } 897cdf0e10cSrcweir 898cdf0e10cSrcweir //--------------------------------------------------------------------------------------- 899cdf0e10cSrcweir SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory(const sal_Char* implName, ::com::sun::star::lang::XMultiServiceFactory* serviceManager, void* registryKey) 900cdf0e10cSrcweir { 901cdf0e10cSrcweir return cppu::component_getFactoryHelper(implName, serviceManager, registryKey, entries); 902cdf0e10cSrcweir } 903cdf0e10cSrcweir 904cdf0e10cSrcweir } // extern "C" 905