diff options
Diffstat (limited to '')
-rw-r--r-- | offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl | 397 |
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: */ |