xref: /trunk/main/svl/source/fsstor/fsstorage.hxx (revision 39a19a47)
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 
24 #ifndef __XSTORAGE_HXX_
25 #define __XSTORAGE_HXX_
26 
27 #include <com/sun/star/uno/Sequence.hxx>
28 #include <com/sun/star/embed/XStorage.hpp>
29 #include <com/sun/star/embed/XHierarchicalStorageAccess.hpp>
30 #include <com/sun/star/beans/XPropertySet.hpp>
31 #include <com/sun/star/beans/PropertyValue.hpp>
32 #include <com/sun/star/io/XStream.hpp>
33 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
34 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
35 #include <com/sun/star/lang/XTypeProvider.hpp>
36 #include <com/sun/star/lang/XComponent.hpp>
37 #include <com/sun/star/packages/NoEncryptionException.hpp>
38 #include <cppuhelper/weak.hxx>
39 #include <cppuhelper/interfacecontainer.h>
40 
41 #include <ucbhelper/content.hxx>
42 
43 struct FSStorage_Impl;
44 class FSStorage	: public ::com::sun::star::lang::XTypeProvider
45 				, public ::com::sun::star::embed::XStorage
46 				, public ::com::sun::star::embed::XHierarchicalStorageAccess
47 				, public ::com::sun::star::beans::XPropertySet
48 				, public ::cppu::OWeakObject
49 {
50 	::osl::Mutex m_aMutex;
51 	FSStorage_Impl* m_pImpl;
52 
53 protected:
54 
55 public:
56 
57 	FSStorage(	const ::ucbhelper::Content& aContent,
58 				sal_Int32 nMode,
59 				::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > xProperties,
60 				::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xFactory );
61 
62 	virtual ~FSStorage();
63 
64 	::ucbhelper::Content* GetContent();
65 
66 	void CopyStreamToSubStream( const ::rtl::OUString& aSourceURL,
67 								const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest,
68 								const ::rtl::OUString& aNewEntryName );
69 
70 	void CopyContentToStorage_Impl( ::ucbhelper::Content* pContent,
71 									const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest );
72 
73 	static sal_Bool MakeFolderNoUI( const String& rFolder, sal_Bool bNewOnly );
74 
75 	//____________________________________________________________________________________________________
76 	//	XInterface
77 	//____________________________________________________________________________________________________
78 
79 	virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& rType )
80 		throw( ::com::sun::star::uno::RuntimeException );
81 
82     virtual void SAL_CALL acquire() throw();
83 
84     virtual void SAL_CALL release() throw();
85 
86 	//____________________________________________________________________________________________________
87 	//	XTypeProvider
88 	//____________________________________________________________________________________________________
89 
90 	virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
91 		throw( ::com::sun::star::uno::RuntimeException );
92 
93 	virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
94 		throw( ::com::sun::star::uno::RuntimeException );
95 
96 	//____________________________________________________________________________________________________
97 	//	XStorage
98 	//____________________________________________________________________________________________________
99 
100     virtual void SAL_CALL copyToStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest )
101 		throw ( ::com::sun::star::embed::InvalidStorageException,
102 				::com::sun::star::lang::IllegalArgumentException,
103 				::com::sun::star::io::IOException,
104 				::com::sun::star::embed::StorageWrappedTargetException,
105 				::com::sun::star::uno::RuntimeException );
106 
107     virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL openStreamElement(
108 			const ::rtl::OUString& aStreamName, sal_Int32 nOpenMode )
109 		throw ( ::com::sun::star::embed::InvalidStorageException,
110 				::com::sun::star::lang::IllegalArgumentException,
111 				::com::sun::star::packages::WrongPasswordException,
112 				::com::sun::star::io::IOException,
113 				::com::sun::star::embed::StorageWrappedTargetException,
114 				::com::sun::star::uno::RuntimeException );
115 
116     virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL openEncryptedStreamElement(
117 			const ::rtl::OUString& aStreamName, sal_Int32 nOpenMode, const ::rtl::OUString& aPass )
118 		throw ( ::com::sun::star::embed::InvalidStorageException,
119 				::com::sun::star::lang::IllegalArgumentException,
120 				::com::sun::star::packages::NoEncryptionException,
121 				::com::sun::star::packages::WrongPasswordException,
122 				::com::sun::star::io::IOException,
123 				::com::sun::star::embed::StorageWrappedTargetException,
124 				::com::sun::star::uno::RuntimeException );
125 
126     virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > SAL_CALL openStorageElement(
127 			const ::rtl::OUString& aStorName, sal_Int32 nStorageMode )
128 		throw ( ::com::sun::star::embed::InvalidStorageException,
129 				::com::sun::star::lang::IllegalArgumentException,
130 				::com::sun::star::io::IOException,
131 				::com::sun::star::embed::StorageWrappedTargetException,
132 				::com::sun::star::uno::RuntimeException );
133 
134     virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL cloneStreamElement(
135 			const ::rtl::OUString& aStreamName )
136 		throw ( ::com::sun::star::embed::InvalidStorageException,
137 				::com::sun::star::lang::IllegalArgumentException,
138 				::com::sun::star::packages::WrongPasswordException,
139 				::com::sun::star::io::IOException,
140 				::com::sun::star::embed::StorageWrappedTargetException,
141 				::com::sun::star::uno::RuntimeException );
142 
143     virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL cloneEncryptedStreamElement(
144 			const ::rtl::OUString& aStreamName, const ::rtl::OUString& aPass )
145 		throw ( ::com::sun::star::embed::InvalidStorageException,
146 				::com::sun::star::lang::IllegalArgumentException,
147 				::com::sun::star::packages::NoEncryptionException,
148 				::com::sun::star::packages::WrongPasswordException,
149 				::com::sun::star::io::IOException,
150 				::com::sun::star::embed::StorageWrappedTargetException,
151 				::com::sun::star::uno::RuntimeException );
152 
153     virtual void SAL_CALL copyLastCommitTo(
154 			const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xTargetStorage )
155 		throw ( ::com::sun::star::embed::InvalidStorageException,
156 				::com::sun::star::lang::IllegalArgumentException,
157 				::com::sun::star::io::IOException,
158 				::com::sun::star::embed::StorageWrappedTargetException,
159 				::com::sun::star::uno::RuntimeException );
160 
161     virtual void SAL_CALL copyStorageElementLastCommitTo(
162 			const ::rtl::OUString& aStorName,
163 			const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xTargetStorage )
164 		throw ( ::com::sun::star::embed::InvalidStorageException,
165 				::com::sun::star::lang::IllegalArgumentException,
166 				::com::sun::star::io::IOException,
167 				::com::sun::star::embed::StorageWrappedTargetException,
168 				::com::sun::star::uno::RuntimeException );
169 
170     virtual sal_Bool SAL_CALL isStreamElement( const ::rtl::OUString& aElementName )
171 		throw ( ::com::sun::star::container::NoSuchElementException,
172 				::com::sun::star::lang::IllegalArgumentException,
173 				::com::sun::star::embed::InvalidStorageException,
174 				::com::sun::star::uno::RuntimeException );
175 
176     virtual sal_Bool SAL_CALL isStorageElement( const ::rtl::OUString& aElementName )
177 		throw ( ::com::sun::star::container::NoSuchElementException,
178 				::com::sun::star::lang::IllegalArgumentException,
179 				::com::sun::star::embed::InvalidStorageException,
180 				::com::sun::star::uno::RuntimeException );
181 
182     virtual void SAL_CALL removeElement( const ::rtl::OUString& aElementName )
183 		throw ( ::com::sun::star::embed::InvalidStorageException,
184 				::com::sun::star::lang::IllegalArgumentException,
185 				::com::sun::star::container::NoSuchElementException,
186 				::com::sun::star::io::IOException,
187 				::com::sun::star::embed::StorageWrappedTargetException,
188 				::com::sun::star::uno::RuntimeException );
189 
190     virtual void SAL_CALL renameElement( const ::rtl::OUString& rEleName, const ::rtl::OUString& rNewName )
191 		throw ( ::com::sun::star::embed::InvalidStorageException,
192 				::com::sun::star::lang::IllegalArgumentException,
193 				::com::sun::star::container::NoSuchElementException,
194 				::com::sun::star::container::ElementExistException,
195 				::com::sun::star::io::IOException,
196 				::com::sun::star::embed::StorageWrappedTargetException,
197 				::com::sun::star::uno::RuntimeException );
198 
199     virtual void SAL_CALL copyElementTo(	const ::rtl::OUString& aElementName,
200 										const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest,
201 										const ::rtl::OUString& aNewName )
202 		throw ( ::com::sun::star::embed::InvalidStorageException,
203 				::com::sun::star::lang::IllegalArgumentException,
204 				::com::sun::star::container::NoSuchElementException,
205 				::com::sun::star::container::ElementExistException,
206 				::com::sun::star::io::IOException,
207 				::com::sun::star::embed::StorageWrappedTargetException,
208 				::com::sun::star::uno::RuntimeException );
209 
210     virtual void SAL_CALL moveElementTo(	const ::rtl::OUString& aElementName,
211 										const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest,
212 										const ::rtl::OUString& rNewName )
213 		throw ( ::com::sun::star::embed::InvalidStorageException,
214 				::com::sun::star::lang::IllegalArgumentException,
215 				::com::sun::star::container::NoSuchElementException,
216 				::com::sun::star::container::ElementExistException,
217 				::com::sun::star::io::IOException,
218 				::com::sun::star::embed::StorageWrappedTargetException,
219 				::com::sun::star::uno::RuntimeException );
220 
221 	//____________________________________________________________________________________________________
222 	//	XNameAccess
223 	//____________________________________________________________________________________________________
224 
225     virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
226 		throw ( ::com::sun::star::container::NoSuchElementException,
227 				::com::sun::star::lang::WrappedTargetException,
228 				::com::sun::star::uno::RuntimeException );
229 
230     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
231 		throw ( ::com::sun::star::uno::RuntimeException );
232 
233     virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
234 		throw ( ::com::sun::star::uno::RuntimeException );
235 
236     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
237 		throw ( ::com::sun::star::uno::RuntimeException );
238 
239     virtual sal_Bool SAL_CALL hasElements()
240 		throw ( ::com::sun::star::uno::RuntimeException );
241 
242 	//____________________________________________________________________________________________________
243 	//	XComponent
244 	//____________________________________________________________________________________________________
245 
246     virtual void SAL_CALL dispose()
247 		throw ( ::com::sun::star::uno::RuntimeException );
248 
249     virtual void SAL_CALL addEventListener(
250 			const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener )
251 		throw ( ::com::sun::star::uno::RuntimeException );
252 
253     virtual void SAL_CALL removeEventListener(
254 			const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener )
255 		throw ( ::com::sun::star::uno::RuntimeException );
256 
257 	//____________________________________________________________________________________________________
258 	//	XPropertySet
259 	//____________________________________________________________________________________________________
260 
261     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo()
262 		throw ( ::com::sun::star::uno::RuntimeException );
263 
264     virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue )
265 		throw ( ::com::sun::star::beans::UnknownPropertyException,
266 				::com::sun::star::beans::PropertyVetoException,
267 				::com::sun::star::lang::IllegalArgumentException,
268 				::com::sun::star::lang::WrappedTargetException,
269 				::com::sun::star::uno::RuntimeException );
270 
271     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName )
272 		throw ( ::com::sun::star::beans::UnknownPropertyException,
273 				::com::sun::star::lang::WrappedTargetException,
274 				::com::sun::star::uno::RuntimeException );
275 
276     virtual void SAL_CALL addPropertyChangeListener(
277 			const ::rtl::OUString& aPropertyName,
278 			const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener )
279 		throw ( ::com::sun::star::beans::UnknownPropertyException,
280 				::com::sun::star::lang::WrappedTargetException,
281 				::com::sun::star::uno::RuntimeException );
282 
283     virtual void SAL_CALL removePropertyChangeListener(
284 			const ::rtl::OUString& aPropertyName,
285 			const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener )
286 		throw ( ::com::sun::star::beans::UnknownPropertyException,
287 				::com::sun::star::lang::WrappedTargetException,
288 				::com::sun::star::uno::RuntimeException );
289 
290     virtual void SAL_CALL addVetoableChangeListener(
291 			const ::rtl::OUString& PropertyName,
292 			const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener )
293 		throw ( ::com::sun::star::beans::UnknownPropertyException,
294 				::com::sun::star::lang::WrappedTargetException,
295 				::com::sun::star::uno::RuntimeException );
296 
297     virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener )
298 		throw ( ::com::sun::star::beans::UnknownPropertyException,
299 				::com::sun::star::lang::WrappedTargetException,
300 				::com::sun::star::uno::RuntimeException );
301 
302 	//____________________________________________________________________________________________________
303 	//	XHierarchicalStorageAccess
304 	//____________________________________________________________________________________________________
305 
306     virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XExtendedStorageStream > SAL_CALL openStreamElementByHierarchicalName( const ::rtl::OUString& sStreamPath, ::sal_Int32 nOpenMode )
307 		throw ( ::com::sun::star::embed::InvalidStorageException,
308 				::com::sun::star::lang::IllegalArgumentException,
309 				::com::sun::star::packages::WrongPasswordException,
310 				::com::sun::star::io::IOException,
311 				::com::sun::star::embed::StorageWrappedTargetException,
312 				::com::sun::star::uno::RuntimeException );
313 
314     virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XExtendedStorageStream > SAL_CALL openEncryptedStreamElementByHierarchicalName( const ::rtl::OUString& sStreamName, ::sal_Int32 nOpenMode, const ::rtl::OUString& sPassword )
315 		throw ( ::com::sun::star::embed::InvalidStorageException,
316 				::com::sun::star::lang::IllegalArgumentException,
317 				::com::sun::star::packages::NoEncryptionException,
318 				::com::sun::star::packages::WrongPasswordException,
319 				::com::sun::star::io::IOException,
320 				::com::sun::star::embed::StorageWrappedTargetException,
321 				::com::sun::star::uno::RuntimeException );
322 
323     virtual void SAL_CALL removeStreamElementByHierarchicalName( const ::rtl::OUString& sElementPath )
324 		throw ( ::com::sun::star::embed::InvalidStorageException,
325 				::com::sun::star::lang::IllegalArgumentException,
326 				::com::sun::star::container::NoSuchElementException,
327 				::com::sun::star::io::IOException,
328 				::com::sun::star::embed::StorageWrappedTargetException,
329 				::com::sun::star::uno::RuntimeException );
330 };
331 
332 #endif
333 
334