summaryrefslogtreecommitdiffstats
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.idl322
1 files changed, 322 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 000000000..0382670f9
--- /dev/null
+++ b/offapi/com/sun/star/embed/Storage.idl
@@ -0,0 +1,322 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+#ifndef __com_sun_star_embed_Storage_idl__
+#define __com_sun_star_embed_Storage_idl__
+
+#include <com/sun/star/embed/BaseStorage.idl>
+#include <com/sun/star/embed/XEncryptionProtectedSource.idl>
+#include <com/sun/star/embed/XTransactedObject.idl>
+#include <com/sun/star/embed/XTransactionBroadcaster.idl>
+#include <com/sun/star/util/XModifiable.idl>
+#include <com/sun/star/container/XNameAccess.idl>
+#include <com/sun/star/lang/XComponent.idl>
+#include <com/sun/star/beans/XPropertySet.idl>
+
+
+
+ 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 StorageFactory
+ service. Substorages are created through XStorage 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 com::sun::star::lang::XComponent
+ </dt>
+ <dd>
+ <p>
+ A root storage is created by StorageFactory
+ 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 XStorage
+ 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 non-committed changes will be lost.
+ </p>
+ </dd>
+ <dt>interface XStorage</dt>
+ <dd>
+ <dl>
+ <dt>XStorage::openStreamElement()</dt>
+ <dd>
+ <p>
+ This method returns StorageStream
+ service implementation.
+ </p>
+
+ <p>
+ If the child stream is an encrypted one a correct
+ common storage password should be set through
+ XEncryptionProtectedSource 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>XStorage::openEncryptedStreamElement()</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
+ XEncryptionProtectedSource interface. In
+ case a new password is not specified an old one will
+ be used for storing.
+ </dd>
+
+ <dt>XStorage::openStorageElement()</dt>
+ <dd>
+ This method returns Storage service
+ implementation.
+ </dd>
+
+ <dt>XStorage::cloneStreamElement()</dt>
+ <dd>
+ <p>
+ This method returns StorageStream service
+ implementation.
+ </p>
+
+ <p>
+ The latest flashed version of the stream will be used.
+ The stream can be flashed explicitly by
+ com::sun::star::io::XOutputStream::flush()
+ 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 committed 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 correct
+ common storage password should be set through
+ XEncryptionProtectedSource 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>XStorage::cloneEncryptedStreamElement()</dt>
+ <dd>
+ <p>
+ This method returns StorageStream service
+ implementation.
+ </p>
+
+ <p>
+ The latest flashed version of the stream will be used.
+ The stream can be flashed explicitly by
+ com::sun::star::io::XOutputStream::flush()
+ 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 committed 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>XStorage::copyLastCommitTo()</dt>
+ <dd>
+ This method gets Storage service
+ implementation and fills it in with the latest
+ committed version of this storage. So in case the
+ storage was not committed after it was changed, the
+ changes will not appear in the new created storage.
+ </dd>
+
+ <dt>XStorage::copyStorageElementLastCommitTo()</dt>
+ <dd>
+ <p>
+ This method gets Storage service
+ implementation and fills it in with the contents of
+ the requested substorage. The latest committed version
+ of child storage will be used. So in case the child
+ storage was not committed 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>XStorage::removeStorageElement()</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 committed all changes made to it will be integrated to
+ its parent storage. This is recursive process, so the last committed
+ 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 committed, no changes for it or its 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 decide 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
+ XEncryptionProtectedSource interface.
+ </p>
+ */
+ [property, optional, readonly] boolean HasEncryptedEntries;
+
+ /** allows to detect if the storage contains non-encrypted entries.
+
+ <p>
+ In case it is set to `TRUE` the storage itself and/or a tree of
+ substorages contains non-encrypted streams. Usually in case this
+ property is supported the implementation supports
+ XEncryptionProtectedSource interface.
+ </p>
+ */
+ [property, optional, readonly] boolean HasNonEncryptedEntries;
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */