connectivity/Library_mork.mk | 18 + connectivity/source/drivers/mork/MConnection.cxx | 234 ++++++++++++++++++++++ connectivity/source/drivers/mork/MConnection.hxx | 97 +++++++++ connectivity/source/drivers/mork/MDriver.cxx | 110 ++++++++++ connectivity/source/drivers/mork/MDriver.hxx | 102 +++++++++ connectivity/source/drivers/mork/MServices.cxx | 37 +++ connectivity/source/drivers/mork/MorkDriver.cxx | 243 ----------------------- connectivity/source/drivers/mork/MorkDriver.hxx | 58 ----- connectivity/source/drivers/mork/README | 41 +++ connectivity/source/drivers/mork/license.txt | 31 ++ 10 files changed, 664 insertions(+), 307 deletions(-)
New commits: commit 1c831d537515f231be067e47377404716160fc31 Author: David Ostrovsky <[email protected]> Date: Sun Jul 22 20:29:41 2012 +0200 mork driver: add MServices, MDriver, MConnection Change-Id: I32fe564e12d14e3891141d65a2c087f699f8f2a0 diff --git a/connectivity/Library_mork.mk b/connectivity/Library_mork.mk index ec118ed..85e0f81 100644 --- a/connectivity/Library_mork.mk +++ b/connectivity/Library_mork.mk @@ -9,14 +9,13 @@ $(eval $(call gb_Library_Library,mork)) -$(eval $(call gb_Library_add_exception_objects,mork, \ - connectivity/source/drivers/mork/MorkDriver \ - connectivity/source/drivers/mork/MorkParser \ - connectivity/source/drivers/mork/services \ -)) - $(eval $(call gb_Library_set_componentfile,mork,connectivity/source/drivers/mork/mork)) +$(eval $(call gb_Library_set_include,mork,\ + -I$(SRCDIR)/connectivity/source/inc \ + $$(INCLUDE) \ +)) + $(eval $(call gb_Library_use_libraries,mork, \ cppu \ cppuhelper \ @@ -26,4 +25,11 @@ $(eval $(call gb_Library_use_libraries,mork, \ $(eval $(call gb_Library_use_sdk_api,mork)) +$(eval $(call gb_Library_add_exception_objects,mork, \ + connectivity/source/drivers/mork/MorkParser \ + connectivity/source/drivers/mork/MDriver \ + connectivity/source/drivers/mork/MConnection \ + connectivity/source/drivers/mork/MServices \ +)) + # vim: set noet sw=4 ts=4: diff --git a/connectivity/source/drivers/mork/MConnection.cxx b/connectivity/source/drivers/mork/MConnection.cxx new file mode 100644 index 0000000..848ced5 --- /dev/null +++ b/connectivity/source/drivers/mork/MConnection.cxx @@ -0,0 +1,234 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "diagnose_ex.h" +#include "MConnection.hxx" +#include "MDriver.hxx" + +#include <connectivity/dbcharset.hxx> +#include <connectivity/dbexception.hxx> +#include <connectivity/sqlerror.hxx> + +#include <com/sun/star/sdbc/ColumnValue.hpp> +#include <com/sun/star/sdbc/XRow.hpp> +#include <com/sun/star/sdbc/TransactionIsolation.hpp> + +#include <comphelper/officeresourcebundle.hxx> + +#if OSL_DEBUG_LEVEL > 0 +# define OUtoCStr( x ) ( ::rtl::OUStringToOString ( (x), RTL_TEXTENCODING_ASCII_US).getStr()) +#else /* OSL_DEBUG_LEVEL */ +# define OUtoCStr( x ) ("dummy") +#endif /* OSL_DEBUG_LEVEL */ + +using namespace dbtools; + +//------------------------------------------------------------------------------ +using namespace com::sun::star::uno; +using namespace com::sun::star::lang; +using namespace com::sun::star::beans; +using namespace com::sun::star::sdbc; +using namespace com::sun::star::sdbcx; +// -------------------------------------------------------------------------------- + +namespace connectivity { namespace mork { + +// ----------------------------------------------------------------------------- + +OConnection::OConnection(MorkDriver* _pDriver) + :OSubComponent<OConnection, OConnection_BASE>((::cppu::OWeakObject*)_pDriver, this) + ,m_pDriver(_pDriver) +{ + m_pDriver->acquire(); + +} +//----------------------------------------------------------------------------- +OConnection::~OConnection() +{ + acquire(); + if(!isClosed()) + close(); + m_pDriver->release(); + m_pDriver = NULL; +} +//----------------------------------------------------------------------------- +void SAL_CALL OConnection::release() throw() +{ + relase_ChildImpl(); +} +// ----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void OConnection::construct(const ::rtl::OUString& url,const Sequence< PropertyValue >& info) throw(SQLException) +{ + (void) info; // avoid warnings + OSL_TRACE("IN OConnection::construct()" ); + // open file + setURL(url); +} +// XServiceInfo +// -------------------------------------------------------------------------------- +IMPLEMENT_SERVICE_INFO(OConnection, "com.sun.star.sdbc.drivers.mork.OConnection", "com.sun.star.sdbc.Connection") + +// -------------------------------------------------------------------------------- +Reference< XStatement > SAL_CALL OConnection::createStatement( ) throw(SQLException, RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + checkDisposed(OConnection_BASE::rBHelper.bDisposed); + + // create a statement + // the statement can only be executed once + // Reference< XStatement > xReturn = new OStatement(this); + // m_aStatements.push_back(WeakReferenceHelper(xReturn)); + return NULL; +} +// -------------------------------------------------------------------------------- +Reference< XPreparedStatement > SAL_CALL OConnection::prepareStatement( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException) +{ + OSL_UNUSED( _sSql ); + ::osl::MutexGuard aGuard( m_aMutex ); + checkDisposed(OConnection_BASE::rBHelper.bDisposed); + + OSL_TRACE("OConnection::prepareStatement( %s )", OUtoCStr( _sSql ) ); + return NULL; +} +// -------------------------------------------------------------------------------- +Reference< XPreparedStatement > SAL_CALL OConnection::prepareCall( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException) +{ + OSL_UNUSED( _sSql ); + ::dbtools::throwFeatureNotImplementedException( "XConnection::prepareCall", *this ); + OSL_TRACE("OConnection::prepareCall( %s )", OUtoCStr( _sSql ) ); + return NULL; +} +// -------------------------------------------------------------------------------- +::rtl::OUString SAL_CALL OConnection::nativeSQL( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + // when you need to transform SQL92 to you driver specific you can do it here + OSL_TRACE("OConnection::nativeSQL( %s )", OUtoCStr( _sSql ) ); + + return _sSql; +} +// -------------------------------------------------------------------------------- +void SAL_CALL OConnection::setAutoCommit( sal_Bool /*autoCommit*/ ) throw(SQLException, RuntimeException) +{ + ::dbtools::throwFeatureNotImplementedException( "XConnection::setAutoCommit", *this ); +} +// -------------------------------------------------------------------------------- +sal_Bool SAL_CALL OConnection::getAutoCommit( ) throw(SQLException, RuntimeException) +{ + // you have to distinguish which if you are in autocommit mode or not + // at normal case true should be fine here + + return sal_True; +} +// -------------------------------------------------------------------------------- +void SAL_CALL OConnection::commit( ) throw(SQLException, RuntimeException) +{ + // when you database does support transactions you should commit here +} +// -------------------------------------------------------------------------------- +void SAL_CALL OConnection::rollback( ) throw(SQLException, RuntimeException) +{ + // same as commit but for the other case +} +// -------------------------------------------------------------------------------- +sal_Bool SAL_CALL OConnection::isClosed( ) throw(SQLException, RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + + // just simple -> we are close when we are disposed taht means someone called dispose(); (XComponent) + return OConnection_BASE::rBHelper.bDisposed; +} +// -------------------------------------------------------------------------------- +Reference< XDatabaseMetaData > SAL_CALL OConnection::getMetaData( ) throw(SQLException, RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + checkDisposed(OConnection_BASE::rBHelper.bDisposed); + return NULL; +} +// -------------------------------------------------------------------------------- +void SAL_CALL OConnection::setReadOnly( sal_Bool /*readOnly*/ ) throw(SQLException, RuntimeException) +{ + ::dbtools::throwFeatureNotImplementedException( "XConnection::setReadOnly", *this ); +} +// -------------------------------------------------------------------------------- +sal_Bool SAL_CALL OConnection::isReadOnly( ) throw(SQLException, RuntimeException) +{ + // return if your connection to readonly + return sal_False; +} +// -------------------------------------------------------------------------------- +void SAL_CALL OConnection::setCatalog( const ::rtl::OUString& /*catalog*/ ) throw(SQLException, RuntimeException) +{ + ::dbtools::throwFeatureNotImplementedException( "XConnection::setCatalog", *this ); +} +// -------------------------------------------------------------------------------- +::rtl::OUString SAL_CALL OConnection::getCatalog( ) throw(SQLException, RuntimeException) +{ + return ::rtl::OUString(); +} +// -------------------------------------------------------------------------------- +void SAL_CALL OConnection::setTransactionIsolation( sal_Int32 /*level*/ ) throw(SQLException, RuntimeException) +{ + ::dbtools::throwFeatureNotImplementedException( "XConnection::setTransactionIsolation", *this ); +} +// -------------------------------------------------------------------------------- +sal_Int32 SAL_CALL OConnection::getTransactionIsolation( ) throw(SQLException, RuntimeException) +{ + // please have a look at @see com.sun.star.sdbc.TransactionIsolation + return TransactionIsolation::NONE; +} +// -------------------------------------------------------------------------------- +Reference< ::com::sun::star::container::XNameAccess > SAL_CALL OConnection::getTypeMap( ) throw(SQLException, RuntimeException) +{ + // if your driver has special database types you can return it here + return NULL; +} +// -------------------------------------------------------------------------------- +void SAL_CALL OConnection::setTypeMap( const Reference< ::com::sun::star::container::XNameAccess >& /*typeMap*/ ) throw(SQLException, RuntimeException) +{ + ::dbtools::throwFeatureNotImplementedException( "XConnection::setTypeMap", *this ); +} +// -------------------------------------------------------------------------------- +// XCloseable +void SAL_CALL OConnection::close( ) throw(SQLException, RuntimeException) +{ + // we just dispose us + { + ::osl::MutexGuard aGuard( m_aMutex ); + checkDisposed(OConnection_BASE::rBHelper.bDisposed); + + } + dispose(); +} +// -------------------------------------------------------------------------------- +// XWarningsSupplier +Any SAL_CALL OConnection::getWarnings( ) throw(SQLException, RuntimeException) +{ + // when you collected some warnings -> return it + return Any(); +} +// -------------------------------------------------------------------------------- +void SAL_CALL OConnection::clearWarnings( ) throw(SQLException, RuntimeException) +{ + // you should clear your collected warnings here +} +//------------------------------------------------------------------------------ +void OConnection::disposing() +{ + // we noticed that we should be destroied in near future so we have to dispose our statements + ::osl::MutexGuard aGuard(m_aMutex); + dispose_ChildImpl(); +} +// ----------------------------------------------------------------------------- + + +} } // namespace connectivity::mork + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/drivers/mork/MConnection.hxx b/connectivity/source/drivers/mork/MConnection.hxx new file mode 100644 index 0000000..f1fabdc --- /dev/null +++ b/connectivity/source/drivers/mork/MConnection.hxx @@ -0,0 +1,97 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef CONNECTIVITY_SCONNECTION_HXX +#define CONNECTIVITY_SCONNECTION_HXX + +#include "connectivity/CommonTools.hxx" + +#include "connectivity/OSubComponent.hxx" +#include "TConnection.hxx" + +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/sdbc/SQLWarning.hpp> +#include <com/sun/star/sdbcx/XTablesSupplier.hpp> + +#include <cppuhelper/weakref.hxx> + +#include <memory> + +namespace connectivity +{ + namespace mork + { + namespace css = com::sun::star; + + class MorkDriver; + class ErrorDescriptor; + + typedef connectivity::OMetaConnection OConnection_BASE; // implements basics and text encoding + + class OConnection : public OConnection_BASE, + public connectivity::OSubComponent<OConnection, OConnection_BASE> + { + friend class connectivity::OSubComponent<OConnection, OConnection_BASE>; + + protected: + //==================================================================== + // Data attributes + //==================================================================== + ::com::sun::star::sdbc::SQLWarning m_aLastWarning; + MorkDriver* m_pDriver; // Pointer to the owning + // driver object + // Store Catalog + ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier> m_xCatalog; + + public: + virtual void construct( const ::rtl::OUString& url,const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info) throw(::com::sun::star::sdbc::SQLException); + OConnection(MorkDriver* const driver); + virtual ~OConnection(); + + void closeAllStatements () throw( ::com::sun::star::sdbc::SQLException); + + // OComponentHelper + virtual void SAL_CALL disposing(void); + // XInterface + virtual void SAL_CALL release() throw(); + + // XServiceInfo + DECLARE_SERVICE_INFO(); + // XConnection + 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); + 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); + 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); + virtual ::rtl::OUString SAL_CALL nativeSQL( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setAutoCommit( sal_Bool autoCommit ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL getAutoCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL commit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL rollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL isClosed( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + 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); + virtual void SAL_CALL setReadOnly( sal_Bool readOnly ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setCatalog( const ::rtl::OUString& catalog ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getCatalog( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setTransactionIsolation( sal_Int32 level ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual sal_Int32 SAL_CALL getTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTypeMap( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setTypeMap( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + // XCloseable + virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + // XWarningsSupplier + virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL clearWarnings() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + + static ::rtl::OUString getDriverImplementationName(); + }; + } +} +#endif // CONNECTIVITY_SCONNECTION_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/drivers/mork/MDriver.cxx b/connectivity/source/drivers/mork/MDriver.cxx new file mode 100644 index 0000000..7c73eef --- /dev/null +++ b/connectivity/source/drivers/mork/MDriver.cxx @@ -0,0 +1,110 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "MDriver.hxx" +#include "MConnection.hxx" + +using namespace connectivity::mork; + +namespace connectivity +{ + namespace mork + { + css::uno::Reference< css::uno::XInterface > create(css::uno::Reference< css::uno::XComponentContext > const & context) + { + return static_cast< cppu::OWeakObject * >(new MorkDriver(context)); + } + } +} + +MorkDriver::MorkDriver(css::uno::Reference< css::uno::XComponentContext > const context): + context_(context) +{ + assert(context.is()); +} + +// static ServiceInfo +//------------------------------------------------------------------------------ +rtl::OUString MorkDriver::getImplementationName_Static( ) throw(css::uno::RuntimeException) +{ + return rtl::OUString(MORK_DRIVER_IMPL_NAME); +} + +//------------------------------------------------------------------------------ +css::uno::Sequence< ::rtl::OUString > MorkDriver::getSupportedServiceNames_Static( ) throw (css::uno::RuntimeException) +{ + css::uno::Sequence< ::rtl::OUString > aSNS(1); + aSNS[0] = ::rtl::OUString( "com.sun.star.sdbc.Driver"); + return aSNS; +} + +rtl::OUString SAL_CALL MorkDriver::getImplementationName() + throw (css::uno::RuntimeException) +{ + return getImplementationName_Static(); +} + +sal_Bool SAL_CALL MorkDriver::supportsService(const rtl::OUString& serviceName) + throw (css::uno::RuntimeException) +{ + css::uno::Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); + const ::rtl::OUString* pSupported = aSupported.getConstArray(); + const ::rtl::OUString* pEnd = pSupported + aSupported.getLength(); + for (;pSupported != pEnd && !pSupported->equals(serviceName); ++pSupported) + ; + + return pSupported != pEnd; +} + +css::uno::Sequence< rtl::OUString > MorkDriver::getSupportedServiceNames() + throw (css::uno::RuntimeException) +{ + return getSupportedServiceNames_Static(); +} + +css::uno::Reference< css::sdbc::XConnection > MorkDriver::connect( + rtl::OUString const & url, + css::uno::Sequence< css::beans::PropertyValue > const & info) + throw (css::sdbc::SQLException, css::uno::RuntimeException) +{ + //... TODO + (void) url; (void) info; // avoid warnings + // return static_cast< cppu::OWeakObject * >(new MConnection(this)); + return NULL; +} + +sal_Bool MorkDriver::acceptsURL(rtl::OUString const & url) + throw (css::sdbc::SQLException, css::uno::RuntimeException) +{ + //... TODO + (void) url; // avoid warnings + return false; +} + +css::uno::Sequence< css::sdbc::DriverPropertyInfo > MorkDriver::getPropertyInfo( + rtl::OUString const & url, + css::uno::Sequence< css::beans::PropertyValue > const & info) + throw (css::sdbc::SQLException, css::uno::RuntimeException) +{ + //... TODO + (void) url; (void) info; // avoid warnings + return css::uno::Sequence< css::sdbc::DriverPropertyInfo >(); +} + +sal_Int32 MorkDriver::getMajorVersion() throw (css::uno::RuntimeException) { + //... TODO + return 0; +} + +sal_Int32 MorkDriver::getMinorVersion() throw (css::uno::RuntimeException) { + //... TODO + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/drivers/mork/MDriver.hxx b/connectivity/source/drivers/mork/MDriver.hxx new file mode 100644 index 0000000..08ecf46 --- /dev/null +++ b/connectivity/source/drivers/mork/MDriver.hxx @@ -0,0 +1,102 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_DRIVER_HXX +#define INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_DRIVER_HXX + +#include "sal/config.h" + +#include <cassert> + +#include "boost/noncopyable.hpp" +#include "com/sun/star/beans/PropertyValue.hpp" +#include "com/sun/star/lang/XServiceInfo.hpp" +#include "com/sun/star/sdbc/DriverPropertyInfo.hpp" +#include "com/sun/star/sdbc/SQLException.hpp" +#include "com/sun/star/sdbc/XConnection.hpp" +#include "com/sun/star/sdbc/XDriver.hpp" +#include "com/sun/star/uno/Reference.hxx" +#include "com/sun/star/uno/RuntimeException.hpp" +#include "com/sun/star/uno/Sequence.hxx" +#include "com/sun/star/uno/XComponentContext.hpp" +#include "cppuhelper/implbase2.hxx" +#include "cppuhelper/weak.hxx" +#include "rtl/ustring.hxx" +#include "sal/types.h" + +#define MORK_DRIVER_IMPL_NAME "com.sun.star.comp.sdbc.MorkDriver" + +namespace com { namespace sun { namespace star { + namespace uno { + class XComponentContext; + class XInterface; + } +} } } +namespace rtl { class OUString; } + +namespace connectivity { namespace mork { + +namespace css = com::sun::star; + +com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL +create( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const &); + +class MorkDriver: + public cppu::WeakImplHelper2< css::lang::XServiceInfo, css::sdbc::XDriver >, + private boost::noncopyable +{ +public: + MorkDriver(css::uno::Reference< css::uno::XComponentContext > const context); + static ::rtl::OUString getImplementationName_Static() + throw(css::uno::RuntimeException); + static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() + throw (css::uno::RuntimeException); +private: + virtual ~MorkDriver() {} + + virtual rtl::OUString SAL_CALL getImplementationName() + throw (css::uno::RuntimeException); + + virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName) + throw (css::uno::RuntimeException); + + virtual css::uno::Sequence< rtl::OUString > SAL_CALL + getSupportedServiceNames() throw (css::uno::RuntimeException); + + virtual css::uno::Reference< css::sdbc::XConnection > SAL_CALL connect( + rtl::OUString const & url, + css::uno::Sequence< css::beans::PropertyValue > const & info) + throw (css::sdbc::SQLException, css::uno::RuntimeException); + + virtual sal_Bool SAL_CALL acceptsURL( + rtl::OUString const & url) + throw (css::sdbc::SQLException, css::uno::RuntimeException); + + virtual css::uno::Sequence< css::sdbc::DriverPropertyInfo > SAL_CALL + getPropertyInfo( + rtl::OUString const & url, + css::uno::Sequence< css::beans::PropertyValue > const & info) + throw (css::sdbc::SQLException, css::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getMajorVersion() + throw (css::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getMinorVersion() + throw (css::uno::RuntimeException); + + css::uno::Reference< css::uno::XComponentContext > context_; +}; + +} } + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/drivers/mork/MServices.cxx b/connectivity/source/drivers/mork/MServices.cxx new file mode 100644 index 0000000..3dfeb20 --- /dev/null +++ b/connectivity/source/drivers/mork/MServices.cxx @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "sal/config.h" + +#include "cppuhelper/factory.hxx" +#include "cppuhelper/implementationentry.hxx" +#include "sal/types.h" + +#include "MDriver.hxx" + +namespace { + +static cppu::ImplementationEntry const services[] = { + { &connectivity::mork::create, + &connectivity::mork::MorkDriver::getImplementationName_Static, + &connectivity::mork::MorkDriver::getSupportedServiceNames_Static, + &cppu::createSingleComponentFactory, 0, 0 }, + { 0, 0, 0, 0, 0, 0 } +}; + +} + +extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory( + char const * pImplName, void * pServiceManager, void * pRegistryKey) +{ + return cppu::component_getFactoryHelper( + pImplName, pServiceManager, pRegistryKey, services); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/drivers/mork/MorkDriver.cxx b/connectivity/source/drivers/mork/MorkDriver.cxx deleted file mode 100644 index 83f9d7c..0000000 --- a/connectivity/source/drivers/mork/MorkDriver.cxx +++ /dev/null @@ -1,243 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#include "sal/config.h" - -#include <cassert> - -#include "boost/noncopyable.hpp" -#include "com/sun/star/beans/PropertyValue.hpp" -#include "com/sun/star/lang/XServiceInfo.hpp" -#include "com/sun/star/sdbc/DriverPropertyInfo.hpp" -#include "com/sun/star/sdbc/SQLException.hpp" -#include "com/sun/star/sdbc/XConnection.hpp" -#include "com/sun/star/sdbc/XDriver.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "com/sun/star/uno/XComponentContext.hpp" -#include "cppuhelper/implbase1.hxx" -#include "cppuhelper/implbase2.hxx" -#include "cppuhelper/weak.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -#include "MorkDriver.hxx" - -namespace css = com::sun::star; - -namespace connectivity -{ -namespace mork -{ - -class Service: - public cppu::WeakImplHelper2< css::lang::XServiceInfo, css::sdbc::XDriver >, - private boost::noncopyable -{ -public: - Service(css::uno::Reference< css::uno::XComponentContext > const context): - context_(context) - { - assert(context.is()); - } - -private: - virtual ~Service() {} - - rtl::OUString SAL_CALL getImplementationName() - throw (css::uno::RuntimeException) - { - return connectivity::mork::getImplementationName(); - } - - sal_Bool SAL_CALL supportsService(rtl::OUString const &ServiceName) - throw (css::uno::RuntimeException) - { - return ServiceName == getSupportedServiceNames()[0]; //TODO - } - - css::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames() throw (css::uno::RuntimeException) - { - return connectivity::mork::getSupportedServiceNames(); - } - - css::uno::Reference< css::sdbc::XConnection > SAL_CALL connect( - rtl::OUString const &url, - css::uno::Sequence< css::beans::PropertyValue > const &info) - throw (css::sdbc::SQLException, css::uno::RuntimeException); - - sal_Bool SAL_CALL acceptsURL( - rtl::OUString const &url) - throw (css::sdbc::SQLException, css::uno::RuntimeException); - - css::uno::Sequence< css::sdbc::DriverPropertyInfo > SAL_CALL - getPropertyInfo( - rtl::OUString const &url, - css::uno::Sequence< css::beans::PropertyValue > const &info) - throw (css::sdbc::SQLException, css::uno::RuntimeException); - - sal_Int32 SAL_CALL getMajorVersion() - throw (css::uno::RuntimeException); - - sal_Int32 SAL_CALL getMinorVersion() - throw (css::uno::RuntimeException); - - css::uno::Reference< css::uno::XComponentContext > context_; -}; - -class Connection: - public cppu::WeakImplHelper1< css::sdbc::XConnection >, - private boost::noncopyable -{ -public: - Connection( - css::uno::Reference< css::uno::XComponentContext > const context); - -private: - ~Connection(); - - // XConnection - ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - ::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); - - ::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); - - ::rtl::OUString SAL_CALL nativeSQL( const ::rtl::OUString &sql ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - void SAL_CALL setAutoCommit( sal_Bool autoCommit ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - sal_Bool SAL_CALL getAutoCommit( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - void SAL_CALL commit( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - void SAL_CALL rollback( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - sal_Bool SAL_CALL isClosed( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - void SAL_CALL setReadOnly( sal_Bool readOnly ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - sal_Bool SAL_CALL isReadOnly( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - void SAL_CALL setCatalog( const ::rtl::OUString &catalog ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - ::rtl::OUString SAL_CALL getCatalog( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - void SAL_CALL setTransactionIsolation( sal_Int32 level ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - sal_Int32 SAL_CALL getTransactionIsolation( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTypeMap( ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - void SAL_CALL setTypeMap( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) - throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - // XCloseable - void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - - - css::uno::Reference< css::uno::XComponentContext > context_; -}; - -} -} - -connectivity::mork::Connection::Connection( - css::uno::Reference< css::uno::XComponentContext > const context): - context_(context) -{ - assert(context.is()); -} - -connectivity::mork::Connection::~Connection() -{ -} - -css::uno::Reference< css::sdbc::XConnection > connectivity::mork::Service::connect( - rtl::OUString const &url, - css::uno::Sequence< css::beans::PropertyValue > const &info) -throw (css::sdbc::SQLException, css::uno::RuntimeException) -{ - //... TODO - (void) url; - (void) info; // avoid warnings - - return new connectivity::mork::Connection(context_); -} - -sal_Bool connectivity::mork::Service::acceptsURL(rtl::OUString const &url) -throw (css::sdbc::SQLException, css::uno::RuntimeException) -{ - //... TODO - (void) url; // avoid warnings - return false; -} - -css::uno::Sequence< css::sdbc::DriverPropertyInfo > connectivity::mork::Service::getPropertyInfo( - rtl::OUString const &url, - css::uno::Sequence< css::beans::PropertyValue > const &info) -throw (css::sdbc::SQLException, css::uno::RuntimeException) -{ - //... TODO - (void) url; - (void) info; // avoid warnings - return css::uno::Sequence< css::sdbc::DriverPropertyInfo >(); -} - -sal_Int32 connectivity::mork::Service::getMajorVersion() throw (css::uno::RuntimeException) -{ - //... TODO - return 0; -} - -sal_Int32 connectivity::mork::Service::getMinorVersion() throw (css::uno::RuntimeException) -{ - //... TODO - return 0; -} - -css::uno::Reference< css::uno::XInterface > create( - css::uno::Reference< css::uno::XComponentContext > const &context) -{ - return static_cast< cppu::OWeakObject * >(new connectivity::mork::Service(context)); -} - -rtl::OUString connectivity::mork::getImplementationName() -{ - return rtl::OUString("com.sun.star.comp.sdbc.MorkDriver"); -} - -css::uno::Sequence< rtl::OUString > connectivity::mork::getSupportedServiceNames() -{ - rtl::OUString name("com.sun.star.sdbc.Driver"); - return css::uno::Sequence< rtl::OUString >(&name, 1); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/drivers/mork/MorkDriver.hxx b/connectivity/source/drivers/mork/MorkDriver.hxx deleted file mode 100644 index 3ec2890..0000000 --- a/connectivity/source/drivers/mork/MorkDriver.hxx +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#ifndef _MORK_DRIVER_HXX_ -#define _MORK_DRIVER_HXX_ - -#include "sal/config.h" - -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/Sequence.hxx" -#include "sal/types.h" - -namespace com -{ -namespace sun -{ -namespace star -{ -namespace uno -{ -class XComponentContext; -class XInterface; -} -} -} -} -namespace rtl -{ -class OUString; -} - -namespace connectivity -{ -namespace mork -{ - -com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL -create( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const &); - -rtl::OUString SAL_CALL getImplementationName(); - -com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL -getSupportedServiceNames(); - -} -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/drivers/mork/README b/connectivity/source/drivers/mork/README new file mode 100644 index 0000000..0b1e30b --- /dev/null +++ b/connectivity/source/drivers/mork/README @@ -0,0 +1,41 @@ +Mork Format Parsing Library +============================= + +Description +----------- + +Cross Platform Mozilla Mork format reader. + + +Compillation +------------ + +g++ -o MorkParser main.cpp MorkParser.cpp + + +License +------- + +This program is licensed under permissive BSD license. +See the license.txt file for more information. + + +Date: October 16th, 2007 + +Project Maintainers: + Yuriy Soroka + [email protected] + + http://www.scalingweb.com/ + +Thanks +------------- +Thanks to Petr Stejskal <[email protected]> who helped with porting this code from Qt to STL. + + +How you can help +---------------- + + Comments, patches, bug reports are welcome. + + diff --git a/connectivity/source/drivers/mork/license.txt b/connectivity/source/drivers/mork/license.txt new file mode 100644 index 0000000..aed4ba1 --- /dev/null +++ b/connectivity/source/drivers/mork/license.txt @@ -0,0 +1,31 @@ +Software License Agreement (BSD License) + +Copyright (c) 2006, ScalingWeb.com +All rights reserved. + +Redistribution and use of this software in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of ScalingWeb.com nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of ScalingWeb.com. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
