summaryrefslogtreecommitdiff
path: root/offapi/com/sun/star/embed/Storage.idl
diff options
context:
space:
mode:
Diffstat (limited to 'offapi/com/sun/star/embed/Storage.idl')
-rw-r--r--offapi/com/sun/star/embed/Storage.idl367
1 files changed, 367 insertions, 0 deletions
diff --git a/offapi/com/sun/star/embed/Storage.idl b/offapi/com/sun/star/embed/Storage.idl
new file mode 100644
index 000000000000..d34d736cf5cb
--- /dev/null
+++ b/offapi/com/sun/star/embed/Storage.idl
@@ -0,0 +1,367 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 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
+