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