| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef __com_sun_star_embed_Storage_idl__ |
| #define __com_sun_star_embed_Storage_idl__ |
| |
| #ifndef __com_sun_star_embed_BaseStorage_idl__ |
| #include <com/sun/star/embed/BaseStorage.idl> |
| #endif |
| |
| #ifndef __com_sun_star_embed_XEncryptionProtectedSource_idl__ |
| #include <com/sun/star/embed/XEncryptionProtectedSource.idl> |
| #endif |
| |
| #ifndef __com_sun_star_embed_XTransactedObject_idl__ |
| #include <com/sun/star/embed/XTransactedObject.idl> |
| #endif |
| |
| #ifndef __com_sun_star_embed_XTransactionBroadcaster_idl__ |
| #include <com/sun/star/embed/XTransactionBroadcaster.idl> |
| #endif |
| |
| #ifndef __com_sun_star_util_XModifiable_idl__ |
| #include <com/sun/star/util/XModifiable.idl> |
| #endif |
| |
| #ifndef __com_sun_star_container_XNameAccess_idl__ |
| #include <com/sun/star/container/XNameAccess.idl> |
| #endif |
| |
| #ifndef __com_sun_star_lang_XComponent_idl__ |
| #include <com/sun/star/lang/XComponent.idl> |
| #endif |
| |
| #ifndef __com_sun_star_beans_XPropertySet_idl__ |
| #include <com/sun/star/beans/XPropertySet.idl> |
| #endif |
| |
| |
| //============================================================================ |
| |
| module com { module sun { module star { module embed { |
| |
| //============================================================================ |
| /** This is a service that allows to get access to a package using storage |
| hierarchy. |
| |
| <p> |
| A root storage should be retrieved by using <type>StorageFactory</type> |
| service. Substorages are created through <type>XStorage</type> interface |
| of a parent storage. |
| </p> |
| */ |
| published service Storage |
| { |
| // ----------------------------------------------------------------------- |
| /** This service describes the base functionality of storages. |
| |
| <p> |
| Please see below the description of additional requirements for the |
| package storage implementation. |
| </p> |
| |
| <dl> |
| <dt>interface <type scope="com::sun::star::lang">XComponent</type> |
| </dt> |
| <dd> |
| <p> |
| A root storage is created by <type>StorageFactory</type> |
| and is controlled by refcounting. In case refcounting |
| is decreased to zero the storage will be disposed |
| automatically. It is still strongly recommended that |
| a root storage is disposed explicitly since in garbage |
| collector based languages the refcounting can be |
| decreased too late and resources locked by the storage |
| will not be freed until then. |
| </p> |
| |
| <p> |
| A substorage is created by <type>XStorage</type> |
| interface of storage. Each time a substorage is opened |
| it is locked ( in case it is opened in readonly mode |
| it is locked for writing, in case it is opened in |
| read-write mode it is locked for reading and writing ) |
| until it is disposed. The lifetime of substorage is |
| also controlled by refcounting but because of mentioned |
| garbage collection specific it is strongly recommended |
| to dispose substorages explicitly. |
| </p> |
| |
| <p> |
| In case a storage object is disposed all the elements |
| ( substorages and substreams ) retrieved from the |
| object are disposed. If the storage was opened in |
| read-write mode all noncommited changes will be lost. |
| </p> |
| </dd> |
| <dt>interface <type>XStorage</type></dt> |
| <dd> |
| <dl> |
| <dt><method>XStorage::openStreamElement</method></dt> |
| <dd> |
| <p> |
| This method returns <type>StorageStream</type> |
| service implementation. |
| </p> |
| |
| <p> |
| If the child stream is an encrypted one a corect |
| common storage password should be set through |
| <type>XEncryptionProtectedSource</type> interface to |
| this storage or to a one of storages in parent |
| hierarchy. In case the password is not set or is a |
| wrong one an exception will be thrown. |
| </p> |
| </dd> |
| |
| <dt><method>XStorage::openEncryptedStreamElement</method></dt> |
| <dd> |
| This method allows to specify reading password for the |
| stream explicitly. The password will be used to read |
| the stream. It is possible to specify a new password |
| for stream storing through |
| <type>XEncryptionProtectedSource</type> interface. In |
| case a new password is not specified an old one will |
| be used for storing. |
| </dd> |
| |
| <dt><method>XStorage::openStorageElement</method></dt> |
| <dd> |
| This method returns <type>Storage</type> service |
| implementation. |
| </dd> |
| |
| <dt><method>XStorage::cloneStreamElement</method></dt> |
| <dd> |
| <p> |
| This method returns <type>StorageStream</type> service |
| implementation. |
| </p> |
| |
| <p> |
| The latest flashed version of the stream will be used. |
| The stream can be flashed explicitly by |
| <method scope="com::sun::star::io">XOutputStream::flush</method> |
| call. |
| </p> |
| |
| <p> |
| A storage flashes on commit all the child streams it |
| owns. So in case after the stream is changed neither |
| the storage was commited nor the stream was flushed |
| explicitly, the changes will not appear in the new |
| created stream. This method allows to retrieve copy of |
| a child stream even in case it is already opened for |
| writing. |
| </p> |
| |
| <p> |
| If the child stream is an encrypted one a corect |
| common storage password should be set through |
| <type>XEncryptionProtectedSource</type> interface to |
| this storage or to a one of storages in parent |
| hierarchy. In case the password is not set or is a |
| wrong one an exception will be thrown. |
| </p> |
| </dd> |
| |
| <dt><method>XStorage::cloneEncryptedStreamElement</method></dt> |
| <dd> |
| <p> |
| This method returns <type>StorageStream</type> service |
| implementation. |
| </p> |
| |
| <p> |
| The latest flashed version of the stream will be used. |
| The stream can be flashed explicitly by |
| <method scope="com::sun::star::io">XOutputStream::flush</method> |
| call. |
| </p> |
| |
| <p> |
| A storage flashes on commit all the child streams it |
| owns. So in case after the stream is changed neither |
| the storage was commited nor the stream was flushed |
| explicitly, the changes will not appear in the new |
| created stream. This method allows to retrieve copy of |
| a child stream even in case it is already opened for |
| writing. |
| </p> |
| </dd> |
| |
| <dt><method>XStorage::copyLastCommitTo</method></dt> |
| <dd> |
| This method gets <type>Storage</type> service |
| implementation and fills it in with the latest |
| commited version of this storage. So in case the |
| storage was not commited after it was changed, the |
| changes will not appear in the new created storage. |
| </dd> |
| |
| <dt><method>XStorage::copyStorageElementLastCommitTo</method></dt> |
| <dd> |
| <p> |
| This method gets <type>Storage</type> service |
| implementation and fills it in with the contents of |
| the requested substorage. The latest commited version |
| of child storage will be used. So in case the child |
| storage was not commited after it was changed, the |
| changes will not appear in the new created storage. |
| </p> |
| |
| <p> |
| This method allows to retrieve copy of a child storage |
| even in case it is already opened for writing. |
| </p> |
| </dd> |
| |
| <dt><method>XStorage::removeStorageElement</method></dt> |
| <dd> |
| If the element is opened the removing will fail. |
| </dd> |
| </dl> |
| </dd> |
| <dt>property URL</dt> |
| <dd> |
| If the storage is created based on url this property allows |
| to retrieve it. |
| </dd> |
| </dl> |
| |
| */ |
| service BaseStorage; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to commit or revert changes that were done for the storage. |
| |
| <p> |
| If a storage is commited all changes made to it will be integrated to |
| it's parent storage. This is recursive process, so the last commited |
| storage should be the root one. For the package based storages commit |
| of a root storage also means flashing to the related medium. If |
| a storage is not commited, no changes for it or it's child elements |
| will be stored. |
| </p> |
| */ |
| interface ::com::sun::star::embed::XTransactedObject; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to track storage's transaction state. |
| */ |
| interface ::com::sun::star::embed::XTransactionBroadcaster; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to set password to a root storage. |
| |
| <p> |
| This interface can be supported by a storage to allow to set |
| a common storage password. This password is used as default password |
| to decrypt all encrypted streams and to encrypt streams that are |
| marked to use common storage password on storing. |
| Specifying of the password for a storage allows to use it for the |
| whole subtree. Of course substorage can allow to overwrite the common |
| storage password for own subtree. |
| </p> |
| */ |
| [optional] |
| interface ::com::sun::star::embed::XEncryptionProtectedSource; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to get and set the media type of the storage. |
| */ |
| [property] string MediaType; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to get and set the version of the format related to the |
| MediaType. |
| */ |
| [property,optional] string Version; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to detect whether mediatype is detected by using fallback |
| approach. |
| |
| <p> |
| Can be set to true if the mediatype can not be detected in standard |
| way, but there is a fallback solution allows to do it. |
| </p> |
| |
| <p> |
| Usually means that the document validity is questionable, although |
| the package itself is not corrupted. The decision about document |
| validity in this case is in application hands. It is up to user of |
| the storage to deside whether he accepts the fallback approach for |
| an implementation of this service, outputs a warning or an error. |
| </p> |
| */ |
| [property, readonly] boolean MediaTypeFallbackIsUsed; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to detect whether the storage is a root one. |
| */ |
| [property, readonly] boolean IsRoot; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to detect whether storage is open in "repair package" mode or |
| not. |
| */ |
| [property, optional, readonly] boolean RepairPackage; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to detect if the storage contains encrypted entries. |
| |
| <p> |
| In case it is set to <TRUE/> the storage itself and/or a tree of |
| substorages contain encrypted streams. Usually in case this property |
| is supported the implementation supports |
| <type>XEncryptionProtectedSource</type> interface. |
| </p> |
| */ |
| [property, optional, readonly] boolean HasEncryptedEntries; |
| |
| // ----------------------------------------------------------------------- |
| /** allows to detect if the storage contains nonencrypted entries. |
| |
| <p> |
| In case it is set to <TRUE/> the storage itself and/or a tree of |
| substorages contains nonencrypted streams. Usually in case this |
| property is supported the implementation supports |
| <type>XEncryptionProtectedSource</type> interface. |
| </p> |
| */ |
| [property, optional, readonly] boolean HasNonEncryptedEntries; |
| }; |
| |
| //============================================================================ |
| |
| }; }; }; }; |
| |
| #endif |
| |