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_CALC_CONNECTION_HXX_ 29 #define _CONNECTIVITY_CALC_CONNECTION_HXX_ 30 31 #include "file/FConnection.hxx" 32 33 namespace com { namespace sun { namespace star { namespace sheet { 34 class XSpreadsheetDocument; 35 } } } } 36 37 38 namespace connectivity 39 { 40 namespace calc 41 { 42 class ODriver; 43 class OCalcConnection : public file::OConnection 44 { 45 // the spreadsheet document: 46 ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheetDocument > m_xDoc; 47 ::rtl::OUString m_sPassword; 48 String m_aFileName; 49 oslInterlockedCount m_nDocCount; 50 51 public: 52 OCalcConnection(ODriver* _pDriver); 53 virtual ~OCalcConnection(); 54 55 virtual void construct(const ::rtl::OUString& _rUrl, 56 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rInfo ) 57 throw( ::com::sun::star::sdbc::SQLException); 58 59 // XServiceInfo 60 DECLARE_SERVICE_INFO(); 61 62 // OComponentHelper 63 virtual void SAL_CALL disposing(void); 64 65 // XConnection 66 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 67 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier > createCatalog(); 68 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 69 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 70 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 71 72 // no interface methods 73 ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheetDocument> acquireDoc(); 74 void releaseDoc(); 75 76 class ODocHolder 77 { 78 OCalcConnection* m_pConnection; 79 ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheetDocument> m_xDoc; 80 public: 81 ODocHolder(OCalcConnection* _pConnection) : m_pConnection(_pConnection) 82 { 83 m_xDoc = m_pConnection->acquireDoc(); 84 } 85 ~ODocHolder() 86 { 87 m_xDoc.clear(); 88 m_pConnection->releaseDoc(); 89 } 90 ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheetDocument> getDoc() const { return m_xDoc; } 91 }; 92 }; 93 } 94 } 95 96 #endif // _CONNECTIVITY_CALC_CONNECTION_HXX_ 97 98