1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_XDocumentMetadataAccess_idl__
25*b1cdbd2cSJim Jagielski#define __com_sun_star_rdf_XDocumentMetadataAccess_idl__
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
28*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl>
29*b1cdbd2cSJim Jagielski#endif
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_WrappedTargetException_idl__
32*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/WrappedTargetException.idl>
33*b1cdbd2cSJim Jagielski#endif
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_PropertyValue_idl__
36*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/PropertyValue.idl>
37*b1cdbd2cSJim Jagielski#endif
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_ElementExistException_idl__
40*b1cdbd2cSJim Jagielski#include <com/sun/star/container/ElementExistException.idl>
41*b1cdbd2cSJim Jagielski#endif
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_NoSuchElementException_idl__
44*b1cdbd2cSJim Jagielski#include <com/sun/star/container/NoSuchElementException.idl>
45*b1cdbd2cSJim Jagielski#endif
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_io_IOException_idl__
48*b1cdbd2cSJim Jagielski#include <com/sun/star/io/IOException.idl>
49*b1cdbd2cSJim Jagielski#endif
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_io_XInputStream_idl__
52*b1cdbd2cSJim Jagielski#include <com/sun/star/io/XInputStream.idl>
53*b1cdbd2cSJim Jagielski#endif
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_datatransfer_UnsupportedFlavorException_idl__
56*b1cdbd2cSJim Jagielski#include <com/sun/star/datatransfer/UnsupportedFlavorException.idl>
57*b1cdbd2cSJim Jagielski#endif
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_embed_XStorage_idl__
60*b1cdbd2cSJim Jagielski#include <com/sun/star/embed/XStorage.idl>
61*b1cdbd2cSJim Jagielski#endif
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_task_XInteractionHandler_idl__
64*b1cdbd2cSJim Jagielski#include <com/sun/star/task/XInteractionHandler.idl>
65*b1cdbd2cSJim Jagielski#endif
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_FileFormat_idl__
68*b1cdbd2cSJim Jagielski#include <com/sun/star/rdf/FileFormat.idl>
69*b1cdbd2cSJim Jagielski#endif
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_ParseException_idl__
72*b1cdbd2cSJim Jagielski#include <com/sun/star/rdf/ParseException.idl>
73*b1cdbd2cSJim Jagielski#endif
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_XURI_idl__
76*b1cdbd2cSJim Jagielski#include <com/sun/star/rdf/XURI.idl>
77*b1cdbd2cSJim Jagielski#endif
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_XMetadatable_idl__
80*b1cdbd2cSJim Jagielski#include <com/sun/star/rdf/XMetadatable.idl>
81*b1cdbd2cSJim Jagielski#endif
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_XRepositorySupplier_idl__
84*b1cdbd2cSJim Jagielski#include <com/sun/star/rdf/XRepositorySupplier.idl>
85*b1cdbd2cSJim Jagielski#endif
86*b1cdbd2cSJim Jagielski
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski//=============================================================================
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielskimodule com {   module sun {   module star {   module rdf {
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski//=============================================================================
93*b1cdbd2cSJim Jagielski/** document metadata functionality related to the "manifest.rdf".
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski    <p>
96*b1cdbd2cSJim Jagielski    This interface contains some methods that create connections between
97*b1cdbd2cSJim Jagielski    the content and the RDF metadata of an ODF document.
98*b1cdbd2cSJim Jagielski    The main idea is to make querying and manipulating the
99*b1cdbd2cSJim Jagielski    data in the metadata manifest easier.
100*b1cdbd2cSJim Jagielski    </p>
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielski    <p>
103*b1cdbd2cSJim Jagielski    Note that this interface inherits from <type>XURI</type>: the
104*b1cdbd2cSJim Jagielski    base URI of the document is the string value of the RDF node.
105*b1cdbd2cSJim Jagielski    This is so that you can easily make RDF statements about the document.
106*b1cdbd2cSJim Jagielski    </p>
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski    @since OpenOffice 3.2
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski    @see XDocumentRepository
111*b1cdbd2cSJim Jagielski */
112*b1cdbd2cSJim Jagielskiinterface XDocumentMetadataAccess
113*b1cdbd2cSJim Jagielski{
114*b1cdbd2cSJim Jagielski    interface XURI;
115*b1cdbd2cSJim Jagielski    interface XRepositorySupplier;
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
118*b1cdbd2cSJim Jagielski    /** get the unique ODF element with the given metadata reference.
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski        @param MetadataReference
121*b1cdbd2cSJim Jagielski            a metadata reference, comprising the stream name and the XML ID
122*b1cdbd2cSJim Jagielski            For example: Pair("content.xml", "foo-element-1")
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski        @returns
125*b1cdbd2cSJim Jagielski            the ODF element with the given metadata references if it exists,
126*b1cdbd2cSJim Jagielski            else <NULL/>
127*b1cdbd2cSJim Jagielski     */
128*b1cdbd2cSJim Jagielski    XMetadatable getElementByMetadataReference(
129*b1cdbd2cSJim Jagielski        [in] com::sun::star::beans::StringPair MetadataReference);
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
132*b1cdbd2cSJim Jagielski    /** get the ODF element that corresponds to an URI.
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielski        @param URI
135*b1cdbd2cSJim Jagielski            an URI that may identify an ODF element
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski        @returns
138*b1cdbd2cSJim Jagielski            the ODF element that corresponds to the given URI, or <NULL/>
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
141*b1cdbd2cSJim Jagielski            if the given URI is <NULL/>
142*b1cdbd2cSJim Jagielski     */
143*b1cdbd2cSJim Jagielski    XMetadatable getElementByURI([in] XURI URI)
144*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException );
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
147*b1cdbd2cSJim Jagielski    /** get the names of all metadata files with a given type.
148*b1cdbd2cSJim Jagielski
149*b1cdbd2cSJim Jagielski        @param Type
150*b1cdbd2cSJim Jagielski            the <code>rdf:type</code> property of the requested named graphs
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski        @returns
153*b1cdbd2cSJim Jagielski            the names of all metadata graphs that have a <code>rdf:type</code>
154*b1cdbd2cSJim Jagielski            property with the given Type as object
155*b1cdbd2cSJim Jagielski
156*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
157*b1cdbd2cSJim Jagielski            if the given Type is <NULL/>
158*b1cdbd2cSJim Jagielski     */
159*b1cdbd2cSJim Jagielski    sequence<XURI> getMetadataGraphsWithType([in] XURI Type)
160*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException );
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
163*b1cdbd2cSJim Jagielski    /** add a metadata file to the manifest.
164*b1cdbd2cSJim Jagielski
165*b1cdbd2cSJim Jagielski        <p>
166*b1cdbd2cSJim Jagielski        This convenience method does the following:
167*b1cdbd2cSJim Jagielski        <ul>
168*b1cdbd2cSJim Jagielski        <li>create a new graph with the given name in the repository</li>
169*b1cdbd2cSJim Jagielski        <li>insert statements declaring the new graph to be a
170*b1cdbd2cSJim Jagielski            metadata file into the manifest graph</li>
171*b1cdbd2cSJim Jagielski        <li>insert statements declaring <code>rdf:type</code> properties
172*b1cdbd2cSJim Jagielski            for the new graph into the manifest graph</li>
173*b1cdbd2cSJim Jagielski        </ul>
174*b1cdbd2cSJim Jagielski        </p>
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski        @param FileName
177*b1cdbd2cSJim Jagielski            the name of the stream in the ODF storage where the graph will
178*b1cdbd2cSJim Jagielski            be stored
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski        @param Types
181*b1cdbd2cSJim Jagielski            a list of types that will be inserted as <code>rdf:type</code>
182*b1cdbd2cSJim Jagielski            properties for the graph
183*b1cdbd2cSJim Jagielski
184*b1cdbd2cSJim Jagielski        @returns
185*b1cdbd2cSJim Jagielski            the name of the new graph
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
188*b1cdbd2cSJim Jagielski            if the FileName is invalid
189*b1cdbd2cSJim Jagielski
190*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::ElementExistException
191*b1cdbd2cSJim Jagielski            if a stream with the given FileName already exists
192*b1cdbd2cSJim Jagielski     */
193*b1cdbd2cSJim Jagielski    XURI addMetadataFile([in] string FileName,
194*b1cdbd2cSJim Jagielski            [in] sequence<XURI> Types )
195*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
196*b1cdbd2cSJim Jagielski                com::sun::star::container::ElementExistException );
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
199*b1cdbd2cSJim Jagielski    /** import a metadata file into the document repository, and add it to the
200*b1cdbd2cSJim Jagielski        manifest.
201*b1cdbd2cSJim Jagielski
202*b1cdbd2cSJim Jagielski        <p>
203*b1cdbd2cSJim Jagielski        This convenience method does the following:
204*b1cdbd2cSJim Jagielski        <li>import the given file into a graph with the given name
205*b1cdbd2cSJim Jagielski            in the repository</li>
206*b1cdbd2cSJim Jagielski        <li>insert statements declaring the new graph to be a
207*b1cdbd2cSJim Jagielski            metadata file into the manifest graph</li>
208*b1cdbd2cSJim Jagielski        <li>insert statements declaring <code>rdf:type</code> properties
209*b1cdbd2cSJim Jagielski            for the new graph into the manifest graph</li>
210*b1cdbd2cSJim Jagielski        </p>
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski        @param FileName
213*b1cdbd2cSJim Jagielski            the name of the stream in the ODF storage where the graph will
214*b1cdbd2cSJim Jagielski            be stored
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski        @param BaseURI
217*b1cdbd2cSJim Jagielski            a base URI to resolve relative URI references
218*b1cdbd2cSJim Jagielski
219*b1cdbd2cSJim Jagielski        @param Types
220*b1cdbd2cSJim Jagielski            a list of types that will be inserted as <code>rdf:type</code>
221*b1cdbd2cSJim Jagielski            properties for the graph
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski        @returns
224*b1cdbd2cSJim Jagielski            the name of the new graph
225*b1cdbd2cSJim Jagielski
226*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
227*b1cdbd2cSJim Jagielski            if the given stream is <NULL/>,
228*b1cdbd2cSJim Jagielski            or BaseURI is <NULL/> and the format requires use of a base URI,
229*b1cdbd2cSJim Jagielski            or the FileName is invalid
230*b1cdbd2cSJim Jagielski
231*b1cdbd2cSJim Jagielski        @throws com::sun::star::datatransfer::UnsupportedFlavorException
232*b1cdbd2cSJim Jagielski            if the format requested is unknown or not supported
233*b1cdbd2cSJim Jagielski
234*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::ElementExistException
235*b1cdbd2cSJim Jagielski            if a stream with the given FileName already exists
236*b1cdbd2cSJim Jagielski
237*b1cdbd2cSJim Jagielski        @throws ParseException
238*b1cdbd2cSJim Jagielski            if the input does not conform to the specified file format.
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski        @throws com::sun::star::io::IOException
241*b1cdbd2cSJim Jagielski            if an I/O error occurs.
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski        @see FileFormat
244*b1cdbd2cSJim Jagielski     */
245*b1cdbd2cSJim Jagielski    XURI importMetadataFile( [in] /*FileFormat*/ short Format,
246*b1cdbd2cSJim Jagielski            [in] com::sun::star::io::XInputStream InStream,
247*b1cdbd2cSJim Jagielski            [in] string FileName, [in] XURI BaseURI,
248*b1cdbd2cSJim Jagielski            [in] sequence<XURI> Types )
249*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
250*b1cdbd2cSJim Jagielski                com::sun::star::datatransfer::UnsupportedFlavorException,
251*b1cdbd2cSJim Jagielski                com::sun::star::container::ElementExistException,
252*b1cdbd2cSJim Jagielski                ParseException,
253*b1cdbd2cSJim Jagielski                com::sun::star::io::IOException );
254*b1cdbd2cSJim Jagielski
255*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
256*b1cdbd2cSJim Jagielski    /** remove a metadata file from the manifest and the repository.
257*b1cdbd2cSJim Jagielski
258*b1cdbd2cSJim Jagielski        <p>
259*b1cdbd2cSJim Jagielski        This convenience method does the following:
260*b1cdbd2cSJim Jagielski        <li>delete the graph with the given GraphName in the repository</li>
261*b1cdbd2cSJim Jagielski        <li>remove the statements declaring the graph to be a
262*b1cdbd2cSJim Jagielski            metadata file from the manifest graph</li>
263*b1cdbd2cSJim Jagielski        </p>
264*b1cdbd2cSJim Jagielski
265*b1cdbd2cSJim Jagielski        @param GraphName
266*b1cdbd2cSJim Jagielski            the name of the graph that is to be removed
267*b1cdbd2cSJim Jagielski
268*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
269*b1cdbd2cSJim Jagielski            if the given GraphName is <NULL/>
270*b1cdbd2cSJim Jagielski
271*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::NoSuchElementException
272*b1cdbd2cSJim Jagielski            if a graph with the given GraphName does not exist
273*b1cdbd2cSJim Jagielski     */
274*b1cdbd2cSJim Jagielski    void removeMetadataFile([in] XURI GraphName)
275*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
276*b1cdbd2cSJim Jagielski                com::sun::star::container::NoSuchElementException );
277*b1cdbd2cSJim Jagielski
278*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
279*b1cdbd2cSJim Jagielski    /** add a content or styles file to the manifest.
280*b1cdbd2cSJim Jagielski
281*b1cdbd2cSJim Jagielski        <p>
282*b1cdbd2cSJim Jagielski        This convenience method adds the required statements declaring a
283*b1cdbd2cSJim Jagielski        content or styles file to the manifest graph.
284*b1cdbd2cSJim Jagielski        <ul>
285*b1cdbd2cSJim Jagielski        <li>If the FileName ends in "content.xml",
286*b1cdbd2cSJim Jagielski            an <code>odf:ContentFile</code> is added.</li>
287*b1cdbd2cSJim Jagielski        <li>If the FileName ends in "styles.xml" ,
288*b1cdbd2cSJim Jagielski            an <code>odf:StylesFile</code>  is added.</li>
289*b1cdbd2cSJim Jagielski        <li>Other FileNames are invalid.</li>
290*b1cdbd2cSJim Jagielski        </ul>
291*b1cdbd2cSJim Jagielski        </p>
292*b1cdbd2cSJim Jagielski
293*b1cdbd2cSJim Jagielski        @param FileName
294*b1cdbd2cSJim Jagielski            the name of the stream in the ODF storage
295*b1cdbd2cSJim Jagielski
296*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
297*b1cdbd2cSJim Jagielski            if the FileName is invalid
298*b1cdbd2cSJim Jagielski
299*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::ElementExistException
300*b1cdbd2cSJim Jagielski            if a stream with the given FileName already exists
301*b1cdbd2cSJim Jagielski     */
302*b1cdbd2cSJim Jagielski    void addContentOrStylesFile([in] string FileName)
303*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
304*b1cdbd2cSJim Jagielski                com::sun::star::container::ElementExistException );
305*b1cdbd2cSJim Jagielski
306*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
307*b1cdbd2cSJim Jagielski    /** remove a content or styles file from the manifest.
308*b1cdbd2cSJim Jagielski
309*b1cdbd2cSJim Jagielski        <p>
310*b1cdbd2cSJim Jagielski        This convenience method removes the statements declaring a
311*b1cdbd2cSJim Jagielski        content or styles file from the manifest graph.
312*b1cdbd2cSJim Jagielski        </p>
313*b1cdbd2cSJim Jagielski
314*b1cdbd2cSJim Jagielski        @param FileName
315*b1cdbd2cSJim Jagielski            the name of the stream in the ODF storage
316*b1cdbd2cSJim Jagielski
317*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
318*b1cdbd2cSJim Jagielski            if the FileName is invalid
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::NoSuchElementException
321*b1cdbd2cSJim Jagielski            if a graph with the given GraphName does not exist
322*b1cdbd2cSJim Jagielski     */
323*b1cdbd2cSJim Jagielski    void removeContentOrStylesFile([in] string FileName)
324*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
325*b1cdbd2cSJim Jagielski                com::sun::star::container::NoSuchElementException );
326*b1cdbd2cSJim Jagielski
327*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
328*b1cdbd2cSJim Jagielski    /** initialize document metadata from a storage.
329*b1cdbd2cSJim Jagielski
330*b1cdbd2cSJim Jagielski        <p>
331*b1cdbd2cSJim Jagielski        This method re-initializes the document metadata,
332*b1cdbd2cSJim Jagielski        loads the stream named "manifest.rdf" from the storage, and then
333*b1cdbd2cSJim Jagielski        loads all metadata streams mentioned in the manifest.
334*b1cdbd2cSJim Jagielski        </p>
335*b1cdbd2cSJim Jagielski
336*b1cdbd2cSJim Jagielski        <p>
337*b1cdbd2cSJim Jagielski        Note that it is not an error if the storage does not contain
338*b1cdbd2cSJim Jagielski        a manifest.
339*b1cdbd2cSJim Jagielski        In this case, the document metadata will be default initialized.
340*b1cdbd2cSJim Jagielski        </p>
341*b1cdbd2cSJim Jagielski
342*b1cdbd2cSJim Jagielski        <p>
343*b1cdbd2cSJim Jagielski        If an InteractionHandler argument is given, it will be used for
344*b1cdbd2cSJim Jagielski        error reporting. Otherwise, errors will be reported as exceptions.
345*b1cdbd2cSJim Jagielski        </p>
346*b1cdbd2cSJim Jagielski
347*b1cdbd2cSJim Jagielski        @param Storage
348*b1cdbd2cSJim Jagielski            a storage, representing e.g. an ODF package file, or sub-document
349*b1cdbd2cSJim Jagielski
350*b1cdbd2cSJim Jagielski        @param BaseURI
351*b1cdbd2cSJim Jagielski            a base URI to resolve relative URI references
352*b1cdbd2cSJim Jagielski            <p>N.B.: when loading from an ODF package, the base URI is not the
353*b1cdbd2cSJim Jagielski               URI of the package, but the URI of the directory in the package
354*b1cdbd2cSJim Jagielski               that contains the metadata.rdf</p>
355*b1cdbd2cSJim Jagielski
356*b1cdbd2cSJim Jagielski        @param InteractionHandler
357*b1cdbd2cSJim Jagielski            an InteractionHandler, used for error reporting
358*b1cdbd2cSJim Jagielski
359*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
360*b1cdbd2cSJim Jagielski            if any argument is <NULL/>
361*b1cdbd2cSJim Jagielski
362*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::WrappedTargetException
363*b1cdbd2cSJim Jagielski            if an error occurs while loading and no InteractionHandler given
364*b1cdbd2cSJim Jagielski     */
365*b1cdbd2cSJim Jagielski    void loadMetadataFromStorage(
366*b1cdbd2cSJim Jagielski            [in] com::sun::star::embed::XStorage Storage,
367*b1cdbd2cSJim Jagielski            [in] XURI BaseURI,
368*b1cdbd2cSJim Jagielski            [in] com::sun::star::task::XInteractionHandler InteractionHandler )
369*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
370*b1cdbd2cSJim Jagielski                com::sun::star::lang::WrappedTargetException );
371*b1cdbd2cSJim Jagielski
372*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
373*b1cdbd2cSJim Jagielski    /** store document metadata to a storage.
374*b1cdbd2cSJim Jagielski
375*b1cdbd2cSJim Jagielski        <p>
376*b1cdbd2cSJim Jagielski        This method stores all the graphs in the document metadata repository
377*b1cdbd2cSJim Jagielski        to the given storage.
378*b1cdbd2cSJim Jagielski        </p>
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim Jagielski        <p>
381*b1cdbd2cSJim Jagielski        Note that to be stored correctly, a named graph must have a complete
382*b1cdbd2cSJim Jagielski        entry in the manifest graph.
383*b1cdbd2cSJim Jagielski        </p>
384*b1cdbd2cSJim Jagielski
385*b1cdbd2cSJim Jagielski        @param Storage
386*b1cdbd2cSJim Jagielski            a storage, representing e.g. an ODF package file, or sub-document
387*b1cdbd2cSJim Jagielski
388*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
389*b1cdbd2cSJim Jagielski            if Storage argument is <NULL/>
390*b1cdbd2cSJim Jagielski
391*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::WrappedTargetException
392*b1cdbd2cSJim Jagielski            if an error occurs while loading
393*b1cdbd2cSJim Jagielski     */
394*b1cdbd2cSJim Jagielski    void storeMetadataToStorage(
395*b1cdbd2cSJim Jagielski            [in] com::sun::star::embed::XStorage Storage )
396*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
397*b1cdbd2cSJim Jagielski                com::sun::star::lang::WrappedTargetException );
398*b1cdbd2cSJim Jagielski
399*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
400*b1cdbd2cSJim Jagielski    /** loads document metadata from a medium.
401*b1cdbd2cSJim Jagielski
402*b1cdbd2cSJim Jagielski        <p>If the Medium contains an InteractionHandler, it will be used for
403*b1cdbd2cSJim Jagielski        error reporting.</p>
404*b1cdbd2cSJim Jagielski
405*b1cdbd2cSJim Jagielski        @param Medium
406*b1cdbd2cSJim Jagielski            the <type>com::sun::star::document::MediaDescriptor</type>
407*b1cdbd2cSJim Jagielski            representing the source
408*b1cdbd2cSJim Jagielski
409*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
410*b1cdbd2cSJim Jagielski            if the argument does not contain a URL or Stream property
411*b1cdbd2cSJim Jagielski
412*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::WrappedTargetException
413*b1cdbd2cSJim Jagielski            if an error occurs while loading
414*b1cdbd2cSJim Jagielski
415*b1cdbd2cSJim Jagielski        @see com::sun::star::document::MediaDescriptor
416*b1cdbd2cSJim Jagielski     */
417*b1cdbd2cSJim Jagielski    void loadMetadataFromMedium(
418*b1cdbd2cSJim Jagielski            [in] sequence < com::sun::star::beans::PropertyValue > Medium )
419*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
420*b1cdbd2cSJim Jagielski                com::sun::star::lang::WrappedTargetException );
421*b1cdbd2cSJim Jagielski
422*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
423*b1cdbd2cSJim Jagielski    /** stores document metadata to a medium.
424*b1cdbd2cSJim Jagielski
425*b1cdbd2cSJim Jagielski        @param Medium
426*b1cdbd2cSJim Jagielski            the <type>com::sun::star::document::MediaDescriptor</type>
427*b1cdbd2cSJim Jagielski            representing the target
428*b1cdbd2cSJim Jagielski
429*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
430*b1cdbd2cSJim Jagielski            if the argument does not contain a URL or Stream property
431*b1cdbd2cSJim Jagielski
432*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::WrappedTargetException
433*b1cdbd2cSJim Jagielski            if an error occurs while storing
434*b1cdbd2cSJim Jagielski
435*b1cdbd2cSJim Jagielski        @see com::sun::star::document::MediaDescriptor
436*b1cdbd2cSJim Jagielski     */
437*b1cdbd2cSJim Jagielski    void storeMetadataToMedium(
438*b1cdbd2cSJim Jagielski            [in] sequence < com::sun::star::beans::PropertyValue > Medium )
439*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
440*b1cdbd2cSJim Jagielski                com::sun::star::lang::WrappedTargetException );
441*b1cdbd2cSJim Jagielski
442*b1cdbd2cSJim Jagielski};
443*b1cdbd2cSJim Jagielski
444*b1cdbd2cSJim Jagielski//=============================================================================
445*b1cdbd2cSJim Jagielski
446*b1cdbd2cSJim Jagielski}; }; }; };
447*b1cdbd2cSJim Jagielski
448*b1cdbd2cSJim Jagielski#endif
449