From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- offapi/com/sun/star/ucb/XDynamicResultSet.idl | 177 ++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 offapi/com/sun/star/ucb/XDynamicResultSet.idl (limited to 'offapi/com/sun/star/ucb/XDynamicResultSet.idl') 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 +#include +#include +#include +#include +#include + + +module com { module sun { module star { module ucb { + +/** Provides read access to a ContentResultSet. + +

+ 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. +

+ +

The following describes the dynamic use:

+ +

+ 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. +

+ +

+ To get notifications the listener has to be of type + XDynamicResultSetListener. +

+ +

+ After registration you will get notifications for events of type + ListEvent. +

+ +

+ 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. +

+ +

+ While one notify-call is going on: +

+ +
    +
  1. The listener is allowed to access both ContentResultSets, + they must be both valid.
  2. +
  3. It is not allowed to start a second notify-call.
  4. +
  5. All additional things we want to send as notification are to be + queued.
  6. +
  7. Any other calls are to be accepted and treated.
  8. +
+ +

+ After the listener has returned the notify-call: +

+ +
    +
  1. 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.
  2. +
  3. The listener is not allowed to access the old + ContentResultSet.
  4. +
+*/ + +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. + +

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. + +

This method creates a CachedDynamicResultSetStub + and sets it as Source to the given cache. + +

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 Cache 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: */ -- cgit v1.2.3