summaryrefslogtreecommitdiffstats
path: root/sw/inc/rdfhelper.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/inc/rdfhelper.hxx')
-rw-r--r--sw/inc/rdfhelper.hxx103
1 files changed, 103 insertions, 0 deletions
diff --git a/sw/inc/rdfhelper.hxx b/sw/inc/rdfhelper.hxx
new file mode 100644
index 0000000000..ee346c499f
--- /dev/null
+++ b/sw/inc/rdfhelper.hxx
@@ -0,0 +1,103 @@
+/* -*- 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_SW_INC_RDFHELPER_HXX
+#define INCLUDED_SW_INC_RDFHELPER_HXX
+
+#include <map>
+
+#include <rtl/ustring.hxx>
+
+#include "swdllapi.h"
+
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/Sequence.h>
+
+class SwTextNode;
+
+namespace com::sun::star {
+ namespace frame {
+ class XModel;
+ }
+ namespace rdf {
+ class XDocumentMetadataAccess;
+ class XResource;
+ class XURI;
+ }
+}
+
+/// Provides access to RDF metadata on core objects.
+class SW_DLLPUBLIC SwRDFHelper
+{
+public:
+ /// Gets all graph-names in RDF of a given type.
+ static css::uno::Sequence<css::uno::Reference<css::rdf::XURI>>
+ getGraphNames(const css::uno::Reference<css::rdf::XDocumentMetadataAccess>& xDocumentMetadataAccess,
+ const css::uno::Reference<css::rdf::XURI>& xType);
+
+ /// Gets all graph-names in RDF of a given type.
+ static css::uno::Sequence<css::uno::Reference<css::rdf::XURI>>
+ getGraphNames(const css::uno::Reference<css::frame::XModel>& xModel, const OUString& rType);
+
+ /// Gets all (XResource, key, value) statements in RDF graphs given the graph-names.
+ static std::map<OUString, OUString>
+ getStatements(const css::uno::Reference<css::frame::XModel>& xModel,
+ const css::uno::Sequence<css::uno::Reference<css::rdf::XURI>>& rGraphNames,
+ const css::uno::Reference<css::rdf::XResource>& xSubject);
+
+ /// Gets all (XResource, key, value) statements in RDF graphs of type rType.
+ static std::map<OUString, OUString>
+ getStatements(const css::uno::Reference<css::frame::XModel>& xModel, const OUString& rType,
+ const css::uno::Reference<css::rdf::XResource>& xSubject);
+
+ /// Add an (XResource, key, value) statement in the graph of type rType -- or if it does not exist, create a graph at rPath first.
+ static void addStatement(const css::uno::Reference<css::frame::XModel>& xModel,
+ const OUString& rType, const OUString& rPath,
+ const css::uno::Reference<css::rdf::XResource>& xSubject,
+ const OUString& rKey, const OUString& rValue);
+
+ /// Check if a graph of type rType exists.
+ static bool hasMetadataGraph(const css::uno::Reference<css::frame::XModel>& xModel,
+ const OUString& rType);
+
+ /// Remove an (XResource, key, value) statement in the graph of type rType, if it exists.
+ static void removeStatement(const css::uno::Reference<css::frame::XModel>& xModel,
+ const OUString& rType,
+ const css::uno::Reference<css::rdf::XResource>& xSubject,
+ const OUString& rKey, const OUString& rValue);
+
+ /// Clone all statements in the graph of type rType, if any exists, from one subject to another.
+ static void cloneStatements(const css::uno::Reference<css::frame::XModel>& xSrcModel,
+ const css::uno::Reference<css::frame::XModel>& xDstModel,
+ const OUString& rType,
+ const css::uno::Reference<css::rdf::XResource>& xSrcSubject,
+ const css::uno::Reference<css::rdf::XResource>& xDstSubject);
+
+ /// Remove all statements in the graph of type rType, if any exists.
+ static void clearStatements(const css::uno::Reference<css::frame::XModel>& xModel,
+ const OUString& rType,
+ const css::uno::Reference<css::rdf::XResource>& xSubject);
+
+ /// Gets all (rTextNode, key, value) statements in RDF graphs of type rType.
+ static std::map<OUString, OUString> getTextNodeStatements(const OUString& rType, SwTextNode& rTextNode);
+
+ /// Add an (rTextNode, key, value) statement in the graph of type rType -- or if it does not exist, create a graph at rPath first.
+ static void addTextNodeStatement(const OUString& rType, const OUString& rPath, SwTextNode& rTextNode, const OUString& rKey, const OUString& rValue);
+
+ /// Remove an (rTextNode, key, value) statement in the graph of type rType.
+ static void removeTextNodeStatement(const OUString& rType, SwTextNode& rTextNode, const OUString& rKey, const OUString& rValue);
+
+ /// Update an (rTextNode, key, value) statement in the graph of type rType from old value to new. Creates the graph at rPath if doesn't exist.
+ static void updateTextNodeStatement(const OUString& rType, const OUString& rPath, SwTextNode& rTextNode, const OUString& rKey, const OUString& rOldValue, const OUString& rNewValue);
+
+};
+
+#endif // INCLUDED_SW_INC_RDFHELPER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */