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 #include "precompiled_reportdesign.hxx" 24 #include "Function.hxx" 25 #include <com/sun/star/beans/PropertyAttribute.hpp> 26 #ifndef REPORTDESIGN_SHARED_CORESTRINGS_HRC 27 #include "corestrings.hrc" 28 #endif 29 #include <tools/debug.hxx> 30 #include <connectivity/dbtools.hxx> 31 #include <comphelper/sequence.hxx> 32 #include <comphelper/property.hxx> 33 #include "Tools.hxx" 34 #include "corestrings.hrc" 35 // ============================================================================= 36 namespace reportdesign 37 { 38 // ============================================================================= 39 using namespace com::sun::star; 40 using namespace comphelper; 41 //------------------------------------------------------------------------------ 42 uno::Reference< uno::XInterface > OFunction::create(uno::Reference< uno::XComponentContext > const & xContext) 43 { 44 return *(new OFunction(xContext)); 45 } 46 47 DBG_NAME( rpt_OFunction ) 48 // ----------------------------------------------------------------------------- 49 OFunction::OFunction(uno::Reference< uno::XComponentContext > const & _xContext) 50 :FunctionBase(m_aMutex) 51 ,FunctionPropertySet(_xContext,static_cast< Implements >(IMPLEMENTS_PROPERTY_SET),uno::Sequence< ::rtl::OUString >()) 52 ,m_xContext(_xContext) 53 ,m_bPreEvaluated(sal_False) 54 ,m_bDeepTraversing(sal_False) 55 { 56 m_sInitialFormula.IsPresent = sal_False; 57 DBG_CTOR( rpt_OFunction,NULL); 58 } 59 // ----------------------------------------------------------------------------- 60 OFunction::~OFunction() 61 { 62 DBG_DTOR( rpt_OFunction,NULL); 63 } 64 // ----------------------------------------------------------------------------- 65 IMPLEMENT_FORWARD_XINTERFACE2(OFunction,FunctionBase,FunctionPropertySet) 66 // ----------------------------------------------------------------------------- 67 void SAL_CALL OFunction::dispose() throw(uno::RuntimeException) 68 { 69 FunctionPropertySet::dispose(); 70 cppu::WeakComponentImplHelperBase::dispose(); 71 } 72 // ----------------------------------------------------------------------------- 73 ::rtl::OUString OFunction::getImplementationName_Static( ) throw(uno::RuntimeException) 74 { 75 return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.report.OFunction")); 76 } 77 78 //-------------------------------------------------------------------------- 79 ::rtl::OUString SAL_CALL OFunction::getImplementationName( ) throw(uno::RuntimeException) 80 { 81 return getImplementationName_Static(); 82 } 83 //-------------------------------------------------------------------------- 84 uno::Sequence< ::rtl::OUString > OFunction::getSupportedServiceNames_Static( ) throw(uno::RuntimeException) 85 { 86 uno::Sequence< ::rtl::OUString > aServices(1); 87 aServices.getArray()[0] = SERVICE_FUNCTION; 88 89 return aServices; 90 } 91 //-------------------------------------------------------------------------- 92 uno::Sequence< ::rtl::OUString > SAL_CALL OFunction::getSupportedServiceNames( ) throw(uno::RuntimeException) 93 { 94 return getSupportedServiceNames_Static(); 95 } 96 //------------------------------------------------------------------------------ 97 sal_Bool SAL_CALL OFunction::supportsService(const ::rtl::OUString& ServiceName) throw( uno::RuntimeException ) 98 { 99 return ::comphelper::existsValue(ServiceName,getSupportedServiceNames_Static()); 100 } 101 // ----------------------------------------------------------------------------- 102 uno::Reference< beans::XPropertySetInfo > SAL_CALL OFunction::getPropertySetInfo( ) throw(uno::RuntimeException) 103 { 104 return FunctionPropertySet::getPropertySetInfo(); 105 } 106 // ----------------------------------------------------------------------------- 107 void SAL_CALL OFunction::setPropertyValue( const ::rtl::OUString& aPropertyName, const uno::Any& aValue ) throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) 108 { 109 FunctionPropertySet::setPropertyValue( aPropertyName, aValue ); 110 } 111 // ----------------------------------------------------------------------------- 112 uno::Any SAL_CALL OFunction::getPropertyValue( const ::rtl::OUString& PropertyName ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 113 { 114 return FunctionPropertySet::getPropertyValue( PropertyName); 115 } 116 // ----------------------------------------------------------------------------- 117 void SAL_CALL OFunction::addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const uno::Reference< beans::XPropertyChangeListener >& xListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 118 { 119 FunctionPropertySet::addPropertyChangeListener( aPropertyName, xListener ); 120 } 121 // ----------------------------------------------------------------------------- 122 void SAL_CALL OFunction::removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const uno::Reference< beans::XPropertyChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 123 { 124 FunctionPropertySet::removePropertyChangeListener( aPropertyName, aListener ); 125 } 126 // ----------------------------------------------------------------------------- 127 void SAL_CALL OFunction::addVetoableChangeListener( const ::rtl::OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 128 { 129 FunctionPropertySet::addVetoableChangeListener( PropertyName, aListener ); 130 } 131 // ----------------------------------------------------------------------------- 132 void SAL_CALL OFunction::removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 133 { 134 FunctionPropertySet::removeVetoableChangeListener( PropertyName, aListener ); 135 } 136 // ----------------------------------------------------------------------------- 137 // report::XFunction: 138 ::sal_Bool SAL_CALL OFunction::getPreEvaluated() throw (uno::RuntimeException) 139 { 140 osl::MutexGuard g(m_aMutex); 141 return m_bPreEvaluated; 142 } 143 // ----------------------------------------------------------------------------- 144 145 void SAL_CALL OFunction::setPreEvaluated(::sal_Bool the_value) throw (uno::RuntimeException) 146 { 147 set(PROPERTY_PREEVALUATED,the_value,m_bPreEvaluated); 148 } 149 // ----------------------------------------------------------------------------- 150 ::sal_Bool SAL_CALL OFunction::getDeepTraversing() throw (uno::RuntimeException) 151 { 152 osl::MutexGuard g(m_aMutex); 153 return m_bDeepTraversing; 154 } 155 // ----------------------------------------------------------------------------- 156 157 void SAL_CALL OFunction::setDeepTraversing(::sal_Bool the_value) throw (uno::RuntimeException) 158 { 159 set(PROPERTY_DEEPTRAVERSING,the_value,m_bDeepTraversing); 160 } 161 // ----------------------------------------------------------------------------- 162 163 ::rtl::OUString SAL_CALL OFunction::getName() throw (uno::RuntimeException) 164 { 165 osl::MutexGuard g(m_aMutex); 166 return m_sName; 167 } 168 // ----------------------------------------------------------------------------- 169 170 void SAL_CALL OFunction::setName(const ::rtl::OUString & the_value) throw (uno::RuntimeException) 171 { 172 set(PROPERTY_NAME,the_value,m_sName); 173 } 174 // ----------------------------------------------------------------------------- 175 ::rtl::OUString SAL_CALL OFunction::getFormula() throw (uno::RuntimeException) 176 { 177 osl::MutexGuard g(m_aMutex); 178 return m_sFormula; 179 } 180 // ----------------------------------------------------------------------------- 181 void SAL_CALL OFunction::setFormula(const ::rtl::OUString & the_value) throw (uno::RuntimeException) 182 { 183 set(PROPERTY_FORMULA,the_value,m_sFormula); 184 } 185 // ----------------------------------------------------------------------------- 186 beans::Optional< ::rtl::OUString> SAL_CALL OFunction::getInitialFormula() throw (uno::RuntimeException) 187 { 188 osl::MutexGuard g(m_aMutex); 189 return m_sInitialFormula; 190 } 191 // ----------------------------------------------------------------------------- 192 void SAL_CALL OFunction::setInitialFormula(const beans::Optional< ::rtl::OUString> & the_value) throw (uno::RuntimeException) 193 { 194 set(PROPERTY_INITIALFORMULA,the_value,m_sInitialFormula); 195 } 196 // ----------------------------------------------------------------------------- 197 // XChild 198 uno::Reference< uno::XInterface > SAL_CALL OFunction::getParent( ) throw (uno::RuntimeException) 199 { 200 osl::MutexGuard g(m_aMutex); 201 return m_xParent; 202 } 203 // ----------------------------------------------------------------------------- 204 void SAL_CALL OFunction::setParent( const uno::Reference< uno::XInterface >& Parent ) throw (lang::NoSupportException, uno::RuntimeException) 205 { 206 osl::MutexGuard g(m_aMutex); 207 if ( Parent.is() ) 208 { 209 uno::Reference< report::XFunctions> xFunctions(Parent,uno::UNO_QUERY_THROW); 210 m_xParent = xFunctions; 211 } 212 else 213 m_xParent = uno::WeakReference< report::XFunctions >(); 214 } 215 // ----------------------------------------------------------------------------- 216 217 // ============================================================================= 218 } // namespace reportdesign 219 // ============================================================================= 220