diff options
author | David Ostrovsky <david@ostrovsky.org> | 2012-09-17 22:50:49 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-09-18 08:30:01 +0000 |
commit | 77e4adbe4759f21f6cf095d954391a9ddbbec2cf (patch) | |
tree | eb124e090a1b9029cdb34f122a2b0ed557603ce5 /connectivity/source/drivers/mork/MCatalog.cxx | |
parent | a60c63fd66a5a2069ea812f94c000dc4273e8ceb (diff) |
mork driver implementation
This is a preparation for merge into master, feature/mork
branch is obsoslete and shouldn't be used any more. In
context of this change the usage of old mozilla based mork
driver depends on platform: all non windows platforms use
this new mork driver, windows still uses mozilla.
Because mozilla driver shipping was stripped on feature/mork
branch for all platforms, the corresponding commits were
changed prior to creating this change (the build file changes
are reverted now). So the build and shipping of different mork
driver implementation should be implemented from scratch:
mozilla on windows, new mork dirver on all other platforms.
Currently the new mork dirver is compiled (on all platforms),
but not used. It can be tested with mork_helper executable.
fdo#51004
Change-Id: Ib2413ab6856f163337aa311c4bf7b1182d6c6f63
Reviewed-on: https://gerrit.libreoffice.org/635
Reviewed-by: Miklos Vajna <vmiklos@suse.cz>
Tested-by: Miklos Vajna <vmiklos@suse.cz>
Diffstat (limited to 'connectivity/source/drivers/mork/MCatalog.cxx')
-rw-r--r-- | connectivity/source/drivers/mork/MCatalog.cxx | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/connectivity/source/drivers/mork/MCatalog.cxx b/connectivity/source/drivers/mork/MCatalog.cxx new file mode 100644 index 000000000000..005037c13adc --- /dev/null +++ b/connectivity/source/drivers/mork/MCatalog.cxx @@ -0,0 +1,111 @@ +/* -*- 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/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include "MCatalog.hxx" +#include "MConnection.hxx" +#include "MTables.hxx" +#include <com/sun/star/sdbc/XRow.hpp> +#include <com/sun/star/sdbc/XResultSet.hpp> +#include <cppuhelper/interfacecontainer.h> + +// ------------------------------------------------------------------------- +using namespace connectivity::mork; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::sdbcx; +using namespace ::com::sun::star::sdbc; +using namespace ::com::sun::star::container; +using namespace ::com::sun::star::lang; +using namespace ::cppu; + +// ------------------------------------------------------------------------- +OCatalog::OCatalog(OConnection* _pCon) : connectivity::sdbcx::OCatalog(_pCon) + ,m_pConnection(_pCon) + ,m_xMetaData(m_pConnection->getMetaData( )) +{ +// osl_incrementInterlockedCount( &m_refCount ); +// refreshTables(); +// refreshViews(); +// refreshGroups(); +// refreshUsers(); +// osl_decrementInterlockedCount( &m_refCount ); +} +// ------------------------------------------------------------------------- +void OCatalog::refreshTables() +{ + TStringVector aVector; + Sequence< ::rtl::OUString > aTypes(1); + aTypes[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")); + Reference< XResultSet > xResult = m_xMetaData->getTables(Any(), + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")),::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")),aTypes); + + if(xResult.is()) + { + Reference< XRow > xRow(xResult,UNO_QUERY); + ::rtl::OUString aName; + while(xResult->next()) + { + aName = xRow->getString(3); + aVector.push_back(aName); + } + } + if(m_pTables) + m_pTables->reFill(aVector); + else + m_pTables = new OTables(m_xMetaData,*this,m_aMutex,aVector); +} +// ------------------------------------------------------------------------- +void OCatalog::refreshViews() +{ +} +// ------------------------------------------------------------------------- +void OCatalog::refreshGroups() +{ +} +// ------------------------------------------------------------------------- +void OCatalog::refreshUsers() +{ +} +// ----------------------------------------------------------------------------- + +// XTablesSupplier +Reference< XNameAccess > SAL_CALL OCatalog::getTables( ) throw(RuntimeException) +{ + ::osl::MutexGuard aGuard(m_aMutex); + checkDisposed(rBHelper.bDisposed); + + try + { + if(!m_pTables || m_pConnection->getForceLoadTables()) + refreshTables(); + } + catch( const RuntimeException& ) + { + // allowed to leave this method + throw; + } + catch( const Exception& ) + { + // allowed + } + + return const_cast<OCatalog*>(this)->m_pTables; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |