b3c1c482d8
2008/04/01 12:27:24 thb 1.6.130.2: #i85898# Stripping all external header guards 2008/03/31 12:22:44 rt 1.6.130.1: #i87441# Change license header to LPGL v3.
252 lines
9.3 KiB
C++
252 lines
9.3 KiB
C++
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* $RCSfile: mergeddataprovider.hxx,v $
|
|
* $Revision: 1.7 $
|
|
*
|
|
* 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 CONFIGMGR_BACKEND_MERGEDDATAPROVIDER_HXX
|
|
#define CONFIGMGR_BACKEND_MERGEDDATAPROVIDER_HXX
|
|
|
|
#include "request.hxx"
|
|
#include "requesttypes.hxx"
|
|
#include "utility.hxx"
|
|
|
|
namespace configmgr
|
|
{
|
|
// ---------------------------------------------------------------------------
|
|
namespace backend
|
|
{
|
|
// ---------------------------------------------------------------------------
|
|
/** Listener interface for receiving notifications
|
|
about changes to previously requested data
|
|
*/
|
|
struct SAL_NO_VTABLE INodeDataListener : Refcounted
|
|
{
|
|
/** is called to indicate changes within the data being observed.
|
|
|
|
@param _aOriginalRequest
|
|
identifies the data that changed
|
|
*/
|
|
virtual void dataChanged(ComponentRequest const & _aOriginalRequest) CFG_NOTHROW() = 0;
|
|
};
|
|
// ---------------------------------------------------------------------------
|
|
/// Interface providing access to (merged) data for whole components
|
|
struct SAL_NO_VTABLE IComponentDataProvider
|
|
{
|
|
/** loads merged data for a (complete) tree and returns it as return value.
|
|
|
|
@param _aRequest
|
|
identifies the component to be loaded
|
|
|
|
@param __bAddListenter
|
|
identifies is listener is to be registered to backend
|
|
|
|
@returns
|
|
A valid component instance for the given component.
|
|
|
|
@throws com::sun::star::uno::Exception
|
|
if the node cannot be retrieved.
|
|
The exact exception being thrown may depend on the underlying backend.
|
|
|
|
*/
|
|
virtual ComponentResult getComponentData(ComponentRequest const & _aRequest,
|
|
bool _bAddListenter)
|
|
CFG_UNO_THROW_ALL() = 0;
|
|
};
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/// Interface providing access to template (schema) data
|
|
struct SAL_NO_VTABLE ITemplateDataProvider
|
|
{
|
|
/** loads a given template and returns it as return value
|
|
|
|
@param _aRequest
|
|
identifies the template to be loaded
|
|
|
|
@returns
|
|
A valid instance of the given template.
|
|
|
|
<p> Currently a request with empty template name
|
|
will retrieve a group node holding all templates
|
|
of a component.
|
|
</p>
|
|
|
|
@throws com::sun::star::uno::Exception
|
|
if the template cannot be retrieved.
|
|
The exact exception being thrown may depend on the underlying backend.
|
|
*/
|
|
virtual TemplateResult getTemplateData(TemplateRequest const & _aRequest)
|
|
CFG_UNO_THROW_ALL() = 0;
|
|
};
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/** Interface providing access to (merged) data for individual nodes
|
|
with optional notification about subsequent changes.
|
|
|
|
There is no guarantee, that all changes are notified immediately
|
|
(or even at all).If the provider cannot detect changes
|
|
it may simply ignore a supplied listener.
|
|
*/
|
|
struct SAL_NO_VTABLE INodeDataProvider
|
|
{
|
|
/** loads merged data for a (partial) tree and returns it as return value.
|
|
|
|
@param _aRequest
|
|
identifies the component to be loaded
|
|
|
|
@param _pListener
|
|
a listener to observe subsequent changes to the data requested
|
|
|
|
<p> If NULL, no notifications will be sent. </p>
|
|
|
|
<p> Otherwise the listener will be notified of changes.
|
|
The listener must subsequently be removed by calling
|
|
<member>INodeDataProvider::removeRequestListener</member>.
|
|
The listener must live at least until it is removed.
|
|
</p>
|
|
|
|
@returns
|
|
A valid component instance for the given request.
|
|
|
|
@throws com::sun::star::uno::Exception
|
|
if the node cannot be retrieved.
|
|
The exact exception being thrown may depend on the underlying backend.
|
|
*/
|
|
virtual ComponentResult getNodeData(ComponentRequest const & _aRequest,
|
|
ITemplateDataProvider* _aTemplateProvider,
|
|
INodeDataListener * _pListener = NULL)
|
|
CFG_UNO_THROW_ALL() = 0;
|
|
|
|
/** remove a listener registered for a previous request.
|
|
<p>This may also release some open resources for the request.</p>
|
|
|
|
@param _pListener
|
|
a listener that was passed to a previous succes
|
|
|
|
@param _aRequest
|
|
identifies the component associated with the listener
|
|
*/
|
|
virtual void removeRequestListener(INodeDataListener * _pListener,
|
|
const ComponentRequest& aRequest) CFG_NOTHROW() = 0;
|
|
};
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/// Interface providing the capability to update node data
|
|
struct SAL_NO_VTABLE INodeUpdateProvider
|
|
{
|
|
/** applies an update to the stored data.
|
|
|
|
@param _anUpdate
|
|
identifies the node to be updated and
|
|
describes the changes to be applied.
|
|
|
|
@throws com::sun::star::uno::Exception
|
|
if the node cannot be updated.
|
|
The exact exception being thrown may depend on the underlying backend.
|
|
*/
|
|
virtual void updateNodeData(UpdateRequest const & _anUpdate)
|
|
CFG_UNO_THROW_ALL() = 0;
|
|
};
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/// Interface providing access to (merged) default data
|
|
struct SAL_NO_VTABLE IDefaultDataProvider
|
|
{
|
|
/** loads default data for a (partial) tree and returns it as return value
|
|
|
|
@param _aRequest
|
|
identifies the node to be loaded
|
|
|
|
@returns
|
|
A valid node instance for the default state of the given node.
|
|
|
|
<p>May be NULL, if the node exists but has no default equivalent.</p>
|
|
|
|
@throws com::sun::star::uno::Exception
|
|
if the default cannot be retrieved.
|
|
The exact exception being thrown may depend on the underlying backend.
|
|
*/
|
|
virtual NodeResult getDefaultData(NodeRequest const & _aRequest)
|
|
CFG_UNO_THROW_ALL() = 0;
|
|
};
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/// Interface providing access to backend meta-data
|
|
struct SAL_NO_VTABLE IDataProviderMetaData
|
|
{
|
|
/** Queries whether default property values are stripped from
|
|
a merged result tree or whether they are returned inline.
|
|
|
|
@returns
|
|
<TRUE/> if default data is stripped from a merged node result, <BR/>
|
|
<FALSE/> if default data is left in the merged node result
|
|
*/
|
|
virtual bool isStrippingDefaults() CFG_NOTHROW() = 0;
|
|
};
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/** Composite interface providing simple direct access to (merged) configuration data
|
|
from some data store.
|
|
|
|
<p> Only loading data is supported (no updates or notifications). </p>
|
|
*/
|
|
struct IDirectDataProvider
|
|
: Refcounted
|
|
, IComponentDataProvider
|
|
, IDefaultDataProvider
|
|
, ITemplateDataProvider
|
|
{
|
|
};
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/** Composite interface providing full access to merged configuration data
|
|
from some data store.
|
|
|
|
<p> Loading and updating of data is supported.
|
|
Support for notification depends on the backend.
|
|
</p>
|
|
*/
|
|
struct IMergedDataProvider
|
|
: Refcounted
|
|
, INodeDataProvider
|
|
, INodeUpdateProvider
|
|
, IDefaultDataProvider
|
|
, ITemplateDataProvider
|
|
, IDataProviderMetaData
|
|
{
|
|
};
|
|
|
|
// ---------------------------------------------------------------------------
|
|
} // namespace backend
|
|
|
|
// ---------------------------------------------------------------------------
|
|
} // namespace configmgr
|
|
|
|
#endif
|
|
|