1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef UCB_UCPEXT_CONTENT_HXX 25 #define UCB_UCPEXT_CONTENT_HXX 26 27 /** === begin UNO includes === **/ 28 #include <com/sun/star/sdbc/XRow.hpp> 29 #include <com/sun/star/beans/PropertyValue.hpp> 30 /** === end UNO includes === **/ 31 32 #include <rtl/ref.hxx> 33 #include <ucbhelper/contenthelper.hxx> 34 35 #include <list> 36 #include <boost/optional.hpp> 37 38 //...................................................................................................................... 39 namespace ucb { namespace ucp { namespace ext 40 { 41 //...................................................................................................................... 42 43 //================================================================================================================== 44 //= ExtensionContentType 45 //================================================================================================================== 46 enum ExtensionContentType 47 { 48 E_ROOT, 49 E_EXTENSION_ROOT, 50 E_EXTENSION_CONTENT, 51 52 E_UNKNOWN 53 }; 54 55 //================================================================================================================== 56 //= ContentProvider 57 //================================================================================================================== 58 typedef ::ucbhelper::ContentImplHelper Content_Base; 59 class Content : public Content_Base 60 { 61 public: 62 Content( 63 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rxSMgr, 64 ::ucbhelper::ContentProviderImplHelper* pProvider, 65 const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentIdentifier >& Identifier 66 ); 67 68 static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow > 69 getArtificialNodePropertyValues( 70 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rSMgr, 71 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& rProperties, 72 const ::rtl::OUString& rTitle 73 ); 74 75 ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow > 76 getPropertyValues( 77 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& rProperties, 78 const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& xEnv 79 ); 80 81 static ::rtl::OUString 82 encodeIdentifier( const ::rtl::OUString& i_rIdentifier ); 83 static ::rtl::OUString 84 decodeIdentifier( const ::rtl::OUString& i_rIdentifier ); 85 86 virtual ::rtl::OUString getParentURL(); 87 getExtensionContentType() const88 ExtensionContentType getExtensionContentType() const { return m_eExtContentType; } 89 90 /** retrieves the URL of the underlying physical content. Not to be called when getExtensionContentType() 91 returns E_ROOT. 92 */ 93 ::rtl::OUString getPhysicalURL() const; 94 95 protected: 96 virtual ~Content(); 97 98 // XServiceInfo 99 virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); 100 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); 101 102 // XContent 103 virtual rtl::OUString SAL_CALL getContentType() throw( com::sun::star::uno::RuntimeException ); 104 105 // XCommandProcessor 106 virtual com::sun::star::uno::Any SAL_CALL 107 execute( 108 const com::sun::star::ucb::Command& aCommand, 109 sal_Int32 CommandId, 110 const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment 111 ) 112 throw ( ::com::sun::star::uno::Exception 113 , ::com::sun::star::ucb::CommandAbortedException 114 , ::com::sun::star::uno::RuntimeException 115 ); 116 117 virtual void SAL_CALL 118 abort( 119 sal_Int32 CommandId 120 ) 121 throw ( ::com::sun::star::uno::RuntimeException 122 ); 123 124 private: 125 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > getProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& i_rEnv ); 126 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::ucb::CommandInfo > getCommands( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& i_rEnv ); 127 128 ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > 129 setPropertyValues( 130 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rValues, 131 const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& xEnv 132 ); 133 134 static bool denotesRootContent( const ::rtl::OUString& i_rContentIdentifier ); 135 136 bool impl_isFolder(); 137 void impl_determineContentType(); 138 139 private: 140 ExtensionContentType m_eExtContentType; 141 ::boost::optional< bool > m_aIsFolder; 142 ::boost::optional< ::rtl::OUString > m_aContentType; 143 ::rtl::OUString m_sExtensionId; 144 ::rtl::OUString m_sPathIntoExtension; 145 }; 146 147 //...................................................................................................................... 148 } } } // namespace ucb::ucp::ext 149 //...................................................................................................................... 150 151 #endif // UCB_UCPEXT_CONTENT_HXX 152