1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef _CONNECTIVITY_EVOAB_RESULTSET_HXX_ 29 #define _CONNECTIVITY_EVOAB_RESULTSET_HXX_ 30 31 #include <com/sun/star/sdbc/XResultSet.hpp> 32 #include <com/sun/star/sdbc/XRow.hpp> 33 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp> 34 #include <com/sun/star/sdbc/XCloseable.hpp> 35 #include <com/sun/star/sdbc/XColumnLocate.hpp> 36 #include <com/sun/star/util/XCancellable.hpp> 37 #include <com/sun/star/sdbc/XWarningsSupplier.hpp> 38 #include <com/sun/star/sdbc/XResultSetUpdate.hpp> 39 #include <com/sun/star/sdbc/XRowUpdate.hpp> 40 #include <com/sun/star/sdbcx/XRowLocate.hpp> 41 #include <com/sun/star/sdbcx/XDeleteRows.hpp> 42 #include <cppuhelper/compbase8.hxx> 43 #include <comphelper/proparrhlp.hxx> 44 #include <comphelper/propertycontainer.hxx> 45 #include "connectivity/CommonTools.hxx" 46 #include "connectivity/FValue.hxx" 47 #include "connectivity/warningscontainer.hxx" 48 #include "NStatement.hxx" 49 #include "OSubComponent.hxx" 50 #include "NResultSetMetaData.hxx" 51 52 namespace connectivity 53 { 54 namespace evoab 55 { 56 typedef ::cppu::WeakComponentImplHelper8 < ::com::sun::star::sdbc::XResultSet 57 , ::com::sun::star::sdbc::XRow 58 , ::com::sun::star::sdbc::XResultSetMetaDataSupplier 59 , ::com::sun::star::util::XCancellable 60 , ::com::sun::star::sdbc::XWarningsSupplier 61 , ::com::sun::star::sdbc::XCloseable 62 , ::com::sun::star::sdbc::XColumnLocate 63 , ::com::sun::star::lang::XServiceInfo 64 > OResultSet_BASE; 65 66 67 class OEvoabResultSet :public comphelper::OBaseMutex 68 ,public OResultSet_BASE 69 ,public ::comphelper::OPropertyContainer 70 ,public ::comphelper::OPropertyArrayUsageHelper<OEvoabResultSet> 71 { 72 73 protected: 74 75 OCommonStatement* m_pStatement; 76 OEvoabConnection* m_pConnection; 77 ::com::sun::star::uno::WeakReferenceHelper m_aStatement; 78 ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > m_xMetaData; 79 ::dbtools::WarningsContainer m_aWarnings; 80 81 bool m_bWasNull; 82 // <properties> 83 sal_Int32 m_nFetchSize; 84 sal_Int32 m_nResultSetType; 85 sal_Int32 m_nFetchDirection; 86 sal_Int32 m_nResultSetConcurrency; 87 // </properties> 88 89 // Data & iteration 90 GList *m_pContacts; 91 sal_Int32 m_nIndex; 92 sal_Int32 m_nLength; 93 EContact *getCur() 94 { 95 gpointer pData = g_list_nth_data (m_pContacts, m_nIndex); 96 return pData ? E_CONTACT (pData) : NULL; 97 } 98 99 // OPropertyArrayUsageHelper 100 virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const; 101 // OPropertySetHelper 102 virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper(); 103 104 // you can't delete objects of this type 105 virtual ~OEvoabResultSet(); 106 public: 107 DECLARE_SERVICE_INFO(); 108 109 OEvoabResultSet( OCommonStatement *pStmt, OEvoabConnection *pConnection ); 110 void construct( const QueryData& _rData ); 111 112 OEvoabConnection * getConnection() { return m_pConnection; } 113 114 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > operator *() 115 { 116 return ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >(*(OResultSet_BASE*)this); 117 } 118 119 // ::cppu::OComponentHelper 120 virtual void SAL_CALL disposing(void); 121 // XInterface 122 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); 123 virtual void SAL_CALL acquire() throw(); 124 virtual void SAL_CALL release() throw(); 125 //XTypeProvider 126 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); 127 // XPropertySet 128 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); 129 // XResultSet 130 virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 131 virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 132 virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 133 virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 134 virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 135 virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 136 virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 137 virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 138 virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 139 virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 140 virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 141 virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 142 virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 143 virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 144 virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 145 virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 146 virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 147 virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 148 // XRow 149 virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 150 virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 151 virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 152 virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 153 virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 154 virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 155 virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 156 virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 157 virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 158 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 159 virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 160 virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 161 virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 162 virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 163 virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 164 virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 165 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 166 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 167 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 168 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 169 // XCancellable 170 virtual void SAL_CALL cancel( ) throw(::com::sun::star::uno::RuntimeException); 171 // XCloseable 172 virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 173 // XResultSetMetaDataSupplier 174 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 175 // XWarningsSupplier 176 virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 177 virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 178 // XColumnLocate 179 virtual sal_Int32 SAL_CALL findColumn( const ::rtl::OUString& columnName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 180 }; 181 } 182 } 183 #endif // CONNECTIVITY_SRESULTSET_HXX 184