diff options
Diffstat (limited to 'mysqlc/source/mysqlc_driver.cxx')
-rw-r--r-- | mysqlc/source/mysqlc_driver.cxx | 283 |
1 files changed, 0 insertions, 283 deletions
diff --git a/mysqlc/source/mysqlc_driver.cxx b/mysqlc/source/mysqlc_driver.cxx deleted file mode 100644 index 40cab769e912..000000000000 --- a/mysqlc/source/mysqlc_driver.cxx +++ /dev/null @@ -1,283 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* -* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -* -* Copyright 2008 by Sun Microsystems, Inc. -* -* OpenOffice.org - a multi-platform office productivity suite -* -* This file is part of OpenOffice.org. -* -* OpenOffice.org is free software: you can redistribute it and/or modify -* it under the terms of the GNU Lesser General Public License version 3 -* only, as published by the Free Software Foundation. -* -* OpenOffice.org is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Lesser General Public License version 3 for more details -* (a copy is included in the LICENSE file that accompanied this code). -* -* You should have received a copy of the GNU Lesser General Public License -* version 3 along with OpenOffice.org. If not, see -* <http://www.openoffice.org/license.html> -* for a copy of the LGPLv3 License. -************************************************************************/ -#include "mysqlc_driver.hxx" -#include "mysqlc_connection.hxx" -#include "mysqlc_general.hxx" - -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 connectivity::mysqlc; - -#include <cppuhelper/supportsservice.hxx> -#include <stdio.h> - -#include <cppconn/exception.h> -#ifdef SYSTEM_MYSQL_CPPCONN - #include <mysql_driver.h> -#endif - -MysqlCDriver::MysqlCDriver(const Reference< XMultiServiceFactory >& _rxFactory) - : ODriver_BASE(m_aMutex) - ,m_xFactory(_rxFactory) -#ifndef SYSTEM_MYSQL_CPPCONN - ,m_hCppConnModule( nullptr ) - ,m_bAttemptedLoadCppConn( false ) -#endif -{ - cppDriver = nullptr; -} - -void MysqlCDriver::disposing() -{ - ::osl::MutexGuard aGuard(m_aMutex); - - // when driver will be destroyed so all our connections have to be destroyed as well - for (auto const& connection : m_xConnections) - { - Reference< XComponent > xComp(connection.get(), UNO_QUERY); - if (xComp.is()) { - xComp->dispose(); - } - } - m_xConnections.clear(); - - ODriver_BASE::disposing(); -} - -// static ServiceInfo -rtl::OUString MysqlCDriver::getImplementationName_Static() -{ - return rtl::OUString( "com.sun.star.comp.sdbc.mysqlc.MysqlCDriver" ); -} - -Sequence< rtl::OUString > MysqlCDriver::getSupportedServiceNames_Static() -{ - // which service is supported - // for more information @see com.sun.star.sdbc.Driver - Sequence< rtl::OUString > aSNS(1); - aSNS[0] = "com.sun.star.sdbc.Driver"; - return aSNS; -} - -rtl::OUString SAL_CALL MysqlCDriver::getImplementationName() -{ - return getImplementationName_Static(); -} - -sal_Bool SAL_CALL MysqlCDriver::supportsService(const rtl::OUString& _rServiceName) -{ - return cppu::supportsService(this, _rServiceName); -} - -Sequence< rtl::OUString > SAL_CALL MysqlCDriver::getSupportedServiceNames() -{ - return getSupportedServiceNames_Static(); -} - -#ifndef SYSTEM_MYSQL_CPPCONN -extern "C" { static void thisModule() {} } -#endif - -void MysqlCDriver::impl_initCppConn_lck_throw() -{ -#ifdef SYSTEM_MYSQL_CPPCONN - cppDriver = get_driver_instance(); -#else -#ifdef BUNDLE_MARIADB - if ( !m_bAttemptedLoadCConn ) - { - const rtl::OUString sModuleName(BUNDLE_MARIADB); - m_hCConnModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 ); - m_bAttemptedLoadCConn = true; - } - - // attempted to load - was it successful? - if ( !m_hCConnModule ) - { - OSL_FAIL( "MysqlCDriver::impl_initCppConn_lck_throw: could not load the " BUNDLE_MARIADB " library!"); - throw SQLException( - "Unable to load the " BUNDLE_MARIADB " library.", - *this, - rtl::OUString( "08001" ), // "unable to connect" - 0, - Any() - ); - } -#endif - if ( !m_bAttemptedLoadCppConn ) - { - const rtl::OUString sModuleName(CPPCONN_LIB); - m_hCppConnModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 ); - m_bAttemptedLoadCppConn = true; - } - - // attempted to load - was it successful? - if ( !m_hCppConnModule ) - { - OSL_FAIL( "MysqlCDriver::impl_initCppConn_lck_throw: could not load the " CPPCONN_LIB " library!"); - throw SQLException( - "Unable to load the " CPPCONN_LIB " library.", - *this, - rtl::OUString( "08001" ), // "unable to connect" - 0, - Any() - ); - } - - // find the factory symbol - const rtl::OUString sSymbolName = "sql_mysql_get_driver_instance"; - typedef void* (* FGetMySQLDriver)(); - - const FGetMySQLDriver pFactoryFunction = reinterpret_cast<FGetMySQLDriver>( osl_getFunctionSymbol( m_hCppConnModule, sSymbolName.pData ) ); - if ( !pFactoryFunction ) - { - OSL_FAIL( "MysqlCDriver::impl_initCppConn_lck_throw: could not find the factory symbol in " CPPCONN_LIB "!"); - throw SQLException( - CPPCONN_LIB " is invalid: missing the driver factory function.", - *this, - rtl::OUString( "08001" ), // "unable to connect" - 0, - Any() - ); - } - - cppDriver = static_cast< sql::Driver* >( (*pFactoryFunction)() ); -#endif - if ( !cppDriver ) - { - throw SQLException( - "Unable to obtain the MySQL_Driver instance from Connector/C++.", - *this, - rtl::OUString( "08001" ), // "unable to connect" - 0, - Any() - ); - } -} - -Reference< XConnection > SAL_CALL MysqlCDriver::connect(const rtl::OUString& url, const Sequence< PropertyValue >& info) -{ - ::osl::MutexGuard aGuard( m_aMutex ); - - if (!acceptsURL(url)) { - return nullptr; - } - - if ( !cppDriver ) - { - impl_initCppConn_lck_throw(); - if ( !cppDriver ) - throw RuntimeException("MySQLCDriver::connect: internal error.", *this ); - } - - Reference< XConnection > xConn; - // create a new connection with the given properties and append it to our vector - try { - OConnection* pCon = new OConnection(*this); - xConn = pCon; - - pCon->construct(url,info); - m_xConnections.push_back(WeakReferenceHelper(*pCon)); - } - catch (const sql::SQLException &e) - { - mysqlc_sdbc_driver::translateAndThrow(e, *this, getDefaultEncoding()); - } - return xConn; -} - -sal_Bool SAL_CALL MysqlCDriver::acceptsURL(const rtl::OUString& url) -{ - return url.startsWith("sdbc:mysqlc:"); -} - -Sequence< DriverPropertyInfo > SAL_CALL MysqlCDriver::getPropertyInfo(const rtl::OUString& url, const Sequence< PropertyValue >& /* info */) -{ - if (acceptsURL(url)) { - ::std::vector< DriverPropertyInfo > aDriverInfo; - - aDriverInfo.push_back(DriverPropertyInfo( - rtl::OUString("Hostname") - ,rtl::OUString("Name of host") - ,true - ,rtl::OUString("localhost") - ,Sequence< rtl::OUString >()) - ); - aDriverInfo.push_back(DriverPropertyInfo( - rtl::OUString("Port") - ,rtl::OUString("Port") - ,true - ,rtl::OUString("3306") - ,Sequence< rtl::OUString >()) - ); - return Sequence< DriverPropertyInfo >(&(aDriverInfo[0]),aDriverInfo.size()); - } - - return Sequence< DriverPropertyInfo >(); -} - -sal_Int32 SAL_CALL MysqlCDriver::getMajorVersion() -{ - return MARIADBC_VERSION_MAJOR; -} - -sal_Int32 SAL_CALL MysqlCDriver::getMinorVersion() -{ - return MARIADBC_VERSION_MINOR; -} - -namespace connectivity -{ -namespace mysqlc -{ - -Reference< XInterface > MysqlCDriver_CreateInstance(const Reference< XMultiServiceFactory >& _rxFactory) -{ - return(*(new MysqlCDriver(_rxFactory))); -} - -void checkDisposed(bool _bThrow) -{ - if (_bThrow) { - throw DisposedException(); - } -} - -} /* mysqlc */ -} /* connectivity */ - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |