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