From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- connectivity/source/inc/writer/WCatalog.hxx | 37 +++++ connectivity/source/inc/writer/WConnection.hxx | 154 +++++++++++++++++++++ .../source/inc/writer/WDatabaseMetaData.hxx | 43 ++++++ connectivity/source/inc/writer/WDriver.hxx | 52 +++++++ connectivity/source/inc/writer/WTable.hxx | 66 +++++++++ connectivity/source/inc/writer/WTables.hxx | 43 ++++++ 6 files changed, 395 insertions(+) create mode 100644 connectivity/source/inc/writer/WCatalog.hxx create mode 100644 connectivity/source/inc/writer/WConnection.hxx create mode 100644 connectivity/source/inc/writer/WDatabaseMetaData.hxx create mode 100644 connectivity/source/inc/writer/WDriver.hxx create mode 100644 connectivity/source/inc/writer/WTable.hxx create mode 100644 connectivity/source/inc/writer/WTables.hxx (limited to 'connectivity/source/inc/writer') diff --git a/connectivity/source/inc/writer/WCatalog.hxx b/connectivity/source/inc/writer/WCatalog.hxx new file mode 100644 index 000000000..be61dbabd --- /dev/null +++ b/connectivity/source/inc/writer/WCatalog.hxx @@ -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/. + * + * 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 . + */ + +#pragma once + +#include + +namespace connectivity::writer +{ +class OWriterConnection; +class OWriterCatalog : public file::OFileCatalog +{ +public: + void refreshTables() override; + + OWriterCatalog(OWriterConnection* pConnection); +}; + +} // namespace connectivity::writer + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/inc/writer/WConnection.hxx b/connectivity/source/inc/writer/WConnection.hxx new file mode 100644 index 000000000..768518a97 --- /dev/null +++ b/connectivity/source/inc/writer/WConnection.hxx @@ -0,0 +1,154 @@ +/* -*- 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 . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +namespace com::sun::star::text +{ +class XTextDocument; +} +namespace utl +{ +class CloseVeto; +} + +namespace connectivity::writer +{ +class ODriver; +class OWriterConnection : public file::OConnection +{ + // the spreadsheet document: + css::uno::Reference m_xDoc; + OUString m_sPassword; + OUString m_aFileName; + oslInterlockedCount m_nDocCount; + + class CloseVetoButTerminateListener + : public cppu::WeakComponentImplHelper + { + private: + /// close listener that vetoes so nobody else disposes m_xDoc + std::unique_ptr m_pCloseListener; + /// but also listen to XDesktop and if app is terminating anyway, dispose m_xDoc while + /// its still possible to do so properly + css::uno::Reference m_xDesktop; + osl::Mutex m_aMutex; + + public: + CloseVetoButTerminateListener() + : cppu::WeakComponentImplHelper(m_aMutex) + { + } + + void start(const css::uno::Reference& rCloseable, + const css::uno::Reference& rDesktop) + { + m_xDesktop = rDesktop; + m_xDesktop->addTerminateListener(this); + m_pCloseListener = std::make_unique(rCloseable, true); + } + + void stop() + { + m_pCloseListener.reset(); + if (!m_xDesktop.is()) + return; + m_xDesktop->removeTerminateListener(this); + m_xDesktop.clear(); + } + + // XTerminateListener + void SAL_CALL queryTermination(const css::lang::EventObject& /*rEvent*/) override {} + + void SAL_CALL notifyTermination(const css::lang::EventObject& /*rEvent*/) override + { + stop(); + } + + void SAL_CALL disposing() override + { + stop(); + cppu::WeakComponentImplHelperBase::disposing(); + } + + void SAL_CALL disposing(const css::lang::EventObject& rEvent) override + { + const bool bShutDown = (rEvent.Source == m_xDesktop); + if (bShutDown) + stop(); + } + }; + + rtl::Reference m_xCloseVetoButTerminateListener; + +public: + OWriterConnection(ODriver* _pDriver); + ~OWriterConnection() override; + + void construct(const OUString& rURL, + const css::uno::Sequence& rInfo) override; + + // XServiceInfo + DECLARE_SERVICE_INFO(); + + // OComponentHelper + void SAL_CALL disposing() override; + + // XConnection + css::uno::Reference SAL_CALL getMetaData() override; + css::uno::Reference createCatalog() override; + css::uno::Reference SAL_CALL createStatement() override; + css::uno::Reference + SAL_CALL prepareStatement(const OUString& sql) override; + css::uno::Reference + SAL_CALL prepareCall(const OUString& sql) override; + + // no interface methods + css::uno::Reference const& acquireDoc(); + void releaseDoc(); + + class ODocHolder + { + OWriterConnection* m_pConnection; + css::uno::Reference m_xDoc; + + public: + ODocHolder(OWriterConnection* _pConnection) + : m_pConnection(_pConnection) + { + m_xDoc = m_pConnection->acquireDoc(); + } + ~ODocHolder() + { + m_xDoc.clear(); + m_pConnection->releaseDoc(); + } + const css::uno::Reference& getDoc() const { return m_xDoc; } + }; +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/inc/writer/WDatabaseMetaData.hxx b/connectivity/source/inc/writer/WDatabaseMetaData.hxx new file mode 100644 index 000000000..b464be11c --- /dev/null +++ b/connectivity/source/inc/writer/WDatabaseMetaData.hxx @@ -0,0 +1,43 @@ +/* -*- 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 . + */ + +#pragma once + +#include + +namespace connectivity::writer +{ +class OWriterDatabaseMetaData : public component::OComponentDatabaseMetaData +{ + OUString SAL_CALL getURL() override; + css::uno::Reference + SAL_CALL getTables(const css::uno::Any& catalog, const OUString& schemaPattern, + const OUString& tableNamePattern, + const css::uno::Sequence& types) override; + +protected: + ~OWriterDatabaseMetaData() override; + +public: + OWriterDatabaseMetaData(file::OConnection* pConnection); +}; + +} // namespace connectivity::writer + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/inc/writer/WDriver.hxx b/connectivity/source/inc/writer/WDriver.hxx new file mode 100644 index 000000000..b43168eac --- /dev/null +++ b/connectivity/source/inc/writer/WDriver.hxx @@ -0,0 +1,52 @@ +/* -*- 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 . + */ + +#pragma once + +#include + +namespace com::sun::star::lang +{ +class XMultiServiceFactory; +} + +namespace connectivity::writer +{ +class ODriver : public file::OFileDriver +{ +public: + ODriver(const css::uno::Reference& _rxContext) + : file::OFileDriver(_rxContext) + { + } + + /// @throws css::uno::RuntimeException + OUString SAL_CALL getImplementationName() override; + + // XDriver + css::uno::Reference + SAL_CALL connect(const OUString& url, + const css::uno::Sequence& info) override; + sal_Bool SAL_CALL acceptsURL(const OUString& url) override; + css::uno::Sequence SAL_CALL getPropertyInfo( + const OUString& url, const css::uno::Sequence& info) override; +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/inc/writer/WTable.hxx b/connectivity/source/inc/writer/WTable.hxx new file mode 100644 index 000000000..90cdc2494 --- /dev/null +++ b/connectivity/source/inc/writer/WTable.hxx @@ -0,0 +1,66 @@ +/* -*- 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 . + */ + +#pragma once + +#include + +namespace com::sun::star::text +{ +class XTextTable; +} +namespace com::sun::star::util +{ +class XNumberFormats; +} + +namespace connectivity::writer +{ +using OWriterTable_BASE = component::OComponentTable; +class OWriterConnection; + +class OWriterTable : public OWriterTable_BASE +{ +private: + css::uno::Reference m_xTable; + OWriterConnection* m_pWriterConnection; + sal_Int32 m_nStartCol; + sal_Int32 m_nDataCols; + bool m_bHasHeaders; + + void fillColumns(); + +public: + OWriterTable(sdbcx::OCollection* _pTables, OWriterConnection* _pConnection, + const OUString& Name, const OUString& Type); + + bool fetchRow(OValueRefRow& _rRow, const OSQLColumns& _rCols, bool bRetrieveData) override; + + void SAL_CALL disposing() override; + + // css::lang::XUnoTunnel + sal_Int64 SAL_CALL getSomething(const css::uno::Sequence& rId) override; + static const css::uno::Sequence& getUnoTunnelId(); + + void construct() override; +}; + +} // namespace connectivity::writer + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/connectivity/source/inc/writer/WTables.hxx b/connectivity/source/inc/writer/WTables.hxx new file mode 100644 index 000000000..df39cc1c2 --- /dev/null +++ b/connectivity/source/inc/writer/WTables.hxx @@ -0,0 +1,43 @@ +/* -*- 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 . + */ + +#pragma once + +#include + +namespace connectivity::writer +{ +using OWriterTables_BASE = file::OTables; + +class OWriterTables : public OWriterTables_BASE +{ +protected: + sdbcx::ObjectType createObject(const OUString& rName) override; + +public: + OWriterTables(const css::uno::Reference& _rMetaData, + ::cppu::OWeakObject& _rParent, ::osl::Mutex& _rMutex, + const ::std::vector& _rVector) + : OWriterTables_BASE(_rMetaData, _rParent, _rMutex, _rVector) + { + } +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3