1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23#ifndef __com_sun_star_embed_XHierarchicalStorageAccess_idl__
24#define __com_sun_star_embed_XHierarchicalStorageAccess_idl__
25
26#ifndef __com_sun_star_uno_XInterface_idl__
27#include <com/sun/star/uno/XInterface.idl>
28#endif
29
30#ifndef __com_sun_star_io_XStream_idl__
31#include <com/sun/star/io/XStream.idl>
32#endif
33
34#ifndef __com_sun_star_embed_XExtendedStorageStream_idl__
35#include <com/sun/star/embed/XExtendedStorageStream.idl>
36#endif
37
38#ifndef __com_sun_star_io_IOException_idl__
39#include <com/sun/star/io/IOException.idl>
40#endif
41
42#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
43#include <com/sun/star/lang/IllegalArgumentException.idl>
44#endif
45
46#ifndef __com_sun_star_embed_StorageWrappedTargetException_idl__
47#include <com/sun/star/embed/StorageWrappedTargetException.idl>
48#endif
49
50#ifndef __com_sun_star_embed_InvalidStorageException_idl__
51#include <com/sun/star/embed/InvalidStorageException.idl>
52#endif
53
54#ifndef __com_sun_star_packages_WrongPasswordException_idl__
55#include <com/sun/star/packages/WrongPasswordException.idl>
56#endif
57
58#ifndef __com_sun_star_container_XNameAccess_idl__
59#include <com/sun/star/container/XNameAccess.idl>
60#endif
61
62#ifndef __com_sun_star_container_NoSuchElementException_idl__
63#include <com/sun/star/container/NoSuchElementException.idl>
64#endif
65
66#ifndef __com_sun_star_container_ElementExistException_idl__
67#include <com/sun/star/container/ElementExistException.idl>
68#endif
69
70#ifndef __com_sun_star_packages_NoEncryptionException_idl__
71#include <com/sun/star/packages/NoEncryptionException.idl>
72#endif
73
74
75//============================================================================
76
77 module com {  module sun {  module star {  module embed {
78
79//============================================================================
80/** This interface allows hierarchical access to storage tree.
81
82	<p>
83	Currently only streams can be opened using this interface.
84	</p>
85
86	<p>
87	The hierarchical access can not be mixed with a normal access. Thus when
88	in a storage a stream with a path "a/b/c" is accessed using hierarchical
89	access, another stream "a/b/d" can also be opened with hierarchical
90	access ( if it is still not opened ), but the substorage "a" can not be
91	opened ( it is locked by hierarchical access ).
92	</p>
93 */
94published interface XHierarchicalStorageAccess
95{
96	// METHODS
97	//
98	// -----------------------------------------------------------------------
99	/** allows to get access to a child stream of the storage, using
100		hierarchical path.
101
102		<p>
103		In case the stream is open in readonly mode the
104		<method scope="com::sun::star::io">XStream::getOutputStream</method>
105		method will return an empty reference.
106		</p>
107
108		@param sStreamPath
109			the path to the substream that should be open
110
111		@param nOpenMode
112			a mode the stream should be open in,
113			can be a combination of <type>ElementModes</type> values
114
115		@throws ::com::sun::star::embed::InvalidStorageException
116			this storage is in invalid state for any reason
117
118		@throws ::com::sun::star::lang::IllegalArgumentException
119			one of provided arguments is illegal
120
121		@throws ::com::sun::star::packages::WrongPasswordException
122			the provided password is wrong
123
124		@throws ::com::sun::star::io::IOException
125			in case of io errors during stream opening
126
127		@throws ::com::sun::star::embed::StorageWrappedTargetException
128			wraps other exceptions
129	 */
130    XExtendedStorageStream  openStreamElementByHierarchicalName(
131			[in] string sStreamPath,
132			[in] long nOpenMode )
133		raises( ::com::sun::star::embed::InvalidStorageException,
134				::com::sun::star::lang::IllegalArgumentException,
135				::com::sun::star::packages::WrongPasswordException,
136				::com::sun::star::io::IOException,
137				::com::sun::star::embed::StorageWrappedTargetException );
138
139	// -----------------------------------------------------------------------
140	/** allows to get access to a child encrypted stream with password using
141		hierarchical path.
142
143		<p>
144		If storage does not allow any encryption this method will always throw
145		<type scope="com::sun::star::packages">NoEncryptionException</type>.
146		</p>
147
148		<p>
149		In case the stream is open in readonly mode the
150		<method scope="com::sun::star::io">XStream::getOutputStream</method>
151		method will return an empty reference.
152		</p>
153
154		@param sStreamPath
155			the path to the substream that should be open
156
157		@param nOpenMode
158			a mode the stream should be open in,
159			can be a combination of <type>ElementModes</type> values
160
161		@param sPassword
162			this parameter allowes to specify a reading password for the
163			stream, the password must be a correct one, otherwise an
164			exception will be thrown
165
166		@throws ::com::sun::star::embed::InvalidStorageException
167			this storage is in invalid state for any reason
168
169		@throws ::com::sun::star::lang::IllegalArgumentException
170			one of provided arguments is illegal
171
172		@throws ::com::sun::star::packages::NoEncryptionException
173			the stream is not encrypted
174
175		@throws ::com::sun::star::packages::WrongPasswordException
176			the provided password is wrong
177
178		@throws ::com::sun::star::io::IOException
179			in case of io errors during stream opening
180
181		@throws ::com::sun::star::embed::StorageWrappedTargetException
182			wraps other exceptions
183	 */
184    XExtendedStorageStream  openEncryptedStreamElementByHierarchicalName(
185			[in] string sStreamName,
186			[in] long nOpenMode,
187			[in] string sPassword )
188		raises( ::com::sun::star::embed::InvalidStorageException,
189				::com::sun::star::lang::IllegalArgumentException,
190				::com::sun::star::packages::NoEncryptionException,
191				::com::sun::star::packages::WrongPasswordException,
192				::com::sun::star::io::IOException,
193				::com::sun::star::embed::StorageWrappedTargetException );
194
195	// -----------------------------------------------------------------------
196	/** removes a stream specified by hierarchical name from a storage.
197
198		@param sElementPath
199			the path to the element to remove
200
201		@throws ::com::sun::star::embed::InvalidStorageException
202			this storage is in invalid state for eny reason
203
204		@throws ::com::sun::star::lang::IllegalArgumentException
205			an illegal argument is provided
206
207		@throws ::com::sun::star::container::NoSuchElementException
208			there is no element with such name
209
210		@throws ::com::sun::star::io::IOException
211			in case of io errors during removing
212
213		@throws ::com::sun::star::embed::StorageWrappedTargetException
214			wraps other exceptions
215
216	 */
217    void removeStreamElementByHierarchicalName( [in] string sElementPath )
218		raises( ::com::sun::star::embed::InvalidStorageException,
219				::com::sun::star::lang::IllegalArgumentException,
220				::com::sun::star::container::NoSuchElementException,
221				::com::sun::star::io::IOException,
222				::com::sun::star::embed::StorageWrappedTargetException );
223
224};
225
226//============================================================================
227
228}; }; }; };
229
230#endif
231
232