Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef INCLUDED_PACKAGE_SOURCE_XSTOR_XSTORAGE_HXX
21 : #define INCLUDED_PACKAGE_SOURCE_XSTOR_XSTORAGE_HXX
22 :
23 : #include <com/sun/star/uno/Sequence.hxx>
24 : #include <com/sun/star/embed/XStorage2.hpp>
25 : #include <com/sun/star/embed/XOptimizedStorage.hpp>
26 : #include <com/sun/star/embed/XHierarchicalStorageAccess2.hpp>
27 : #include <com/sun/star/embed/XStorageRawAccess.hpp>
28 : #include <com/sun/star/embed/XTransactedObject.hpp>
29 : #include <com/sun/star/embed/XTransactionBroadcaster.hpp>
30 : #include <com/sun/star/embed/XClassifiedObject.hpp>
31 : #include <com/sun/star/embed/XEncryptionProtectedStorage.hpp>
32 : #include <com/sun/star/embed/XRelationshipAccess.hpp>
33 : #include <com/sun/star/util/XModifiable.hpp>
34 : #include <com/sun/star/container/XNameAccess.hpp>
35 : #include <com/sun/star/container/XNameContainer.hpp>
36 : #include <com/sun/star/util/XCloseable.hpp>
37 : #include <com/sun/star/beans/XPropertySet.hpp>
38 : #include <com/sun/star/beans/PropertyValue.hpp>
39 : #include <com/sun/star/beans/StringPair.hpp>
40 : #include <com/sun/star/io/XStream.hpp>
41 : #include <com/sun/star/lang/XSingleServiceFactory.hpp>
42 : #include <com/sun/star/lang/XTypeProvider.hpp>
43 : #include <com/sun/star/lang/XComponent.hpp>
44 : #include <com/sun/star/packages/NoEncryptionException.hpp>
45 : #include <com/sun/star/logging/XSimpleLogRing.hpp>
46 :
47 : #include <cppuhelper/weak.hxx>
48 : #include <cppuhelper/interfacecontainer.h>
49 : #include <comphelper/sequenceashashmap.hxx>
50 :
51 : #include "mutexholder.hxx"
52 :
53 : namespace com { namespace sun { namespace star { namespace uno {
54 : class XComponentContext;
55 : } } } }
56 :
57 : #define RELINFO_NO_INIT 1
58 : #define RELINFO_READ 2
59 : #define RELINFO_CHANGED 3
60 : #define RELINFO_CHANGED_STREAM 4
61 : #define RELINFO_CHANGED_STREAM_READ 5
62 : #define RELINFO_BROKEN 6
63 : #define RELINFO_CHANGED_BROKEN 7
64 :
65 : #define STOR_MESS_PRECOMMIT 1
66 : #define STOR_MESS_COMMITED 2
67 : #define STOR_MESS_PREREVERT 3
68 : #define STOR_MESS_REVERTED 4
69 :
70 : // a common implementation for an entry
71 :
72 : struct StorInternalData_Impl;
73 : struct OStorage_Impl;
74 : struct OWriteStream_Impl;
75 :
76 : struct SotElement_Impl
77 : {
78 : OUString m_aName;
79 : OUString m_aOriginalName;
80 : sal_Bool m_bIsRemoved;
81 : sal_Bool m_bIsInserted;
82 : sal_Bool m_bIsStorage;
83 :
84 : OStorage_Impl* m_pStorage;
85 : OWriteStream_Impl* m_pStream;
86 :
87 : public:
88 : SotElement_Impl( const OUString& rName, sal_Bool bStor, sal_Bool bNew );
89 : ~SotElement_Impl();
90 : };
91 :
92 : #include <list>
93 : typedef ::std::list< SotElement_Impl* > SotElementList_Impl;
94 :
95 : // Main storage implementation
96 :
97 : class OStorage;
98 :
99 0 : struct StorageHolder_Impl
100 : {
101 : OStorage* m_pPointer;
102 : ::com::sun::star::uno::WeakReference< ::com::sun::star::embed::XStorage > m_xWeakRef;
103 :
104 0 : StorageHolder_Impl( OStorage* pStorage )
105 : : m_pPointer( pStorage )
106 : , m_xWeakRef( ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >(
107 0 : (::com::sun::star::embed::XStorage*)pStorage ) )
108 : {
109 0 : }
110 :
111 0 : StorageHolder_Impl( const StorageHolder_Impl& aSH )
112 : : m_pPointer( aSH.m_pPointer )
113 0 : , m_xWeakRef( aSH.m_xWeakRef )
114 : {
115 0 : }
116 : };
117 :
118 : typedef ::std::list< StorageHolder_Impl > OStorageList_Impl;
119 :
120 : class SwitchablePersistenceStream;
121 : struct OStorage_Impl
122 : {
123 : SotMutexHolderRef m_rMutexRef;
124 :
125 : OStorage* m_pAntiImpl; // only valid if external references exists
126 : OStorageList_Impl m_aReadOnlyWrapList; // only valid if readonly external reference exists
127 :
128 : sal_Int32 m_nStorageMode; // open mode ( read/write/trunc/nocreate )
129 : sal_Bool m_bIsModified; // only modified elements will be sent to the original content
130 : sal_Bool m_bBroadcastModified; // will be set if notification is required
131 :
132 : sal_Bool m_bCommited; // sending the streams is coordinated by the root storage of the package
133 :
134 : sal_Bool m_bIsRoot; // marks this storage as root storages that manages all commits and reverts
135 : sal_Bool m_bListCreated;
136 :
137 : /// Count of registered modification listeners
138 : oslInterlockedCount m_nModifiedListenerCount;
139 0 : bool HasModifiedListener()
140 : {
141 0 : return m_nModifiedListenerCount > 0 && m_pAntiImpl != NULL;
142 : }
143 :
144 : SotElementList_Impl m_aChildrenList;
145 : SotElementList_Impl m_aDeletedList;
146 :
147 : ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > m_xPackageFolder;
148 : ::com::sun::star::uno::Reference< ::com::sun::star::logging::XSimpleLogRing > m_xLogRing;
149 :
150 : ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > m_xPackage;
151 : ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
152 :
153 : // valid only for root storage
154 : ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > m_xInputStream; // ??? may be stored in properties
155 : ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > m_xStream; // ??? may be stored in properties
156 : ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > m_xProperties;
157 : sal_Bool m_bHasCommonEncryptionData;
158 : ::comphelper::SequenceAsHashMap m_aCommonEncryptionData;
159 :
160 : // must be empty in case of root storage
161 : OStorage_Impl* m_pParent;
162 :
163 : sal_Bool m_bControlMediaType;
164 : OUString m_aMediaType;
165 : sal_Bool m_bMTFallbackUsed;
166 :
167 : sal_Bool m_bControlVersion;
168 : OUString m_aVersion;
169 :
170 : SwitchablePersistenceStream* m_pSwitchStream;
171 :
172 : sal_Int32 m_nStorageType; // the mode in which the storage is used
173 :
174 : // the _rels substorage that is handled in a special way in embed::StorageFormats::OFOPXML
175 : SotElement_Impl* m_pRelStorElement;
176 : ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > m_xRelStorage;
177 : ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > > m_aRelInfo;
178 : ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > m_xNewRelInfoStream;
179 : sal_Int16 m_nRelInfoStatus;
180 :
181 : // Constructors
182 : OStorage_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > xInputStream,
183 : sal_Int32 nMode,
184 : ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > xProperties,
185 : ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
186 : sal_Int32 nStorageType );
187 :
188 : OStorage_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > xStream,
189 : sal_Int32 nMode,
190 : ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > xProperties,
191 : ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
192 : sal_Int32 nStorageType );
193 :
194 : // constructor for a substorage
195 : OStorage_Impl( OStorage_Impl* pParent,
196 : sal_Int32 nMode,
197 : ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > xPackageFolder,
198 : ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > xPackage,
199 : ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
200 : sal_Int32 nStorageType );
201 :
202 : ~OStorage_Impl();
203 :
204 : void AddLog( const OUString& aMessage );
205 :
206 : void SetReadOnlyWrap( OStorage& aStorage );
207 : void RemoveReadOnlyWrap( OStorage& aStorage );
208 :
209 : void OpenOwnPackage();
210 : void ReadContents();
211 : void ReadRelInfoIfNecessary();
212 :
213 : ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > GetComponentContext();
214 : SotElementList_Impl& GetChildrenList();
215 : void GetStorageProperties();
216 :
217 : ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > > GetAllRelationshipsIfAny();
218 : void CopyLastCommitTo( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xNewStor );
219 : void CopyLastCommitTo( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xNewStor,
220 : const OUString& aPass );
221 :
222 : void InsertIntoPackageFolder(
223 : const OUString& aName,
224 : const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& xParentPackageFolder );
225 :
226 : void Commit();
227 : void Revert();
228 :
229 : ::comphelper::SequenceAsHashMap GetCommonRootEncryptionData() throw ( ::com::sun::star::packages::NoEncryptionException );
230 :
231 : void CopyToStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest,
232 : sal_Bool bDirect );
233 : void CopyStorageElement( SotElement_Impl* pElement,
234 : ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > xDest,
235 : const OUString& aName,
236 : sal_Bool bDirect );
237 :
238 : void SetModified( sal_Bool bModified );
239 :
240 : SotElement_Impl* FindElement( const OUString& rName );
241 :
242 : SotElement_Impl* InsertStream( const OUString& aName, sal_Bool bEncr );
243 : SotElement_Impl* InsertRawStream( const OUString& aName, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xInStream );
244 :
245 : OStorage_Impl* CreateNewStorageImpl( sal_Int32 nStorageMode );
246 : SotElement_Impl* InsertStorage( const OUString& aName, sal_Int32 nStorageMode );
247 : SotElement_Impl* InsertElement( const OUString& aName, sal_Bool bIsStorage );
248 :
249 : void OpenSubStorage( SotElement_Impl* pElement, sal_Int32 nStorageMode );
250 : void OpenSubStream( SotElement_Impl* pElement );
251 :
252 : ::com::sun::star::uno::Sequence< OUString > GetElementNames();
253 :
254 : void RemoveElement( SotElement_Impl* pElement );
255 : void ClearElement( SotElement_Impl* pElement );
256 : void DisposeChildren();
257 :
258 : void CloneStreamElement(
259 : const OUString& aStreamName,
260 : sal_Bool bPassProvided,
261 : const ::comphelper::SequenceAsHashMap& aEncryptionData,
262 : ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xTargetStream )
263 : throw ( ::com::sun::star::embed::InvalidStorageException,
264 : ::com::sun::star::lang::IllegalArgumentException,
265 : ::com::sun::star::packages::WrongPasswordException,
266 : ::com::sun::star::io::IOException,
267 : ::com::sun::star::embed::StorageWrappedTargetException,
268 : ::com::sun::star::uno::RuntimeException );
269 :
270 : void RemoveStreamRelInfo( const OUString& aOriginalName );
271 : void CreateRelStorage();
272 : void CommitStreamRelInfo( SotElement_Impl* pStreamElement );
273 : ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > GetRelInfoStreamForName( const OUString& aName );
274 : void CommitRelInfo( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& xNewPackageFolder );
275 :
276 : static void completeStorageStreamCopy_Impl(
277 : const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xSource,
278 : const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xDest,
279 : sal_Int32 nStorageType,
280 : const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > >& aRelInfo );
281 :
282 : };
283 :
284 : class OStorage : public ::com::sun::star::lang::XTypeProvider
285 : , public ::com::sun::star::embed::XStorage2
286 : , public ::com::sun::star::embed::XStorageRawAccess
287 : , public ::com::sun::star::embed::XTransactedObject
288 : , public ::com::sun::star::embed::XTransactionBroadcaster
289 : , public ::com::sun::star::util::XModifiable
290 : , public ::com::sun::star::embed::XEncryptionProtectedStorage
291 : , public ::com::sun::star::beans::XPropertySet
292 : , public ::com::sun::star::embed::XOptimizedStorage
293 : , public ::com::sun::star::embed::XRelationshipAccess
294 : , public ::com::sun::star::embed::XHierarchicalStorageAccess2
295 : , public ::cppu::OWeakObject
296 : {
297 : OStorage_Impl* m_pImpl;
298 : StorInternalData_Impl* m_pData;
299 :
300 : protected:
301 :
302 : void Commit_Impl();
303 :
304 : SotElement_Impl* OpenStreamElement_Impl( const OUString& aStreamName, sal_Int32 nOpenMode, sal_Bool bEncr );
305 :
306 : void BroadcastModifiedIfNecessary();
307 :
308 : void BroadcastTransaction( sal_Int8 nMessage );
309 :
310 : void MakeLinkToSubComponent_Impl(
311 : const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xComponent );
312 :
313 : public:
314 :
315 : OStorage( ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > xInputStream,
316 : sal_Int32 nMode,
317 : ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > xProperties,
318 : ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
319 : sal_Int32 nStorageType );
320 :
321 : OStorage( ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > xStream,
322 : sal_Int32 nMode,
323 : ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > xProperties,
324 : ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
325 : sal_Int32 nStorageType );
326 :
327 : OStorage( OStorage_Impl* pImpl, sal_Bool bReadOnlyWrap );
328 :
329 : virtual ~OStorage();
330 :
331 : void SAL_CALL InternalDispose( sal_Bool bNotifyImpl );
332 :
333 : void ChildIsDisposed( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xChild );
334 :
335 : sal_Int32 GetRefCount_Impl() { return m_refCount; }
336 :
337 : // XInterface
338 :
339 : virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& rType )
340 : throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
341 :
342 : virtual void SAL_CALL acquire() throw() SAL_OVERRIDE;
343 :
344 : virtual void SAL_CALL release() throw() SAL_OVERRIDE;
345 :
346 : // XTypeProvider
347 :
348 : virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
349 : throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
350 :
351 : virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
352 : throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
353 :
354 : // XStorage
355 :
356 : virtual void SAL_CALL copyToStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest )
357 : throw ( ::com::sun::star::embed::InvalidStorageException,
358 : ::com::sun::star::lang::IllegalArgumentException,
359 : ::com::sun::star::io::IOException,
360 : ::com::sun::star::embed::StorageWrappedTargetException,
361 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
362 :
363 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL openStreamElement(
364 : const OUString& aStreamName, sal_Int32 nOpenMode )
365 : throw ( ::com::sun::star::embed::InvalidStorageException,
366 : ::com::sun::star::lang::IllegalArgumentException,
367 : ::com::sun::star::packages::WrongPasswordException,
368 : ::com::sun::star::io::IOException,
369 : ::com::sun::star::embed::StorageWrappedTargetException,
370 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
371 :
372 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL openEncryptedStreamElement(
373 : const OUString& aStreamName, sal_Int32 nOpenMode, const OUString& aPass )
374 : throw ( ::com::sun::star::embed::InvalidStorageException,
375 : ::com::sun::star::lang::IllegalArgumentException,
376 : ::com::sun::star::packages::NoEncryptionException,
377 : ::com::sun::star::packages::WrongPasswordException,
378 : ::com::sun::star::io::IOException,
379 : ::com::sun::star::embed::StorageWrappedTargetException,
380 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
381 :
382 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > SAL_CALL openStorageElement(
383 : const OUString& aStorName, sal_Int32 nStorageMode )
384 : throw ( ::com::sun::star::embed::InvalidStorageException,
385 : ::com::sun::star::lang::IllegalArgumentException,
386 : ::com::sun::star::io::IOException,
387 : ::com::sun::star::embed::StorageWrappedTargetException,
388 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
389 :
390 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL cloneStreamElement(
391 : const OUString& aStreamName )
392 : throw ( ::com::sun::star::embed::InvalidStorageException,
393 : ::com::sun::star::lang::IllegalArgumentException,
394 : ::com::sun::star::packages::WrongPasswordException,
395 : ::com::sun::star::io::IOException,
396 : ::com::sun::star::embed::StorageWrappedTargetException,
397 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
398 :
399 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL cloneEncryptedStreamElement(
400 : const OUString& aStreamName, const OUString& aPass )
401 : throw ( ::com::sun::star::embed::InvalidStorageException,
402 : ::com::sun::star::lang::IllegalArgumentException,
403 : ::com::sun::star::packages::NoEncryptionException,
404 : ::com::sun::star::packages::WrongPasswordException,
405 : ::com::sun::star::io::IOException,
406 : ::com::sun::star::embed::StorageWrappedTargetException,
407 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
408 :
409 : virtual void SAL_CALL copyLastCommitTo(
410 : const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xTargetStorage )
411 : throw ( ::com::sun::star::embed::InvalidStorageException,
412 : ::com::sun::star::lang::IllegalArgumentException,
413 : ::com::sun::star::io::IOException,
414 : ::com::sun::star::embed::StorageWrappedTargetException,
415 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
416 :
417 : virtual void SAL_CALL copyStorageElementLastCommitTo(
418 : const OUString& aStorName,
419 : const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xTargetStorage )
420 : throw ( ::com::sun::star::embed::InvalidStorageException,
421 : ::com::sun::star::lang::IllegalArgumentException,
422 : ::com::sun::star::io::IOException,
423 : ::com::sun::star::embed::StorageWrappedTargetException,
424 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
425 :
426 : virtual sal_Bool SAL_CALL isStreamElement( const OUString& aElementName )
427 : throw ( ::com::sun::star::container::NoSuchElementException,
428 : ::com::sun::star::lang::IllegalArgumentException,
429 : ::com::sun::star::embed::InvalidStorageException,
430 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
431 :
432 : virtual sal_Bool SAL_CALL isStorageElement( const OUString& aElementName )
433 : throw ( ::com::sun::star::container::NoSuchElementException,
434 : ::com::sun::star::lang::IllegalArgumentException,
435 : ::com::sun::star::embed::InvalidStorageException,
436 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
437 :
438 : virtual void SAL_CALL removeElement( const OUString& aElementName )
439 : throw ( ::com::sun::star::embed::InvalidStorageException,
440 : ::com::sun::star::lang::IllegalArgumentException,
441 : ::com::sun::star::container::NoSuchElementException,
442 : ::com::sun::star::io::IOException,
443 : ::com::sun::star::embed::StorageWrappedTargetException,
444 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
445 :
446 : virtual void SAL_CALL renameElement( const OUString& rEleName, const OUString& rNewName )
447 : throw ( ::com::sun::star::embed::InvalidStorageException,
448 : ::com::sun::star::lang::IllegalArgumentException,
449 : ::com::sun::star::container::NoSuchElementException,
450 : ::com::sun::star::container::ElementExistException,
451 : ::com::sun::star::io::IOException,
452 : ::com::sun::star::embed::StorageWrappedTargetException,
453 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
454 :
455 : virtual void SAL_CALL copyElementTo( const OUString& aElementName,
456 : const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest,
457 : const OUString& aNewName )
458 : throw ( ::com::sun::star::embed::InvalidStorageException,
459 : ::com::sun::star::lang::IllegalArgumentException,
460 : ::com::sun::star::container::NoSuchElementException,
461 : ::com::sun::star::container::ElementExistException,
462 : ::com::sun::star::io::IOException,
463 : ::com::sun::star::embed::StorageWrappedTargetException,
464 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
465 :
466 : virtual void SAL_CALL moveElementTo( const OUString& aElementName,
467 : const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDest,
468 : const OUString& rNewName )
469 : throw ( ::com::sun::star::embed::InvalidStorageException,
470 : ::com::sun::star::lang::IllegalArgumentException,
471 : ::com::sun::star::container::NoSuchElementException,
472 : ::com::sun::star::container::ElementExistException,
473 : ::com::sun::star::io::IOException,
474 : ::com::sun::star::embed::StorageWrappedTargetException,
475 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
476 :
477 : // XStorage2
478 :
479 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL openEncryptedStream( const OUString& sStreamName, ::sal_Int32 nOpenMode, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& aEncryptionData )
480 : throw ( ::com::sun::star::embed::InvalidStorageException,
481 : ::com::sun::star::lang::IllegalArgumentException,
482 : ::com::sun::star::packages::NoEncryptionException,
483 : ::com::sun::star::packages::WrongPasswordException,
484 : ::com::sun::star::io::IOException,
485 : ::com::sun::star::embed::StorageWrappedTargetException,
486 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
487 :
488 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > SAL_CALL cloneEncryptedStream( const OUString& sStreamName, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& aEncryptionData )
489 : throw ( ::com::sun::star::embed::InvalidStorageException,
490 : ::com::sun::star::lang::IllegalArgumentException,
491 : ::com::sun::star::packages::NoEncryptionException,
492 : ::com::sun::star::packages::WrongPasswordException,
493 : ::com::sun::star::io::IOException,
494 : ::com::sun::star::embed::StorageWrappedTargetException,
495 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
496 :
497 : // XStorageRawAccess
498 :
499 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getPlainRawStreamElement(
500 : const OUString& sStreamName )
501 : throw ( ::com::sun::star::embed::InvalidStorageException,
502 : ::com::sun::star::lang::IllegalArgumentException,
503 : ::com::sun::star::container::NoSuchElementException,
504 : ::com::sun::star::io::IOException,
505 : ::com::sun::star::embed::StorageWrappedTargetException,
506 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
507 :
508 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getRawEncrStreamElement(
509 : const OUString& sStreamName )
510 : throw ( ::com::sun::star::embed::InvalidStorageException,
511 : ::com::sun::star::lang::IllegalArgumentException,
512 : ::com::sun::star::packages::NoEncryptionException,
513 : ::com::sun::star::container::NoSuchElementException,
514 : ::com::sun::star::io::IOException,
515 : ::com::sun::star::embed::StorageWrappedTargetException,
516 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
517 :
518 : virtual void SAL_CALL insertRawEncrStreamElement( const OUString& aStreamName,
519 : const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xInStream )
520 : throw ( ::com::sun::star::embed::InvalidStorageException,
521 : ::com::sun::star::lang::IllegalArgumentException,
522 : ::com::sun::star::packages::NoRawFormatException,
523 : ::com::sun::star::container::ElementExistException,
524 : ::com::sun::star::io::IOException,
525 : ::com::sun::star::embed::StorageWrappedTargetException,
526 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
527 :
528 : // XTransactedObject
529 : virtual void SAL_CALL commit()
530 : throw ( ::com::sun::star::io::IOException,
531 : ::com::sun::star::embed::StorageWrappedTargetException,
532 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
533 :
534 : virtual void SAL_CALL revert()
535 : throw ( ::com::sun::star::io::IOException,
536 : ::com::sun::star::embed::StorageWrappedTargetException,
537 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
538 :
539 : // XTransactionBroadcaster
540 : virtual void SAL_CALL addTransactionListener(
541 : const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XTransactionListener >& aListener )
542 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
543 :
544 : virtual void SAL_CALL removeTransactionListener(
545 : const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XTransactionListener >& aListener )
546 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
547 :
548 : // XModifiable
549 :
550 : virtual sal_Bool SAL_CALL isModified()
551 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
552 :
553 : virtual void SAL_CALL setModified( sal_Bool bModified )
554 : throw ( ::com::sun::star::beans::PropertyVetoException,
555 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
556 :
557 : virtual void SAL_CALL addModifyListener(
558 : const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener )
559 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
560 :
561 : virtual void SAL_CALL removeModifyListener(
562 : const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener )
563 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
564 :
565 : // XNameAccess
566 :
567 : virtual ::com::sun::star::uno::Any SAL_CALL getByName( const OUString& aName )
568 : throw ( ::com::sun::star::container::NoSuchElementException,
569 : ::com::sun::star::lang::WrappedTargetException,
570 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
571 :
572 : virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getElementNames()
573 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
574 :
575 : virtual sal_Bool SAL_CALL hasByName( const OUString& aName )
576 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
577 :
578 : virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
579 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
580 :
581 : virtual sal_Bool SAL_CALL hasElements()
582 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
583 :
584 : // XComponent
585 :
586 : virtual void SAL_CALL dispose()
587 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
588 :
589 : virtual void SAL_CALL addEventListener(
590 : const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener )
591 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
592 :
593 : virtual void SAL_CALL removeEventListener(
594 : const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener )
595 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
596 :
597 : // XEncryptionProtectedSource
598 :
599 : virtual void SAL_CALL setEncryptionPassword( const OUString& aPass )
600 : throw ( ::com::sun::star::uno::RuntimeException,
601 : ::com::sun::star::io::IOException, std::exception ) SAL_OVERRIDE;
602 :
603 : virtual void SAL_CALL removeEncryption()
604 : throw ( ::com::sun::star::uno::RuntimeException,
605 : ::com::sun::star::io::IOException, std::exception ) SAL_OVERRIDE;
606 :
607 : // XEncryptionProtectedSource2
608 :
609 : virtual void SAL_CALL setEncryptionData(
610 : const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& aEncryptionData )
611 : throw ( ::com::sun::star::io::IOException,
612 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
613 :
614 : virtual sal_Bool SAL_CALL hasEncryptionData()
615 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
616 :
617 : // XEncryptionProtectedStorage
618 :
619 : virtual void SAL_CALL setEncryptionAlgorithms( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& aAlgorithms ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
620 :
621 : virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > SAL_CALL getEncryptionAlgorithms() throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
622 :
623 : // XPropertySet
624 :
625 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo()
626 : throw ( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
627 :
628 : virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue )
629 : throw ( ::com::sun::star::beans::UnknownPropertyException,
630 : ::com::sun::star::beans::PropertyVetoException,
631 : ::com::sun::star::lang::IllegalArgumentException,
632 : ::com::sun::star::lang::WrappedTargetException,
633 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
634 :
635 : virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName )
636 : throw ( ::com::sun::star::beans::UnknownPropertyException,
637 : ::com::sun::star::lang::WrappedTargetException,
638 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
639 :
640 : virtual void SAL_CALL addPropertyChangeListener(
641 : const OUString& aPropertyName,
642 : const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener )
643 : throw ( ::com::sun::star::beans::UnknownPropertyException,
644 : ::com::sun::star::lang::WrappedTargetException,
645 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
646 :
647 : virtual void SAL_CALL removePropertyChangeListener(
648 : const OUString& aPropertyName,
649 : const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener )
650 : throw ( ::com::sun::star::beans::UnknownPropertyException,
651 : ::com::sun::star::lang::WrappedTargetException,
652 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
653 :
654 : virtual void SAL_CALL addVetoableChangeListener(
655 : const OUString& PropertyName,
656 : const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener )
657 : throw ( ::com::sun::star::beans::UnknownPropertyException,
658 : ::com::sun::star::lang::WrappedTargetException,
659 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
660 :
661 : virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener )
662 : throw ( ::com::sun::star::beans::UnknownPropertyException,
663 : ::com::sun::star::lang::WrappedTargetException,
664 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
665 :
666 : // XOptimizedStorage
667 : virtual void SAL_CALL insertRawNonEncrStreamElementDirect( const OUString& sStreamName, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xInStream )
668 : throw ( ::com::sun::star::embed::InvalidStorageException,
669 : ::com::sun::star::lang::IllegalArgumentException,
670 : ::com::sun::star::packages::NoRawFormatException,
671 : ::com::sun::star::container::ElementExistException,
672 : ::com::sun::star::io::IOException,
673 : ::com::sun::star::embed::StorageWrappedTargetException,
674 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
675 :
676 : virtual void SAL_CALL insertStreamElementDirect( const OUString& sStreamName, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xInStream, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aProps )
677 : throw ( ::com::sun::star::embed::InvalidStorageException,
678 : ::com::sun::star::lang::IllegalArgumentException,
679 : ::com::sun::star::container::ElementExistException,
680 : ::com::sun::star::io::IOException,
681 : ::com::sun::star::embed::StorageWrappedTargetException,
682 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
683 :
684 : virtual void SAL_CALL copyElementDirectlyTo( const OUString& sSourceName, const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XOptimizedStorage >& xTargetStorage, const OUString& sTargetName )
685 : throw ( ::com::sun::star::embed::InvalidStorageException,
686 : ::com::sun::star::lang::IllegalArgumentException,
687 : ::com::sun::star::container::NoSuchElementException,
688 : ::com::sun::star::container::ElementExistException,
689 : ::com::sun::star::io::IOException,
690 : ::com::sun::star::embed::StorageWrappedTargetException,
691 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
692 :
693 : virtual void SAL_CALL writeAndAttachToStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xStream )
694 : throw ( ::com::sun::star::embed::InvalidStorageException,
695 : ::com::sun::star::lang::IllegalArgumentException,
696 : ::com::sun::star::io::IOException,
697 : ::com::sun::star::embed::StorageWrappedTargetException,
698 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
699 :
700 : virtual void SAL_CALL attachToURL( const OUString& sURL, sal_Bool bReadOnly )
701 : throw ( ::com::sun::star::embed::InvalidStorageException,
702 : ::com::sun::star::lang::IllegalArgumentException,
703 : ::com::sun::star::io::IOException,
704 : ::com::sun::star::embed::StorageWrappedTargetException,
705 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
706 :
707 : virtual ::com::sun::star::uno::Any SAL_CALL getElementPropertyValue( const OUString& sElementName, const OUString& sPropertyName )
708 : throw ( ::com::sun::star::embed::InvalidStorageException,
709 : ::com::sun::star::lang::IllegalArgumentException,
710 : ::com::sun::star::container::NoSuchElementException,
711 : ::com::sun::star::io::IOException,
712 : ::com::sun::star::beans::UnknownPropertyException,
713 : ::com::sun::star::beans::PropertyVetoException,
714 : ::com::sun::star::embed::StorageWrappedTargetException,
715 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
716 :
717 : virtual void SAL_CALL copyStreamElementData( const OUString& sStreamName, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xTargetStream )
718 : throw ( ::com::sun::star::embed::InvalidStorageException,
719 : ::com::sun::star::lang::IllegalArgumentException,
720 : ::com::sun::star::packages::WrongPasswordException,
721 : ::com::sun::star::io::IOException,
722 : ::com::sun::star::embed::StorageWrappedTargetException,
723 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
724 :
725 : // XRelationshipAccess
726 : virtual sal_Bool SAL_CALL hasByID( const OUString& sID )
727 : throw ( ::com::sun::star::io::IOException,
728 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
729 :
730 : virtual OUString SAL_CALL getTargetByID( const OUString& sID )
731 : throw ( ::com::sun::star::container::NoSuchElementException,
732 : ::com::sun::star::io::IOException,
733 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
734 :
735 : virtual OUString SAL_CALL getTypeByID( const OUString& sID )
736 : throw ( ::com::sun::star::container::NoSuchElementException,
737 : ::com::sun::star::io::IOException,
738 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
739 :
740 : virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > SAL_CALL getRelationshipByID( const OUString& sID )
741 : throw ( ::com::sun::star::container::NoSuchElementException,
742 : ::com::sun::star::io::IOException,
743 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
744 :
745 : virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > > SAL_CALL getRelationshipsByType( const OUString& sType )
746 : throw ( ::com::sun::star::io::IOException,
747 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
748 :
749 : virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > > SAL_CALL getAllRelationships( )
750 : throw ( ::com::sun::star::io::IOException,
751 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
752 :
753 : virtual void SAL_CALL insertRelationshipByID( const OUString& sID, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair >& aEntry, sal_Bool bReplace )
754 : throw ( ::com::sun::star::container::ElementExistException,
755 : ::com::sun::star::io::IOException,
756 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
757 :
758 : virtual void SAL_CALL removeRelationshipByID( const OUString& sID )
759 : throw ( ::com::sun::star::container::NoSuchElementException,
760 : ::com::sun::star::io::IOException,
761 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
762 :
763 : virtual void SAL_CALL insertRelationships( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > >& aEntries, sal_Bool bReplace )
764 : throw ( ::com::sun::star::container::ElementExistException,
765 : ::com::sun::star::io::IOException,
766 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
767 :
768 : virtual void SAL_CALL clearRelationships( )
769 : throw ( ::com::sun::star::io::IOException,
770 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
771 :
772 : // XHierarchicalStorageAccess
773 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XExtendedStorageStream > SAL_CALL openStreamElementByHierarchicalName( const OUString& sStreamPath, ::sal_Int32 nOpenMode )
774 : throw ( ::com::sun::star::embed::InvalidStorageException,
775 : ::com::sun::star::lang::IllegalArgumentException,
776 : ::com::sun::star::packages::WrongPasswordException,
777 : ::com::sun::star::io::IOException,
778 : ::com::sun::star::embed::StorageWrappedTargetException,
779 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
780 :
781 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XExtendedStorageStream > SAL_CALL openEncryptedStreamElementByHierarchicalName( const OUString& sStreamName, ::sal_Int32 nOpenMode, const OUString& sPassword )
782 : throw ( ::com::sun::star::embed::InvalidStorageException,
783 : ::com::sun::star::lang::IllegalArgumentException,
784 : ::com::sun::star::packages::NoEncryptionException,
785 : ::com::sun::star::packages::WrongPasswordException,
786 : ::com::sun::star::io::IOException,
787 : ::com::sun::star::embed::StorageWrappedTargetException,
788 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
789 :
790 : virtual void SAL_CALL removeStreamElementByHierarchicalName( const OUString& sElementPath )
791 : throw ( ::com::sun::star::embed::InvalidStorageException,
792 : ::com::sun::star::lang::IllegalArgumentException,
793 : ::com::sun::star::container::NoSuchElementException,
794 : ::com::sun::star::io::IOException,
795 : ::com::sun::star::embed::StorageWrappedTargetException,
796 : ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
797 :
798 : // XHierarchicalStorageAccess2
799 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XExtendedStorageStream > SAL_CALL openEncryptedStreamByHierarchicalName( const OUString& sStreamName, ::sal_Int32 nOpenMode, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& aEncryptionData )
800 : throw ( ::com::sun::star::embed::InvalidStorageException,
801 : ::com::sun::star::lang::IllegalArgumentException,
802 : ::com::sun::star::packages::NoEncryptionException,
803 : ::com::sun::star::packages::WrongPasswordException,
804 : ::com::sun::star::io::IOException,
805 : ::com::sun::star::embed::StorageWrappedTargetException,
806 : ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
807 : };
808 :
809 : #endif
810 :
811 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|