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