diff options
Diffstat (limited to 'offapi/com/sun/star/ucb/XDynamicResultSet.idl')
-rw-r--r-- | offapi/com/sun/star/ucb/XDynamicResultSet.idl | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/offapi/com/sun/star/ucb/XDynamicResultSet.idl b/offapi/com/sun/star/ucb/XDynamicResultSet.idl new file mode 100644 index 000000000..f84b81235 --- /dev/null +++ b/offapi/com/sun/star/ucb/XDynamicResultSet.idl @@ -0,0 +1,177 @@ +/* -*- 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_ucb_XDynamicResultSet_idl__ +#define __com_sun_star_ucb_XDynamicResultSet_idl__ + +#include <com/sun/star/lang/XComponent.idl> +#include <com/sun/star/ucb/XDynamicResultSetListener.idl> +#include <com/sun/star/ucb/ListenerAlreadySetException.idl> +#include <com/sun/star/sdbc/XResultSet.idl> +#include <com/sun/star/ucb/AlreadyInitializedException.idl> +#include <com/sun/star/ucb/ServiceNotFoundException.idl> + + +module com { module sun { module star { module ucb { + +/** Provides read access to a ContentResultSet. + + <p> + You can either get a simple static ContentResultSet or you can + listen to change-notifications and then swap from the old to a new + ContentResultSet. + </p> + + <p>The following describes the dynamic use:</p> + + <p> + XDynamicResultSet provides the possibility to get notifications + about changes on a ContentResultSet and have an + listener-controlled update from one version to the next version. Two + ContentResultSet implementations were given to the listener in + the first notification as interface + com::sun::star::sdbc::XResultSet. + </p> + + <p> + To get notifications the listener has to be of type + XDynamicResultSetListener. + </p> + + <p> + After registration you will get notifications for events of type + ListEvent. + </p> + + <p> + The calling of XDynamicResultSetListener::notify() has + to happen in an own thread, because it could take a longer time and any + actions ??? until the listener returns the call. So don't block the notify-causing + action. + </p> + + <p> + While one notify-call is going on: + </p> + + <ol> + <li> The listener is allowed to access both ContentResultSets, + they must be both valid.</li> + <li> It is not allowed to start a second notify-call.</li> + <li> All additional things we want to send as notification are to be + queued.</li> + <li> Any other calls are to be accepted and treated.</li> + </ol> + + <p> + After the listener has returned the notify-call: + </p> + + <ol> + <li> The listener is allowed to access the new + ContentResultSet. The new one is first assigned in the + WELCOME-event and then the ResultSets are always swapped.</li> + <li> The listener is not allowed to access the old + ContentResultSet.</li> + </ol> +*/ + +published interface XDynamicResultSet: com::sun::star::lang::XComponent +{ + /** Call this, if you don't care about any changes. + + @returns + a com::sun::star::sdbc::XResultSet that is + implemented as ContentResultSet. Its content will never + change. + + @throws ListenerAlreadySetException + if someone already has registered as listener via + XDynamicResultSet::setListener() or if someone has + established a connection to a CachedDynamicResultSet + via XDynamicResultSet::connectToCache(). + */ + com::sun::star::sdbc::XResultSet getStaticResultSet() + raises( com::sun::star::ucb::ListenerAlreadySetException ); + + /** Call this, if you want to get notifications about changes. + + <p>The implementor has to call + com::sun::star::lang::XComponent::addEventListener() + in this method, so that we can call + com::sun::star::lang::XEventListener::disposing() + at the listener + + @param Listener + a listener for result set notifications + + @throws ListenerAlreadySetException + if this method is called more than once during the life of the + implementation object or if this method is called if someone already + has fetched the ContentResultSet via + XDynamicResultSet::getStaticResultSet(). + + */ + void setListener( [in] XDynamicResultSetListener Listener ) + raises( com::sun::star::ucb::ListenerAlreadySetException ); + + /** Connects this to a CachedDynamicResultSet for optimized + remote data transport. + + <p>This method creates a CachedDynamicResultSetStub + and sets it as Source to the given cache. + + <p>After this method has returned you can and have to use the given + result set cache for further access. + + @param Cache + has to be an implementation of the service + CachedDynamicResultSet. In particular it has to support + the interface XSourceInitialization. + + @throws ListenerAlreadySetException + if someone already has fetched the ContentResultSet via + XDynamicResultSet::getStaticResultSet(). + + @throws AlreadyInitializedException + if <var>Cache</var> was already initialized with another source. + + @throws ServiceNotFoundException + */ + void connectToCache( [in] XDynamicResultSet Cache ) + raises( com::sun::star::ucb::ListenerAlreadySetException + , com::sun::star::ucb::AlreadyInitializedException + , com::sun::star::ucb::ServiceNotFoundException ); + + /** Using this method you can get information, whether the offered + ContentResultSets are sorted or filtered etc correctly as + demanded during the creation of the XDynamicResultSet. + + @returns + zero or more constants of the ContentResultSetCapability + constants group. + */ + short getCapabilities(); +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |