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 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_scripting.hxx"
26*b1cdbd2cSJim Jagielski #include <cppuhelper/implementationentry.hxx>
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski #include <hash_map>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <osl/file.hxx>
31*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase1.hxx>
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertyContainer.hpp>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyAttribute.hpp>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #include <drafts/com/sun/star/script/framework/storage/XScriptStorageManager.hpp>
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski #include <util/util.hxx>
39*b1cdbd2cSJim Jagielski #include "ScriptInfo.hxx"
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski using namespace ::rtl;
42*b1cdbd2cSJim Jagielski using namespace com::sun::star;
43*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
44*b1cdbd2cSJim Jagielski using namespace ::drafts::com::sun::star::script::framework;
45*b1cdbd2cSJim Jagielski using namespace ::drafts::com::sun::star::script::framework::storage;
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski namespace scripting_impl
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski typedef ::std::hash_map < ::rtl::OUString, css::uno::Any, ::rtl::OUStringHash,
51*b1cdbd2cSJim Jagielski     ::std::equal_to< ::rtl::OUString > > PropertySet_hash;
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski class PropertySetImpl : public ::cppu::WeakImplHelper1< css::beans::XPropertySet >
54*b1cdbd2cSJim Jagielski {
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski public:
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski     PropertySetImpl();
59*b1cdbd2cSJim Jagielski     ~PropertySetImpl();
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski // XPropertySet implementation
62*b1cdbd2cSJim Jagielski     virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
63*b1cdbd2cSJim Jagielski         getPropertySetInfo()
64*b1cdbd2cSJim Jagielski         throw ( css::uno::RuntimeException );
65*b1cdbd2cSJim Jagielski     virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
66*b1cdbd2cSJim Jagielski         const css::uno::Any& aValue )
67*b1cdbd2cSJim Jagielski         throw ( css::beans::UnknownPropertyException,
68*b1cdbd2cSJim Jagielski             css::beans::PropertyVetoException,
69*b1cdbd2cSJim Jagielski             css::lang::IllegalArgumentException,
70*b1cdbd2cSJim Jagielski             css::lang::WrappedTargetException,
71*b1cdbd2cSJim Jagielski             css::uno::RuntimeException );
72*b1cdbd2cSJim Jagielski     virtual css::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName )
73*b1cdbd2cSJim Jagielski         throw ( css::beans::UnknownPropertyException,
74*b1cdbd2cSJim Jagielski             css::lang::WrappedTargetException,
75*b1cdbd2cSJim Jagielski             css::uno::RuntimeException );
76*b1cdbd2cSJim Jagielski     virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
77*b1cdbd2cSJim Jagielski         const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener )
78*b1cdbd2cSJim Jagielski         throw ( css::beans::UnknownPropertyException,
79*b1cdbd2cSJim Jagielski             css::lang::WrappedTargetException,
80*b1cdbd2cSJim Jagielski             css::uno::RuntimeException );
81*b1cdbd2cSJim Jagielski     virtual void SAL_CALL removePropertyChangeListener(
82*b1cdbd2cSJim Jagielski         const ::rtl::OUString& aPropertyName,
83*b1cdbd2cSJim Jagielski         const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener )
84*b1cdbd2cSJim Jagielski         throw ( css::beans::UnknownPropertyException,
85*b1cdbd2cSJim Jagielski             css::lang::WrappedTargetException,
86*b1cdbd2cSJim Jagielski             css::uno::RuntimeException );
87*b1cdbd2cSJim Jagielski     virtual void SAL_CALL addVetoableChangeListener(
88*b1cdbd2cSJim Jagielski         const ::rtl::OUString& PropertyName,
89*b1cdbd2cSJim Jagielski         const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener )
90*b1cdbd2cSJim Jagielski         throw ( css::beans::UnknownPropertyException,
91*b1cdbd2cSJim Jagielski             css::lang::WrappedTargetException,
92*b1cdbd2cSJim Jagielski             css::uno::RuntimeException );
93*b1cdbd2cSJim Jagielski     virtual void SAL_CALL removeVetoableChangeListener(
94*b1cdbd2cSJim Jagielski         const ::rtl::OUString& PropertyName,
95*b1cdbd2cSJim Jagielski         const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener )
96*b1cdbd2cSJim Jagielski         throw ( css::beans::UnknownPropertyException,
97*b1cdbd2cSJim Jagielski             css::lang::WrappedTargetException,
98*b1cdbd2cSJim Jagielski             css::uno::RuntimeException );
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski private:
101*b1cdbd2cSJim Jagielski     friend class ScriptInfo;
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski     css::uno::Reference< css::uno::XComponentContext > m_xContext;
104*b1cdbd2cSJim Jagielski     void PropertySetImpl::privateSetPropertyValue( const ::rtl::OUString& aPropertyName, const Any& aValue )
105*b1cdbd2cSJim Jagielski     throw ( beans::UnknownPropertyException, beans::PropertyVetoException,
106*b1cdbd2cSJim Jagielski             lang::IllegalArgumentException, lang::WrappedTargetException,
107*b1cdbd2cSJim Jagielski             RuntimeException );
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski     osl::Mutex m_mutex;
110*b1cdbd2cSJim Jagielski     PropertySet_hash m_propertyMap;
111*b1cdbd2cSJim Jagielski };
112*b1cdbd2cSJim Jagielski 
PropertySetImpl()113*b1cdbd2cSJim Jagielski PropertySetImpl::PropertySetImpl()
114*b1cdbd2cSJim Jagielski {
115*b1cdbd2cSJim Jagielski    OSL_TRACE( "<PropertySetImpl ctor called\n" );
116*b1cdbd2cSJim Jagielski }
117*b1cdbd2cSJim Jagielski 
~PropertySetImpl()118*b1cdbd2cSJim Jagielski PropertySetImpl::~PropertySetImpl()
119*b1cdbd2cSJim Jagielski {
120*b1cdbd2cSJim Jagielski     OSL_TRACE( "<PropertySetImpl dtor called\n>" );
121*b1cdbd2cSJim Jagielski }
122*b1cdbd2cSJim Jagielski 
getPropertySetInfo()123*b1cdbd2cSJim Jagielski Reference< beans::XPropertySetInfo > SAL_CALL PropertySetImpl::getPropertySetInfo( )
124*b1cdbd2cSJim Jagielski     throw ( RuntimeException )
125*b1cdbd2cSJim Jagielski {
126*b1cdbd2cSJim Jagielski     return Reference< beans::XPropertySetInfo > (); // Not supported
127*b1cdbd2cSJim Jagielski }
128*b1cdbd2cSJim Jagielski 
setPropertyValue(const::rtl::OUString & aPropertyName,const Any & aValue)129*b1cdbd2cSJim Jagielski void SAL_CALL PropertySetImpl::setPropertyValue( const ::rtl::OUString& aPropertyName,
130*b1cdbd2cSJim Jagielski     const Any& aValue )
131*b1cdbd2cSJim Jagielski     throw ( beans::UnknownPropertyException, beans::PropertyVetoException,
132*b1cdbd2cSJim Jagielski             lang::IllegalArgumentException, lang::WrappedTargetException,
133*b1cdbd2cSJim Jagielski             RuntimeException )
134*b1cdbd2cSJim Jagielski {
135*b1cdbd2cSJim Jagielski     throw RuntimeException(
136*b1cdbd2cSJim Jagielski         OUSTR( "PropertySetImpl::setPropertyValue: method not supported. Read-only PropertySet" ),
137*b1cdbd2cSJim Jagielski         Reference< XInterface >() );
138*b1cdbd2cSJim Jagielski }
139*b1cdbd2cSJim Jagielski 
privateSetPropertyValue(const::rtl::OUString & aPropertyName,const Any & aValue)140*b1cdbd2cSJim Jagielski void PropertySetImpl::privateSetPropertyValue( const ::rtl::OUString& aPropertyName,
141*b1cdbd2cSJim Jagielski     const Any& aValue )
142*b1cdbd2cSJim Jagielski     throw ( beans::UnknownPropertyException, beans::PropertyVetoException,
143*b1cdbd2cSJim Jagielski             lang::IllegalArgumentException, lang::WrappedTargetException,
144*b1cdbd2cSJim Jagielski             RuntimeException )
145*b1cdbd2cSJim Jagielski {
146*b1cdbd2cSJim Jagielski     ::osl::Guard< osl::Mutex > aGuard( m_mutex );
147*b1cdbd2cSJim Jagielski     m_propertyMap[ aPropertyName ] = aValue;
148*b1cdbd2cSJim Jagielski }
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski //*************************************************************************
getPropertyValue(const::rtl::OUString & PropertyName)151*b1cdbd2cSJim Jagielski Any SAL_CALL PropertySetImpl::getPropertyValue( const ::rtl::OUString& PropertyName )
152*b1cdbd2cSJim Jagielski     throw ( beans::UnknownPropertyException,
153*b1cdbd2cSJim Jagielski             lang::WrappedTargetException, RuntimeException )
154*b1cdbd2cSJim Jagielski {
155*b1cdbd2cSJim Jagielski     if ( m_propertyMap.find( PropertyName ) == m_propertyMap.end() )
156*b1cdbd2cSJim Jagielski     {
157*b1cdbd2cSJim Jagielski         throw RuntimeException(
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski             OUSTR( "PropertySetImpl::getPropertyValue: invalid PropertyName ").concat(
160*b1cdbd2cSJim Jagielski                 PropertyName),
161*b1cdbd2cSJim Jagielski             Reference< XInterface >() );
162*b1cdbd2cSJim Jagielski     }
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski     ::osl::Guard< osl::Mutex > aGuard( m_mutex );
165*b1cdbd2cSJim Jagielski     Any returnValue = m_propertyMap[ PropertyName ];
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski     return returnValue;
168*b1cdbd2cSJim Jagielski }
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski //*************************************************************************
addPropertyChangeListener(const::rtl::OUString & aPropertyName,const Reference<beans::XPropertyChangeListener> & xListener)171*b1cdbd2cSJim Jagielski void SAL_CALL PropertySetImpl::addPropertyChangeListener(
172*b1cdbd2cSJim Jagielski     const ::rtl::OUString& aPropertyName,
173*b1cdbd2cSJim Jagielski     const Reference< beans::XPropertyChangeListener >& xListener )
174*b1cdbd2cSJim Jagielski     throw ( beans::UnknownPropertyException, lang::WrappedTargetException,
175*b1cdbd2cSJim Jagielski             RuntimeException )
176*b1cdbd2cSJim Jagielski {
177*b1cdbd2cSJim Jagielski     throw RuntimeException(
178*b1cdbd2cSJim Jagielski         OUSTR( "PropertySetImpl::addPropertyChangeListener: method not supported" ),
179*b1cdbd2cSJim Jagielski         Reference< XInterface >() );
180*b1cdbd2cSJim Jagielski }
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski //*************************************************************************
removePropertyChangeListener(const::rtl::OUString & aPropertyName,const Reference<beans::XPropertyChangeListener> & aListener)183*b1cdbd2cSJim Jagielski void SAL_CALL PropertySetImpl::removePropertyChangeListener(
184*b1cdbd2cSJim Jagielski     const ::rtl::OUString& aPropertyName,
185*b1cdbd2cSJim Jagielski     const Reference< beans::XPropertyChangeListener >& aListener )
186*b1cdbd2cSJim Jagielski     throw ( beans::UnknownPropertyException, lang::WrappedTargetException,
187*b1cdbd2cSJim Jagielski             RuntimeException )
188*b1cdbd2cSJim Jagielski {
189*b1cdbd2cSJim Jagielski     throw RuntimeException(
190*b1cdbd2cSJim Jagielski         OUSTR( "PropertySetImpl::removePropertyChangeListener: method not supported" ),
191*b1cdbd2cSJim Jagielski         Reference< XInterface >() );
192*b1cdbd2cSJim Jagielski }
193*b1cdbd2cSJim Jagielski 
194*b1cdbd2cSJim Jagielski //*************************************************************************
addVetoableChangeListener(const::rtl::OUString & PropertyName,const Reference<beans::XVetoableChangeListener> & aListener)195*b1cdbd2cSJim Jagielski void SAL_CALL PropertySetImpl::addVetoableChangeListener(
196*b1cdbd2cSJim Jagielski     const ::rtl::OUString& PropertyName,
197*b1cdbd2cSJim Jagielski     const Reference< beans::XVetoableChangeListener >& aListener )
198*b1cdbd2cSJim Jagielski     throw ( beans::UnknownPropertyException, lang::WrappedTargetException,
199*b1cdbd2cSJim Jagielski             RuntimeException )
200*b1cdbd2cSJim Jagielski {
201*b1cdbd2cSJim Jagielski     throw RuntimeException(
202*b1cdbd2cSJim Jagielski         OUSTR( "PropertySetImpl::addVetoableChangeListener: method not supported" ),
203*b1cdbd2cSJim Jagielski         Reference< XInterface >() );
204*b1cdbd2cSJim Jagielski }
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski //*************************************************************************
removeVetoableChangeListener(const::rtl::OUString & PropertyName,const Reference<beans::XVetoableChangeListener> & aListener)207*b1cdbd2cSJim Jagielski void SAL_CALL PropertySetImpl::removeVetoableChangeListener(
208*b1cdbd2cSJim Jagielski     const ::rtl::OUString& PropertyName,
209*b1cdbd2cSJim Jagielski     const Reference< beans::XVetoableChangeListener >& aListener )
210*b1cdbd2cSJim Jagielski     throw ( beans::UnknownPropertyException, lang::WrappedTargetException,
211*b1cdbd2cSJim Jagielski             RuntimeException )
212*b1cdbd2cSJim Jagielski {
213*b1cdbd2cSJim Jagielski     throw RuntimeException(
214*b1cdbd2cSJim Jagielski         OUSTR( "PropertySetImpl::removeVetoableChangeListener: method not supported" ),
215*b1cdbd2cSJim Jagielski         Reference< XInterface >() );
216*b1cdbd2cSJim Jagielski }
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski 
219*b1cdbd2cSJim Jagielski //*************************************************************************
ScriptInfo(const ScriptData & scriptData,sal_Int32 storageID)220*b1cdbd2cSJim Jagielski ScriptInfo::ScriptInfo( const ScriptData & scriptData, sal_Int32 storageID )
221*b1cdbd2cSJim Jagielski         : m_scriptData( scriptData ), m_storageID( storageID )
222*b1cdbd2cSJim Jagielski {
223*b1cdbd2cSJim Jagielski     OSL_TRACE( "< ++++++ ScriptInfo ctor called >\n" );
224*b1cdbd2cSJim Jagielski     OSL_TRACE( "< ++++++ parcelURI=%s>\n",::rtl::OUStringToOString(m_scriptData.parcelURI , RTL_TEXTENCODING_ASCII_US ).pData->buffer );
225*b1cdbd2cSJim Jagielski }
226*b1cdbd2cSJim Jagielski //*************************************************************************
~ScriptInfo()227*b1cdbd2cSJim Jagielski ScriptInfo::~ScriptInfo()
228*b1cdbd2cSJim Jagielski {
229*b1cdbd2cSJim Jagielski     OSL_TRACE( "< ScriptInfo dtor called >\n" );
230*b1cdbd2cSJim Jagielski }
231*b1cdbd2cSJim Jagielski //*************************************************************************
getLogicalName()232*b1cdbd2cSJim Jagielski OUString SAL_CALL ScriptInfo::getLogicalName(  ) throw ( RuntimeException )
233*b1cdbd2cSJim Jagielski {
234*b1cdbd2cSJim Jagielski     OSL_TRACE( "ScriptInfo::getLogicalName() " );
235*b1cdbd2cSJim Jagielski     return m_scriptData.logicalname;
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski 
238*b1cdbd2cSJim Jagielski //*************************************************************************
getDescription()239*b1cdbd2cSJim Jagielski OUString SAL_CALL ScriptInfo::getDescription(  ) throw ( RuntimeException )
240*b1cdbd2cSJim Jagielski {
241*b1cdbd2cSJim Jagielski     OUString rs_desc;
242*b1cdbd2cSJim Jagielski     // TDB need to determine locale here, hardcoded at the moment
243*b1cdbd2cSJim Jagielski     // to english
244*b1cdbd2cSJim Jagielski 
245*b1cdbd2cSJim Jagielski     OUString localeLang = OUString::createFromAscii( "en" );
246*b1cdbd2cSJim Jagielski     strpair_map::const_iterator str_it =
247*b1cdbd2cSJim Jagielski         m_scriptData.locales.find( localeLang );
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski     if( str_it == m_scriptData.locales.end() )
250*b1cdbd2cSJim Jagielski     {
251*b1cdbd2cSJim Jagielski         OSL_TRACE( "No description set in meta-data" );
252*b1cdbd2cSJim Jagielski         return rs_desc;
253*b1cdbd2cSJim Jagielski     }
254*b1cdbd2cSJim Jagielski     rs_desc = str_it->second.second;
255*b1cdbd2cSJim Jagielski     return rs_desc;
256*b1cdbd2cSJim Jagielski }
257*b1cdbd2cSJim Jagielski 
258*b1cdbd2cSJim Jagielski //*************************************************************************
getLanguage()259*b1cdbd2cSJim Jagielski OUString SAL_CALL ScriptInfo::getLanguage(  ) throw ( RuntimeException )
260*b1cdbd2cSJim Jagielski {
261*b1cdbd2cSJim Jagielski     OSL_TRACE( "ScriptInfo::getLanguage() " );
262*b1cdbd2cSJim Jagielski     return m_scriptData.language;
263*b1cdbd2cSJim Jagielski }
264*b1cdbd2cSJim Jagielski 
265*b1cdbd2cSJim Jagielski //*************************************************************************
getFunctionName()266*b1cdbd2cSJim Jagielski OUString SAL_CALL ScriptInfo::getFunctionName(  ) throw ( RuntimeException )
267*b1cdbd2cSJim Jagielski {
268*b1cdbd2cSJim Jagielski     OSL_TRACE( "ScriptInfo::getFunctionName() " );
269*b1cdbd2cSJim Jagielski     return m_scriptData.functionname;
270*b1cdbd2cSJim Jagielski }
271*b1cdbd2cSJim Jagielski 
272*b1cdbd2cSJim Jagielski //*************************************************************************
getParcelURI()273*b1cdbd2cSJim Jagielski OUString SAL_CALL ScriptInfo::getParcelURI(  ) throw ( RuntimeException )
274*b1cdbd2cSJim Jagielski {
275*b1cdbd2cSJim Jagielski     return m_scriptData.parcelURI;
276*b1cdbd2cSJim Jagielski }
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski //*************************************************************************
getLanguageProperties()279*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > SAL_CALL ScriptInfo::getLanguageProperties(  )
280*b1cdbd2cSJim Jagielski     throw ( RuntimeException )
281*b1cdbd2cSJim Jagielski {
282*b1cdbd2cSJim Jagielski     PropertySetImpl* propSetImpl = new PropertySetImpl();
283*b1cdbd2cSJim Jagielski     Reference< beans::XPropertySet > xPropSet = propSetImpl;
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski     props_vec::const_iterator pv_it = m_scriptData.languagedepprops.begin();
286*b1cdbd2cSJim Jagielski     props_vec::const_iterator pv_itend = m_scriptData.languagedepprops.end();
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski     for( ; pv_it != pv_itend; ++pv_it )
289*b1cdbd2cSJim Jagielski     {
290*b1cdbd2cSJim Jagielski         try
291*b1cdbd2cSJim Jagielski         {
292*b1cdbd2cSJim Jagielski             propSetImpl->privateSetPropertyValue( pv_it->first, makeAny( pv_it->second ) );
293*b1cdbd2cSJim Jagielski         }
294*b1cdbd2cSJim Jagielski         catch( Exception& e )
295*b1cdbd2cSJim Jagielski         {
296*b1cdbd2cSJim Jagielski             OUString msg = OUSTR(
297*b1cdbd2cSJim Jagielski                 "ScriptInfo::getLanguage caught exception while setting property," );
298*b1cdbd2cSJim Jagielski             msg = msg.concat( OUSTR( " PropertryName: " ) ).concat( pv_it->first );
299*b1cdbd2cSJim Jagielski             msg = msg.concat( OUSTR( " \nException message is: " ) );
300*b1cdbd2cSJim Jagielski             msg = msg.concat( e.Message );
301*b1cdbd2cSJim Jagielski             throw RuntimeException( msg , Reference< XInterface >() );
302*b1cdbd2cSJim Jagielski         }
303*b1cdbd2cSJim Jagielski     }
304*b1cdbd2cSJim Jagielski 
305*b1cdbd2cSJim Jagielski     return xPropSet;
306*b1cdbd2cSJim Jagielski }
307*b1cdbd2cSJim Jagielski //*************************************************************************
getFileSetNames()308*b1cdbd2cSJim Jagielski css::uno::Sequence< ::rtl::OUString > SAL_CALL ScriptInfo::getFileSetNames()
309*b1cdbd2cSJim Jagielski throw ( css::uno::RuntimeException )
310*b1cdbd2cSJim Jagielski {
311*b1cdbd2cSJim Jagielski     OSL_TRACE("ScriptInfo::getFileSetNames");
312*b1cdbd2cSJim Jagielski     Sequence< OUString > results;
313*b1cdbd2cSJim Jagielski     filesets_map::iterator fsm_it = m_scriptData.filesets.begin();
314*b1cdbd2cSJim Jagielski     filesets_map::iterator fsm_itend = m_scriptData.filesets.end();
315*b1cdbd2cSJim Jagielski     if( fsm_it == fsm_itend )
316*b1cdbd2cSJim Jagielski     {
317*b1cdbd2cSJim Jagielski         OSL_TRACE( "ScriptInfo::getFileSetNames: no filesets" );
318*b1cdbd2cSJim Jagielski         return results;
319*b1cdbd2cSJim Jagielski     }
320*b1cdbd2cSJim Jagielski     results.realloc( m_scriptData.filesets.size() );
321*b1cdbd2cSJim Jagielski     for ( sal_Int32 count = 0; fsm_it != fsm_itend; ++fsm_it )
322*b1cdbd2cSJim Jagielski     {
323*b1cdbd2cSJim Jagielski         OUString fileSetName = fsm_it->first;
324*b1cdbd2cSJim Jagielski         OSL_TRACE( "ScriptInfo::getFileSetNames: adding name %s",
325*b1cdbd2cSJim Jagielski             ::rtl::OUStringToOString( fileSetName,
326*b1cdbd2cSJim Jagielski                 RTL_TEXTENCODING_ASCII_US ).pData->buffer );
327*b1cdbd2cSJim Jagielski         results[ count++ ] = fileSetName;
328*b1cdbd2cSJim Jagielski     }
329*b1cdbd2cSJim Jagielski     return results;
330*b1cdbd2cSJim Jagielski }
331*b1cdbd2cSJim Jagielski //*************************************************************************
332*b1cdbd2cSJim Jagielski css::uno::Sequence< ::rtl::OUString > SAL_CALL
getFilesInFileSet(const::rtl::OUString & fileSetName)333*b1cdbd2cSJim Jagielski ScriptInfo::getFilesInFileSet( const ::rtl::OUString & fileSetName )
334*b1cdbd2cSJim Jagielski throw ( css::uno::RuntimeException )
335*b1cdbd2cSJim Jagielski {
336*b1cdbd2cSJim Jagielski     Sequence< OUString > results;
337*b1cdbd2cSJim Jagielski     filesets_map::iterator fsm_it = m_scriptData.filesets.find( fileSetName );
338*b1cdbd2cSJim Jagielski     filesets_map::iterator fsm_itend = m_scriptData.filesets.end();
339*b1cdbd2cSJim Jagielski     if( fsm_it == fsm_itend )
340*b1cdbd2cSJim Jagielski     {
341*b1cdbd2cSJim Jagielski         OSL_TRACE( "ScriptInfo::getFilesInFileSet: no fileset named %s",
342*b1cdbd2cSJim Jagielski             ::rtl::OUStringToOString( fileSetName,
343*b1cdbd2cSJim Jagielski                 RTL_TEXTENCODING_ASCII_US ).pData->buffer );
344*b1cdbd2cSJim Jagielski         return results;
345*b1cdbd2cSJim Jagielski     }
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski     strpairvec_map files = fsm_it->second.second;
348*b1cdbd2cSJim Jagielski     strpairvec_map::iterator spvm_it = files.begin();
349*b1cdbd2cSJim Jagielski     strpairvec_map::iterator spvm_itend = files.end();
350*b1cdbd2cSJim Jagielski     if( spvm_it == spvm_itend )
351*b1cdbd2cSJim Jagielski     {
352*b1cdbd2cSJim Jagielski         OSL_TRACE( "ScriptInfo::getFilesInFileSet: no files in fileset %s",
353*b1cdbd2cSJim Jagielski             ::rtl::OUStringToOString( fileSetName,
354*b1cdbd2cSJim Jagielski                 RTL_TEXTENCODING_ASCII_US ).pData->buffer );
355*b1cdbd2cSJim Jagielski         return results;
356*b1cdbd2cSJim Jagielski     }
357*b1cdbd2cSJim Jagielski     results.realloc( files.size() );
358*b1cdbd2cSJim Jagielski     for( sal_Int32 count = 0; spvm_it != spvm_itend ; ++spvm_it )
359*b1cdbd2cSJim Jagielski     {
360*b1cdbd2cSJim Jagielski         OUString fileName = spvm_it->first;
361*b1cdbd2cSJim Jagielski         OSL_TRACE( "ScriptInfo::getFilesInFileSet: adding file %s",
362*b1cdbd2cSJim Jagielski             ::rtl::OUStringToOString( fileName,
363*b1cdbd2cSJim Jagielski                 RTL_TEXTENCODING_ASCII_US ).pData->buffer );
364*b1cdbd2cSJim Jagielski         results[ count++ ] = fileName;
365*b1cdbd2cSJim Jagielski     }
366*b1cdbd2cSJim Jagielski     return results;
367*b1cdbd2cSJim Jagielski }
368*b1cdbd2cSJim Jagielski //*************************************************************************
369*b1cdbd2cSJim Jagielski }
370