summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl397
1 files changed, 397 insertions, 0 deletions
diff --git a/offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl b/offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl
new file mode 100644
index 000000000..b7d143555
--- /dev/null
+++ b/offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl
@@ -0,0 +1,397 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_rdf_XDocumentMetadataAccess_idl__
+#define __com_sun_star_rdf_XDocumentMetadataAccess_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/WrappedTargetException.idl>
+#include <com/sun/star/beans/PropertyValue.idl>
+#include <com/sun/star/container/ElementExistException.idl>
+#include <com/sun/star/container/NoSuchElementException.idl>
+#include <com/sun/star/io/IOException.idl>
+#include <com/sun/star/io/XInputStream.idl>
+#include <com/sun/star/datatransfer/UnsupportedFlavorException.idl>
+#include <com/sun/star/embed/XStorage.idl>
+#include <com/sun/star/task/XInteractionHandler.idl>
+#include <com/sun/star/rdf/FileFormat.idl>
+#include <com/sun/star/rdf/ParseException.idl>
+#include <com/sun/star/rdf/XURI.idl>
+#include <com/sun/star/rdf/XMetadatable.idl>
+#include <com/sun/star/rdf/XRepositorySupplier.idl>
+
+
+
+module com { module sun { module star { module rdf {
+
+/** document metadata functionality related to the "manifest.rdf".
+
+ <p>
+ This interface contains some methods that create connections between
+ the content and the RDF metadata of an ODF document.
+ The main idea is to make querying and manipulating the
+ data in the metadata manifest easier.
+ </p>
+
+ <p>
+ Note that this interface inherits from XURI: the
+ base URI of the document is the string value of the RDF node.
+ This is so that you can easily make RDF statements about the document.
+ </p>
+
+ @since OOo 3.2
+
+ @see XDocumentRepository
+ */
+interface XDocumentMetadataAccess
+{
+ interface XURI;
+ interface XRepositorySupplier;
+
+ /** get the unique ODF element with the given metadata reference.
+
+ @param MetadataReference
+ a metadata reference, comprising the stream name and the XML ID
+ For example: Pair("content.xml", "foo-element-1")
+
+ @returns
+ the ODF element with the given metadata references if it exists,
+ else `NULL`
+ */
+ XMetadatable getElementByMetadataReference(
+ [in] com::sun::star::beans::StringPair MetadataReference);
+
+ /** get the ODF element that corresponds to a URI.
+
+ @param URI
+ a URI that may identify an ODF element
+
+ @returns
+ the ODF element that corresponds to the given URI, or `NULL`
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given URI is `NULL`
+ */
+ XMetadatable getElementByURI([in] XURI URI)
+ raises( com::sun::star::lang::IllegalArgumentException );
+
+ /** get the names of all metadata files with a given type.
+
+ @param Type
+ the <code>rdf:type</code> property of the requested named graphs
+
+ @returns
+ the names of all metadata graphs that have a <code>rdf:type</code>
+ property with the given Type as object
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given Type is `NULL`
+ */
+ sequence<XURI> getMetadataGraphsWithType([in] XURI Type)
+ raises( com::sun::star::lang::IllegalArgumentException );
+
+ /** add a metadata file to the manifest.
+
+ <p>
+ This convenience method does the following:
+ <ul>
+ <li>create a new graph with the given name in the repository</li>
+ <li>insert statements declaring the new graph to be a
+ metadata file into the manifest graph</li>
+ <li>insert statements declaring <code>rdf:type</code> properties
+ for the new graph into the manifest graph</li>
+ </ul>
+ </p>
+
+ @param FileName
+ the name of the stream in the ODF storage where the graph will
+ be stored
+
+ @param Types
+ a list of types that will be inserted as <code>rdf:type</code>
+ properties for the graph
+
+ @returns
+ the name of the new graph
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the FileName is invalid
+
+ @throws com::sun::star::container::ElementExistException
+ if a stream with the given FileName already exists
+ */
+ XURI addMetadataFile([in] string FileName,
+ [in] sequence<XURI> Types )
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::container::ElementExistException );
+
+ /** import a metadata file into the document repository, and add it to the
+ manifest.
+
+ <p>
+ This convenience method does the following:
+ <ol>
+ <li>import the given file into a graph with the given name
+ in the repository</li>
+ <li>insert statements declaring the new graph to be a
+ metadata file into the manifest graph</li>
+ <li>insert statements declaring <code>rdf:type</code> properties
+ for the new graph into the manifest graph</li>
+ </ol>
+ </p>
+
+ @param Format
+ the file format, see FileFormat
+
+ @param InStream
+ the input stream
+
+ @param FileName
+ the name of the stream in the ODF storage where the graph will
+ be stored
+
+ @param BaseURI
+ a base URI to resolve relative URI references
+
+ @param Types
+ a list of types that will be inserted as <code>rdf:type</code>
+ properties for the graph
+
+ @returns
+ the name of the new graph
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given stream is `NULL`,
+ or BaseURI is `NULL` and the format requires use of a base URI,
+ or the FileName is invalid
+
+ @throws com::sun::star::datatransfer::UnsupportedFlavorException
+ if the format requested is unknown or not supported
+
+ @throws com::sun::star::container::ElementExistException
+ if a stream with the given FileName already exists
+
+ @throws ParseException
+ if the input does not conform to the specified file format.
+
+ @throws com::sun::star::io::IOException
+ if an I/O error occurs.
+
+ @see FileFormat
+ */
+ XURI importMetadataFile( [in] /*FileFormat*/ short Format,
+ [in] com::sun::star::io::XInputStream InStream,
+ [in] string FileName, [in] XURI BaseURI,
+ [in] sequence<XURI> Types )
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::datatransfer::UnsupportedFlavorException,
+ com::sun::star::container::ElementExistException,
+ ParseException,
+ com::sun::star::io::IOException );
+
+ /** remove a metadata file from the manifest and the repository.
+
+ <p>
+ This convenience method does the following:
+ <ol>
+ <li>delete the graph with the given GraphName in the repository</li>
+ <li>remove the statements declaring the graph to be a
+ metadata file from the manifest graph</li>
+ </ol>
+ </p>
+
+ @param GraphName
+ the name of the graph that is to be removed
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given GraphName is `NULL`
+
+ @throws com::sun::star::container::NoSuchElementException
+ if a graph with the given GraphName does not exist
+ */
+ void removeMetadataFile([in] XURI GraphName)
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::container::NoSuchElementException );
+
+ /** add a content or styles file to the manifest.
+
+ <p>
+ This convenience method adds the required statements declaring a
+ content or styles file to the manifest graph.
+ <ul>
+ <li>If the FileName ends in "content.xml",
+ an <code>odf:ContentFile</code> is added.</li>
+ <li>If the FileName ends in "styles.xml" ,
+ an <code>odf:StylesFile</code> is added.</li>
+ <li>Other FileNames are invalid.</li>
+ </ul>
+ </p>
+
+ @param FileName
+ the name of the stream in the ODF storage
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the FileName is invalid
+
+ @throws com::sun::star::container::ElementExistException
+ if a stream with the given FileName already exists
+ */
+ void addContentOrStylesFile([in] string FileName)
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::container::ElementExistException );
+
+ /** remove a content or styles file from the manifest.
+
+ <p>
+ This convenience method removes the statements declaring a
+ content or styles file from the manifest graph.
+ </p>
+
+ @param FileName
+ the name of the stream in the ODF storage
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the FileName is invalid
+
+ @throws com::sun::star::container::NoSuchElementException
+ if a graph with the given GraphName does not exist
+ */
+ void removeContentOrStylesFile([in] string FileName)
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::container::NoSuchElementException );
+
+ /** initialize document metadata from a storage.
+
+ <p>
+ This method re-initializes the document metadata,
+ loads the stream named "manifest.rdf" from the storage, and then
+ loads all metadata streams mentioned in the manifest.
+ </p>
+
+ <p>
+ Note that it is not an error if the storage does not contain
+ a manifest.
+ In this case, the document metadata will be default initialized.
+ </p>
+
+ <p>
+ If an InteractionHandler argument is given, it will be used for
+ error reporting. Otherwise, errors will be reported as exceptions.
+ </p>
+
+ @param Storage
+ a storage, representing e.g. an ODF package file, or sub-document
+
+ @param BaseURI
+ a base URI to resolve relative URI references
+ <p>N.B.: when loading from an ODF package, the base URI is not the
+ URI of the package, but the URI of the directory in the package
+ that contains the metadata.rdf</p>
+
+ @param InteractionHandler
+ an InteractionHandler, used for error reporting
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if any argument is `NULL`
+
+ @throws com::sun::star::lang::WrappedTargetException
+ if an error occurs while loading and no InteractionHandler given
+ */
+ void loadMetadataFromStorage(
+ [in] com::sun::star::embed::XStorage Storage,
+ [in] XURI BaseURI,
+ [in] com::sun::star::task::XInteractionHandler InteractionHandler )
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::WrappedTargetException );
+
+ /** store document metadata to a storage.
+
+ <p>
+ This method stores all the graphs in the document metadata repository
+ to the given storage.
+ </p>
+
+ <p>
+ Note that to be stored correctly, a named graph must have a complete
+ entry in the manifest graph.
+ </p>
+
+ @param Storage
+ a storage, representing e.g. an ODF package file, or sub-document
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if Storage argument is `NULL`
+
+ @throws com::sun::star::lang::WrappedTargetException
+ if an error occurs while loading
+ */
+ void storeMetadataToStorage(
+ [in] com::sun::star::embed::XStorage Storage )
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::WrappedTargetException );
+
+ /** loads document metadata from a medium.
+
+ <p>If the Medium contains an InteractionHandler, it will be used for
+ error reporting.</p>
+
+ @param Medium
+ the com::sun::star::document::MediaDescriptor
+ representing the source
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the argument does not contain a URL or Stream property
+
+ @throws com::sun::star::lang::WrappedTargetException
+ if an error occurs while loading
+
+ @see com::sun::star::document::MediaDescriptor
+ */
+ void loadMetadataFromMedium(
+ [in] sequence < com::sun::star::beans::PropertyValue > Medium )
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::WrappedTargetException );
+
+ /** stores document metadata to a medium.
+
+ @param Medium
+ the com::sun::star::document::MediaDescriptor
+ representing the target
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the argument does not contain a URL or Stream property
+
+ @throws com::sun::star::lang::WrappedTargetException
+ if an error occurs while storing
+
+ @see com::sun::star::document::MediaDescriptor
+ */
+ void storeMetadataToMedium(
+ [in] sequence < com::sun::star::beans::PropertyValue > Medium )
+ raises( com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::WrappedTargetException );
+
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */