1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef DBA_CONTENTHELPER_HXX 24*b1cdbd2cSJim Jagielski #define DBA_CONTENTHELPER_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_UCB_XCONTENT_HPP_ 27*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XContent.hpp> 28*b1cdbd2cSJim Jagielski #endif 29*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_UCB_XCOMMANDPROCESSOR_HPP_ 30*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XCommandProcessor.hpp> 31*b1cdbd2cSJim Jagielski #endif 32*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_BEANS_XPROPERTIESCHANGENOTIFIER_HPP_ 33*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertiesChangeNotifier.hpp> 34*b1cdbd2cSJim Jagielski #endif 35*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_BEANS_XPROPERTYCONTAINER_HPP_ 36*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertyContainer.hpp> 37*b1cdbd2cSJim Jagielski #endif 38*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ 39*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp> 40*b1cdbd2cSJim Jagielski #endif 41*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_LANG_XSINGLESERVICEFACTORY_HPP_ 42*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XSingleServiceFactory.hpp> 43*b1cdbd2cSJim Jagielski #endif 44*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_ 45*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XInitialization.hpp> 46*b1cdbd2cSJim Jagielski #endif 47*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_ 48*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp> 49*b1cdbd2cSJim Jagielski #endif 50*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDBC_XROW_HPP_ 51*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XRow.hpp> 52*b1cdbd2cSJim Jagielski #endif 53*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_EMBED_XSTORAGE_HPP_ 54*b1cdbd2cSJim Jagielski #include <com/sun/star/embed/XStorage.hpp> 55*b1cdbd2cSJim Jagielski #endif 56*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_EMBED_XEMBEDDEDOBJECT_HPP_ 57*b1cdbd2cSJim Jagielski #include <com/sun/star/embed/XEmbeddedObject.hpp> 58*b1cdbd2cSJim Jagielski #endif 59*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_ 60*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XUnoTunnel.hpp> 61*b1cdbd2cSJim Jagielski #endif 62*b1cdbd2cSJim Jagielski #ifndef _CPPUHELPER_COMPBASE9_HXX_ 63*b1cdbd2cSJim Jagielski #include <cppuhelper/compbase9.hxx> 64*b1cdbd2cSJim Jagielski #endif 65*b1cdbd2cSJim Jagielski #ifndef _COMPHELPER_BROADCASTHELPER_HXX_ 66*b1cdbd2cSJim Jagielski #include <comphelper/broadcasthelper.hxx> 67*b1cdbd2cSJim Jagielski #endif 68*b1cdbd2cSJim Jagielski #ifndef COMPHELPER_COMPONENTCONTEXT_HXX 69*b1cdbd2cSJim Jagielski #include <comphelper/componentcontext.hxx> 70*b1cdbd2cSJim Jagielski #endif 71*b1cdbd2cSJim Jagielski #ifndef _COMPHELPER_UNO3_HXX_ 72*b1cdbd2cSJim Jagielski #include <comphelper/uno3.hxx> 73*b1cdbd2cSJim Jagielski #endif 74*b1cdbd2cSJim Jagielski #ifndef _COMPHELPER_STLTYPES_HXX_ 75*b1cdbd2cSJim Jagielski #include <comphelper/stl_types.hxx> 76*b1cdbd2cSJim Jagielski #endif 77*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_BEANS_PROPERTY_HPP_ 78*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/Property.hpp> 79*b1cdbd2cSJim Jagielski #endif 80*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_CONTAINER_XCHILD_HPP_ 81*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XChild.hpp> 82*b1cdbd2cSJim Jagielski #endif 83*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDBCX_XRENAME_HPP_ 84*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbcx/XRename.hpp> 85*b1cdbd2cSJim Jagielski #endif 86*b1cdbd2cSJim Jagielski #ifndef CONNECTIVITY_SQLERROR_HXX 87*b1cdbd2cSJim Jagielski #include <connectivity/sqlerror.hxx> 88*b1cdbd2cSJim Jagielski #endif 89*b1cdbd2cSJim Jagielski #ifndef BOOST_SHARED_PTR_HPP_INCLUDED 90*b1cdbd2cSJim Jagielski #include <boost/shared_ptr.hpp> 91*b1cdbd2cSJim Jagielski #endif 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski namespace dbaccess 94*b1cdbd2cSJim Jagielski { 95*b1cdbd2cSJim Jagielski class ODatabaseModelImpl; 96*b1cdbd2cSJim Jagielski struct ContentProperties 97*b1cdbd2cSJim Jagielski { 98*b1cdbd2cSJim Jagielski ::rtl::OUString aTitle; // Title 99*b1cdbd2cSJim Jagielski ::boost::optional< ::rtl::OUString > 100*b1cdbd2cSJim Jagielski aContentType; // ContentType (aka MediaType aka MimeType) 101*b1cdbd2cSJim Jagielski sal_Bool bIsDocument; // IsDocument 102*b1cdbd2cSJim Jagielski sal_Bool bIsFolder; // IsFolder 103*b1cdbd2cSJim Jagielski sal_Bool bAsTemplate; // AsTemplate 104*b1cdbd2cSJim Jagielski ::rtl::OUString sPersistentName;// persistent name of the document 105*b1cdbd2cSJim Jagielski ContentPropertiesdbaccess::ContentProperties106*b1cdbd2cSJim Jagielski ContentProperties() 107*b1cdbd2cSJim Jagielski :bIsDocument( sal_True ) 108*b1cdbd2cSJim Jagielski ,bIsFolder( sal_False ) 109*b1cdbd2cSJim Jagielski ,bAsTemplate( sal_False ) 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski } 112*b1cdbd2cSJim Jagielski }; 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski class OContentHelper_Impl 115*b1cdbd2cSJim Jagielski { 116*b1cdbd2cSJim Jagielski public: 117*b1cdbd2cSJim Jagielski OContentHelper_Impl(); 118*b1cdbd2cSJim Jagielski virtual ~OContentHelper_Impl(); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski ContentProperties m_aProps; 121*b1cdbd2cSJim Jagielski ODatabaseModelImpl* m_pDataSource; // this will stay alive as long as the content exists 122*b1cdbd2cSJim Jagielski }; 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski typedef ::boost::shared_ptr<OContentHelper_Impl> TContentPtr; 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski typedef ::cppu::OMultiTypeInterfaceContainerHelperVar< ::rtl::OUString, 128*b1cdbd2cSJim Jagielski ::comphelper::UStringHash, 129*b1cdbd2cSJim Jagielski ::comphelper::UStringEqual 130*b1cdbd2cSJim Jagielski > PropertyChangeListenerContainer; 131*b1cdbd2cSJim Jagielski typedef ::comphelper::OBaseMutex OContentHelper_MBASE; 132*b1cdbd2cSJim Jagielski typedef ::cppu::WeakComponentImplHelper9 < ::com::sun::star::ucb::XContent 133*b1cdbd2cSJim Jagielski , ::com::sun::star::ucb::XCommandProcessor 134*b1cdbd2cSJim Jagielski , ::com::sun::star::lang::XServiceInfo 135*b1cdbd2cSJim Jagielski , ::com::sun::star::beans::XPropertiesChangeNotifier 136*b1cdbd2cSJim Jagielski , ::com::sun::star::beans::XPropertyContainer 137*b1cdbd2cSJim Jagielski , ::com::sun::star::lang::XInitialization 138*b1cdbd2cSJim Jagielski , ::com::sun::star::lang::XUnoTunnel 139*b1cdbd2cSJim Jagielski , ::com::sun::star::container::XChild 140*b1cdbd2cSJim Jagielski , ::com::sun::star::sdbcx::XRename 141*b1cdbd2cSJim Jagielski > OContentHelper_COMPBASE; 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski class OContentHelper : public OContentHelper_MBASE 144*b1cdbd2cSJim Jagielski ,public OContentHelper_COMPBASE 145*b1cdbd2cSJim Jagielski { 146*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > 147*b1cdbd2cSJim Jagielski setPropertyValues( const ::com::sun::star::uno::Sequence< 148*b1cdbd2cSJim Jagielski ::com::sun::star::beans::PropertyValue >& rValues, 149*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 150*b1cdbd2cSJim Jagielski ::com::sun::star::ucb::XCommandEnvironment >& xEnv ); 151*b1cdbd2cSJim Jagielski com::sun::star::uno::Sequence< com::sun::star::beans::Property > 152*b1cdbd2cSJim Jagielski getProperties( const com::sun::star::uno::Reference< 153*b1cdbd2cSJim Jagielski com::sun::star::ucb::XCommandEnvironment > & xEnv ); 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski void impl_rename_throw(const ::rtl::OUString& _sNewName,bool _bNotify = true); 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski protected: 158*b1cdbd2cSJim Jagielski ::cppu::OInterfaceContainerHelper m_aContentListeners; 159*b1cdbd2cSJim Jagielski PropertyChangeListenerContainer m_aPropertyChangeListeners; 160*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > 161*b1cdbd2cSJim Jagielski m_xParentContainer; 162*b1cdbd2cSJim Jagielski const ::comphelper::ComponentContext m_aContext; 163*b1cdbd2cSJim Jagielski const ::connectivity::SQLError m_aErrorHelper; 164*b1cdbd2cSJim Jagielski TContentPtr m_pImpl; 165*b1cdbd2cSJim Jagielski sal_uInt32 m_nCommandId; 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski // helper 168*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing(); 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski virtual void notifyDataSourceModified(); 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielski /** 173*b1cdbd2cSJim Jagielski * This method can be used to propagate changes of property values. 174*b1cdbd2cSJim Jagielski * 175*b1cdbd2cSJim Jagielski * @param evt is a sequence of property change events. 176*b1cdbd2cSJim Jagielski */ 177*b1cdbd2cSJim Jagielski void notifyPropertiesChange( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyChangeEvent >& evt ) const; 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski ::rtl::OUString impl_getHierarchicalName( bool _includingRootContainer ) const; 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski public: 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski OContentHelper( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB 184*b1cdbd2cSJim Jagielski ,const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParentContainer 185*b1cdbd2cSJim Jagielski ,const TContentPtr& _pImpl 186*b1cdbd2cSJim Jagielski ); 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski // com::sun::star::lang::XTypeProvider 189*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException); 190*b1cdbd2cSJim Jagielski static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId(); 191*b1cdbd2cSJim Jagielski // ::com::sun::star::lang::XServiceInfo 192*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); 193*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); 194*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski // XContent 197*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentIdentifier > SAL_CALL getIdentifier( ) throw (::com::sun::star::uno::RuntimeException) ; 198*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getContentType( ) throw (::com::sun::star::uno::RuntimeException) ; 199*b1cdbd2cSJim Jagielski virtual void SAL_CALL addContentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentEventListener >& Listener ) throw (::com::sun::star::uno::RuntimeException) ; 200*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeContentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentEventListener >& Listener ) throw (::com::sun::star::uno::RuntimeException) ; 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski // XCommandProcessor 203*b1cdbd2cSJim Jagielski virtual sal_Int32 SAL_CALL createCommandIdentifier( ) throw (::com::sun::star::uno::RuntimeException) ; 204*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Any SAL_CALL execute( const ::com::sun::star::ucb::Command& aCommand, sal_Int32 CommandId, const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& Environment ) throw (::com::sun::star::uno::Exception, ::com::sun::star::ucb::CommandAbortedException, ::com::sun::star::uno::RuntimeException) ; 205*b1cdbd2cSJim Jagielski virtual void SAL_CALL abort( sal_Int32 CommandId ) throw (::com::sun::star::uno::RuntimeException) ; 206*b1cdbd2cSJim Jagielski 207*b1cdbd2cSJim Jagielski // XPropertiesChangeNotifier 208*b1cdbd2cSJim Jagielski virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& PropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& Listener ) throw (::com::sun::star::uno::RuntimeException) ; 209*b1cdbd2cSJim Jagielski virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& PropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& Listener ) throw (::com::sun::star::uno::RuntimeException) ; 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielski // XPropertyContainer 212*b1cdbd2cSJim Jagielski 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) ; 213*b1cdbd2cSJim Jagielski 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) ; 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski // XInitialization 216*b1cdbd2cSJim Jagielski 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); 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski // com::sun::star::lang::XUnoTunnel 219*b1cdbd2cSJim Jagielski virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException); 220*b1cdbd2cSJim Jagielski static OContentHelper* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxComponent ); 221*b1cdbd2cSJim Jagielski 222*b1cdbd2cSJim Jagielski // ::com::sun::star::container::XChild 223*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw (::com::sun::star::uno::RuntimeException); 224*b1cdbd2cSJim Jagielski virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 225*b1cdbd2cSJim Jagielski 226*b1cdbd2cSJim Jagielski // XRename 227*b1cdbd2cSJim Jagielski virtual void SAL_CALL rename( const ::rtl::OUString& newName ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException); 228*b1cdbd2cSJim Jagielski getContentProperties() const229*b1cdbd2cSJim Jagielski inline const ContentProperties& getContentProperties() const { return m_pImpl->m_aProps; } 230*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow > 231*b1cdbd2cSJim Jagielski getPropertyValues( const ::com::sun::star::uno::Sequence< 232*b1cdbd2cSJim Jagielski ::com::sun::star::beans::Property >& rProperties ); 233*b1cdbd2cSJim Jagielski getContext() const234*b1cdbd2cSJim Jagielski const ::comphelper::ComponentContext& getContext() const { return m_aContext; } 235*b1cdbd2cSJim Jagielski getImpl() const236*b1cdbd2cSJim Jagielski inline TContentPtr getImpl() const { return m_pImpl; } 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski protected: 239*b1cdbd2cSJim Jagielski virtual ::rtl::OUString determineContentType() const = 0; 240*b1cdbd2cSJim Jagielski }; 241*b1cdbd2cSJim Jagielski 242*b1cdbd2cSJim Jagielski //........................................................................ 243*b1cdbd2cSJim Jagielski } // namespace dbaccess 244*b1cdbd2cSJim Jagielski //........................................................................ 245*b1cdbd2cSJim Jagielski #endif // DBA_CONTENTHELPER_HXX 246