blob: 27096865bf85f33dbea29fb9cc1f9713ae232c33 [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _UCBSTORE_HXX
#define _UCBSTORE_HXX
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/container/XNamed.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/ucb/XPropertySetRegistryFactory.hpp>
#include <com/sun/star/ucb/XPropertySetRegistry.hpp>
#include <com/sun/star/ucb/XPersistentPropertySet.hpp>
#include <com/sun/star/beans/XPropertyContainer.hpp>
#include <com/sun/star/beans/XPropertySetInfoChangeNotifier.hpp>
#include <com/sun/star/beans/XPropertyAccess.hpp>
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <cppuhelper/weak.hxx>
#include <ucbhelper/macros.hxx>
//=========================================================================
#define STORE_SERVICE_NAME "com.sun.star.ucb.Store"
#define PROPSET_REG_SERVICE_NAME "com.sun.star.ucb.PropertySetRegistry"
#define PERS_PROPSET_SERVICE_NAME "com.sun.star.ucb.PersistentPropertySet"
//=========================================================================
struct UcbStore_Impl;
class UcbStore :
public cppu::OWeakObject,
public com::sun::star::lang::XTypeProvider,
public com::sun::star::lang::XServiceInfo,
public com::sun::star::ucb::XPropertySetRegistryFactory,
public com::sun::star::lang::XInitialization
{
com::sun::star::uno::Reference<
com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
UcbStore_Impl* m_pImpl;
public:
UcbStore(
const com::sun::star::uno::Reference<
com::sun::star::lang::XMultiServiceFactory >& rXSMgr );
virtual ~UcbStore();
// XInterface
XINTERFACE_DECL()
// XTypeProvider
XTYPEPROVIDER_DECL()
// XServiceInfo
XSERVICEINFO_DECL()
// XPropertySetRegistryFactory
virtual com::sun::star::uno::Reference<
com::sun::star::ucb::XPropertySetRegistry > SAL_CALL
createPropertySetRegistry( const rtl::OUString& URL )
throw( com::sun::star::uno::RuntimeException );
// XInitialization
virtual void SAL_CALL
initialize( const ::com::sun::star::uno::Sequence<
::com::sun::star::uno::Any >& aArguments )
throw( ::com::sun::star::uno::Exception,
::com::sun::star::uno::RuntimeException );
const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >&
getInitArgs() const;
};
//=========================================================================
struct PropertySetRegistry_Impl;
class PersistentPropertySet;
class PropertySetRegistry :
public cppu::OWeakObject,
public com::sun::star::lang::XTypeProvider,
public com::sun::star::lang::XServiceInfo,
public com::sun::star::ucb::XPropertySetRegistry,
public com::sun::star::container::XNameAccess
{
friend class PersistentPropertySet;
com::sun::star::uno::Reference<
com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
PropertySetRegistry_Impl* m_pImpl;
private:
com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >
getConfigProvider();
void add ( PersistentPropertySet* pSet );
void remove( PersistentPropertySet* pSet );
void renamePropertySet( const rtl::OUString& rOldKey,
const rtl::OUString& rNewKey );
public:
PropertySetRegistry(
const com::sun::star::uno::Reference<
com::sun::star::lang::XMultiServiceFactory >& rXSMgr,
const ::com::sun::star::uno::Sequence<
::com::sun::star::uno::Any >& rInitArgs);
virtual ~PropertySetRegistry();
// XInterface
XINTERFACE_DECL()
// XTypeProvider
XTYPEPROVIDER_DECL()
// XServiceInfo
XSERVICEINFO_NOFACTORY_DECL()
// XPropertySetRegistry
virtual com::sun::star::uno::Reference<
com::sun::star::ucb::XPersistentPropertySet > SAL_CALL
openPropertySet( const rtl::OUString& key, sal_Bool create )
throw( com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
removePropertySet( const rtl::OUString& key )
throw( com::sun::star::uno::RuntimeException );
// XElementAccess ( XNameAccess is derived from it )
virtual com::sun::star::uno::Type SAL_CALL
getElementType()
throw( com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL
hasElements()
throw( com::sun::star::uno::RuntimeException );
// XNameAccess
virtual com::sun::star::uno::Any SAL_CALL
getByName( const rtl::OUString& aName )
throw( com::sun::star::container::NoSuchElementException,
com::sun::star::lang::WrappedTargetException,
com::sun::star::uno::RuntimeException );
virtual com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL
getElementNames()
throw( com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL
hasByName( const rtl::OUString& aName )
throw( com::sun::star::uno::RuntimeException );
// Non-interface methods
com::sun::star::uno::Reference< com::sun::star::uno::XInterface >
getRootConfigReadAccess();
com::sun::star::uno::Reference< com::sun::star::uno::XInterface >
getConfigWriteAccess( const rtl::OUString& rPath );
};
//=========================================================================
struct PersistentPropertySet_Impl;
class PersistentPropertySet :
public cppu::OWeakObject,
public com::sun::star::lang::XTypeProvider,
public com::sun::star::lang::XServiceInfo,
public com::sun::star::lang::XComponent,
public com::sun::star::ucb::XPersistentPropertySet,
public com::sun::star::container::XNamed,
public com::sun::star::beans::XPropertyContainer,
public com::sun::star::beans::XPropertySetInfoChangeNotifier,
public com::sun::star::beans::XPropertyAccess
{
com::sun::star::uno::Reference<
com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
PersistentPropertySet_Impl* m_pImpl;
private:
void notifyPropertyChangeEvent(
const com::sun::star::beans::PropertyChangeEvent& rEvent ) const;
void notifyPropertySetInfoChange(
const com::sun::star::beans::PropertySetInfoChangeEvent& evt ) const;
public:
PersistentPropertySet(
const com::sun::star::uno::Reference<
com::sun::star::lang::XMultiServiceFactory >& rXSMgr,
PropertySetRegistry& rCreator,
const rtl::OUString& rKey );
virtual ~PersistentPropertySet();
// XInterface
XINTERFACE_DECL()
// XTypeProvider
XTYPEPROVIDER_DECL()
// XServiceInfo
XSERVICEINFO_NOFACTORY_DECL()
// XComponent
virtual void SAL_CALL
dispose()
throw( com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
addEventListener( const com::sun::star::uno::Reference<
com::sun::star::lang::XEventListener >& Listener )
throw( com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
removeEventListener( const com::sun::star::uno::Reference<
com::sun::star::lang::XEventListener >& Listener )
throw( com::sun::star::uno::RuntimeException );
// XPropertySet
virtual com::sun::star::uno::Reference<
com::sun::star::beans::XPropertySetInfo > SAL_CALL
getPropertySetInfo()
throw( com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
setPropertyValue( const rtl::OUString& aPropertyName,
const com::sun::star::uno::Any& aValue )
throw( com::sun::star::beans::UnknownPropertyException,
com::sun::star::beans::PropertyVetoException,
com::sun::star::lang::IllegalArgumentException,
com::sun::star::lang::WrappedTargetException,
com::sun::star::uno::RuntimeException );
virtual com::sun::star::uno::Any SAL_CALL
getPropertyValue( const rtl::OUString& PropertyName )
throw( com::sun::star::beans::UnknownPropertyException,
com::sun::star::lang::WrappedTargetException,
com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
addPropertyChangeListener( const rtl::OUString& aPropertyName,
const com::sun::star::uno::Reference<
com::sun::star::beans::XPropertyChangeListener >& xListener )
throw( com::sun::star::beans::UnknownPropertyException,
com::sun::star::lang::WrappedTargetException,
com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
removePropertyChangeListener( const rtl::OUString& aPropertyName,
const com::sun::star::uno::Reference<
com::sun::star::beans::XPropertyChangeListener >& aListener )
throw( com::sun::star::beans::UnknownPropertyException,
com::sun::star::lang::WrappedTargetException,
com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
addVetoableChangeListener( const rtl::OUString& PropertyName,
const com::sun::star::uno::Reference<
com::sun::star::beans::XVetoableChangeListener >& aListener )
throw( com::sun::star::beans::UnknownPropertyException,
com::sun::star::lang::WrappedTargetException,
com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
removeVetoableChangeListener( const rtl::OUString& PropertyName,
const com::sun::star::uno::Reference<
com::sun::star::beans::XVetoableChangeListener >& aListener )
throw( com::sun::star::beans::UnknownPropertyException,
com::sun::star::lang::WrappedTargetException,
com::sun::star::uno::RuntimeException );
// XPersistentPropertySet
virtual com::sun::star::uno::Reference<
com::sun::star::ucb::XPropertySetRegistry > SAL_CALL
getRegistry()
throw( com::sun::star::uno::RuntimeException );
virtual rtl::OUString SAL_CALL
getKey()
throw( com::sun::star::uno::RuntimeException );
// XNamed
virtual rtl::OUString SAL_CALL
getName()
throw( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
setName( const ::rtl::OUString& aName )
throw( ::com::sun::star::uno::RuntimeException );
// XPropertyContainer
virtual void SAL_CALL
addProperty( const rtl::OUString& Name,
sal_Int16 Attributes,
const com::sun::star::uno::Any& DefaultValue )
throw( com::sun::star::beans::PropertyExistException,
com::sun::star::beans::IllegalTypeException,
com::sun::star::lang::IllegalArgumentException,
com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
removeProperty( const rtl::OUString& Name )
throw( com::sun::star::beans::UnknownPropertyException,
com::sun::star::beans::NotRemoveableException,
com::sun::star::uno::RuntimeException );
// XPropertySetInfoChangeNotifier
virtual void SAL_CALL
addPropertySetInfoChangeListener( const com::sun::star::uno::Reference<
com::sun::star::beans::XPropertySetInfoChangeListener >& Listener )
throw( com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
removePropertySetInfoChangeListener( const com::sun::star::uno::Reference<
com::sun::star::beans::XPropertySetInfoChangeListener >& Listener )
throw( com::sun::star::uno::RuntimeException );
// XPropertyAccess
virtual com::sun::star::uno::Sequence<
com::sun::star::beans::PropertyValue > SAL_CALL
getPropertyValues()
throw( com::sun::star::uno::RuntimeException );
virtual void SAL_CALL
setPropertyValues( const com::sun::star::uno::Sequence<
com::sun::star::beans::PropertyValue >& aProps )
throw( com::sun::star::beans::UnknownPropertyException,
com::sun::star::beans::PropertyVetoException,
com::sun::star::lang::IllegalArgumentException,
com::sun::star::lang::WrappedTargetException,
com::sun::star::uno::RuntimeException );
// Non-interface methods.
PropertySetRegistry& getPropertySetRegistry();
const rtl::OUString& getFullKey();
};
#endif /* !_UCBSTORE_HXX */