196de5490SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
396de5490SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
496de5490SAndrew Rist * or more contributor license agreements. See the NOTICE file
596de5490SAndrew Rist * distributed with this work for additional information
696de5490SAndrew Rist * regarding copyright ownership. The ASF licenses this file
796de5490SAndrew Rist * to you under the Apache License, Version 2.0 (the
896de5490SAndrew Rist * "License"); you may not use this file except in compliance
996de5490SAndrew Rist * with the License. You may obtain a copy of the License at
1096de5490SAndrew Rist *
1196de5490SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
1296de5490SAndrew Rist *
1396de5490SAndrew Rist * Unless required by applicable law or agreed to in writing,
1496de5490SAndrew Rist * software distributed under the License is distributed on an
1596de5490SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1696de5490SAndrew Rist * KIND, either express or implied. See the License for the
1796de5490SAndrew Rist * specific language governing permissions and limitations
1896de5490SAndrew Rist * under the License.
1996de5490SAndrew Rist *
2096de5490SAndrew Rist *************************************************************/
2196de5490SAndrew Rist
2296de5490SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25*b63233d8Sdamjan #include "precompiled_dbaxml.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir #ifndef _COM_SUN_STAR_PACKAGES_ZIP_ZIPIOEXCEPTION_HPP_
28cdf0e10cSrcweir #include <com/sun/star/packages/zip/ZipIOException.hpp>
29cdf0e10cSrcweir #endif
30cdf0e10cSrcweir #ifndef _COM_SUN_STAR_EMBED_ELEMENTMODES_HPP_
31cdf0e10cSrcweir #include <com/sun/star/embed/ElementModes.hpp>
32cdf0e10cSrcweir #endif
33cdf0e10cSrcweir #ifndef _COM_SUN_STAR_SDB_XOFFICEDATABASEDOCUMENT_HPP_
34cdf0e10cSrcweir #include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp>
35cdf0e10cSrcweir #endif
36cdf0e10cSrcweir #ifndef DBA_XMLFILTER_HXX
37cdf0e10cSrcweir #include "xmlfilter.hxx"
38cdf0e10cSrcweir #endif
39cdf0e10cSrcweir #ifndef _FLT_REGHELPER_HXX_
40cdf0e10cSrcweir #include "flt_reghelper.hxx"
41cdf0e10cSrcweir #endif
42cdf0e10cSrcweir #ifndef _SV_SVAPP_HXX
43cdf0e10cSrcweir #include <vcl/svapp.hxx>
44cdf0e10cSrcweir #endif
45cdf0e10cSrcweir #ifndef _SV_WINDOW_HXX
46cdf0e10cSrcweir #include <vcl/window.hxx>
47cdf0e10cSrcweir #endif
48cdf0e10cSrcweir #ifndef _XMLOFF_XMLNMSPE_HXX
49cdf0e10cSrcweir #include <xmloff/xmlnmspe.hxx>
50cdf0e10cSrcweir #endif
51cdf0e10cSrcweir #ifndef _XMLOFF_XMLSCRIPTI_HXX
52cdf0e10cSrcweir #include <xmloff/xmlscripti.hxx>
53cdf0e10cSrcweir #endif
54cdf0e10cSrcweir #ifndef _XMLOFF_XMLTOKEN_HXX
55cdf0e10cSrcweir #include <xmloff/xmltoken.hxx>
56cdf0e10cSrcweir #endif
57cdf0e10cSrcweir #ifndef _XMLOFF_TEXTIMP_HXX_
58cdf0e10cSrcweir #include <xmloff/txtimp.hxx>
59cdf0e10cSrcweir #endif
60cdf0e10cSrcweir #ifndef _XMLOFF_NMSPMAP_HXX
61cdf0e10cSrcweir #include <xmloff/nmspmap.hxx>
62cdf0e10cSrcweir #endif
63cdf0e10cSrcweir #ifndef _RTL_LOGFILE_HXX_
64cdf0e10cSrcweir #include <rtl/logfile.hxx>
65cdf0e10cSrcweir #endif
66cdf0e10cSrcweir #ifndef _COM_SUN_STAR_XML_SAX_INPUTSOURCE_HPP_
67cdf0e10cSrcweir #include <com/sun/star/xml/sax/InputSource.hpp>
68cdf0e10cSrcweir #endif
69cdf0e10cSrcweir #ifndef _COM_SUN_STAR_XML_SAX_XPARSER_HPP_
70cdf0e10cSrcweir #include <com/sun/star/xml/sax/XParser.hpp>
71cdf0e10cSrcweir #endif
72cdf0e10cSrcweir #ifndef _XMLOFF_PROGRESSBARHELPER_HXX
73cdf0e10cSrcweir #include <xmloff/ProgressBarHelper.hxx>
74cdf0e10cSrcweir #endif
75cdf0e10cSrcweir #ifndef _SFXDOCFILE_HXX //autogen wg. SfxMedium
76cdf0e10cSrcweir #include <sfx2/docfile.hxx>
77cdf0e10cSrcweir #endif
78cdf0e10cSrcweir #ifndef _COM_SUN_STAR_IO_XINPUTSTREAM_HPP_
79cdf0e10cSrcweir #include <com/sun/star/io/XInputStream.hpp>
80cdf0e10cSrcweir #endif
81cdf0e10cSrcweir #ifndef _COM_SUN_STAR_UNO_XNAMINGSERVICE_HPP_
82cdf0e10cSrcweir #include <com/sun/star/uno/XNamingService.hpp>
83cdf0e10cSrcweir #endif
84cdf0e10cSrcweir #ifndef DBA_XMLDATABASE_HXX
85cdf0e10cSrcweir #include "xmlDatabase.hxx"
86cdf0e10cSrcweir #endif
87cdf0e10cSrcweir #ifndef DBA_XMLENUMS_HXX
88cdf0e10cSrcweir #include "xmlEnums.hxx"
89cdf0e10cSrcweir #endif
90cdf0e10cSrcweir #ifndef _URLOBJ_HXX //autogen wg. INetURLObject
91cdf0e10cSrcweir #include <tools/urlobj.hxx>
92cdf0e10cSrcweir #endif
93cdf0e10cSrcweir #ifndef DBACCESS_SHARED_XMLSTRINGS_HRC
94cdf0e10cSrcweir #include "xmlstrings.hrc"
95cdf0e10cSrcweir #endif
96cdf0e10cSrcweir #ifndef _XMLOFF_DOCUMENTSETTINGSCONTEXT_HXX
97cdf0e10cSrcweir #include <xmloff/DocumentSettingsContext.hxx>
98cdf0e10cSrcweir #endif
99cdf0e10cSrcweir #ifndef DBA_XMLSTYLEIMPORT_HXX
100cdf0e10cSrcweir #include "xmlStyleImport.hxx"
101cdf0e10cSrcweir #endif
102cdf0e10cSrcweir #ifndef _XMLOFF_XMLUCONV_HXX
103cdf0e10cSrcweir #include <xmloff/xmluconv.hxx>
104cdf0e10cSrcweir #endif
105cdf0e10cSrcweir #ifndef DBA_XMLHELPER_HXX
106cdf0e10cSrcweir #include "xmlHelper.hxx"
107cdf0e10cSrcweir #endif
108cdf0e10cSrcweir #ifndef _COM_SUN_STAR_UTIL_XMODIFIABLE_HPP_
109cdf0e10cSrcweir #include <com/sun/star/util/XModifiable.hpp>
110cdf0e10cSrcweir #endif
111cdf0e10cSrcweir #include <com/sun/star/frame/XComponentLoader.hpp>
112cdf0e10cSrcweir #include <com/sun/star/frame/FrameSearchFlag.hpp>
113cdf0e10cSrcweir #include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
114cdf0e10cSrcweir #ifndef _SV_SVAPP_HXX //autogen
115cdf0e10cSrcweir #include <vcl/svapp.hxx>
116cdf0e10cSrcweir #endif
117cdf0e10cSrcweir #ifndef _VOS_MUTEX_HXX_
118cdf0e10cSrcweir #include <vos/mutex.hxx>
119cdf0e10cSrcweir #endif
120cdf0e10cSrcweir #include <svtools/sfxecode.hxx>
121cdf0e10cSrcweir #include <unotools/moduleoptions.hxx>
122cdf0e10cSrcweir #ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_
123cdf0e10cSrcweir #include <toolkit/helper/vclunohelper.hxx>
124cdf0e10cSrcweir #endif
125cdf0e10cSrcweir #include <tools/diagnose_ex.h>
126cdf0e10cSrcweir #include <comphelper/namedvaluecollection.hxx>
127cdf0e10cSrcweir #include <comphelper/mimeconfighelper.hxx>
128cdf0e10cSrcweir #include <comphelper/documentconstants.hxx>
129cdf0e10cSrcweir #include <comphelper/uno3.hxx>
130cdf0e10cSrcweir #include <cppuhelper/exc_hlp.hxx>
131cdf0e10cSrcweir #include <osl/thread.hxx>
132cdf0e10cSrcweir #include <connectivity/CommonTools.hxx>
133cdf0e10cSrcweir #include <connectivity/DriversConfig.hxx>
134cdf0e10cSrcweir #include "dsntypes.hxx"
135cdf0e10cSrcweir
136cdf0e10cSrcweir using namespace ::com::sun::star;
137cdf0e10cSrcweir
createRegistryInfo_ODBFilter()138cdf0e10cSrcweir extern "C" void SAL_CALL createRegistryInfo_ODBFilter( )
139cdf0e10cSrcweir {
140cdf0e10cSrcweir static ::dbaxml::OMultiInstanceAutoRegistration< ::dbaxml::ODBFilter > aAutoRegistration;
141cdf0e10cSrcweir }
142cdf0e10cSrcweir //--------------------------------------------------------------------------
143cdf0e10cSrcweir namespace dbaxml
144cdf0e10cSrcweir {
145cdf0e10cSrcweir namespace
146cdf0e10cSrcweir {
147cdf0e10cSrcweir class FastLoader : public ::osl::Thread
148cdf0e10cSrcweir {
149cdf0e10cSrcweir public:
150cdf0e10cSrcweir typedef enum { E_JAVA, E_CALC } StartType;
FastLoader(uno::Reference<lang::XMultiServiceFactory> const & _xFactory,StartType _eType)151cdf0e10cSrcweir FastLoader(uno::Reference< lang::XMultiServiceFactory > const & _xFactory,StartType _eType)
152cdf0e10cSrcweir :m_xFactory(_xFactory)
153cdf0e10cSrcweir ,m_eWhat(_eType)
154cdf0e10cSrcweir {}
155cdf0e10cSrcweir
156cdf0e10cSrcweir protected:
~FastLoader()157cdf0e10cSrcweir virtual ~FastLoader(){}
158cdf0e10cSrcweir
159cdf0e10cSrcweir /// Working method which should be overridden.
160cdf0e10cSrcweir virtual void SAL_CALL run();
161cdf0e10cSrcweir virtual void SAL_CALL onTerminated();
162cdf0e10cSrcweir private:
163cdf0e10cSrcweir uno::Reference< lang::XMultiServiceFactory > m_xFactory;
164cdf0e10cSrcweir StartType m_eWhat;
165cdf0e10cSrcweir };
166cdf0e10cSrcweir
run()167cdf0e10cSrcweir void SAL_CALL FastLoader::run()
168cdf0e10cSrcweir {
169cdf0e10cSrcweir if ( m_eWhat == E_JAVA )
170cdf0e10cSrcweir {
171cdf0e10cSrcweir static bool s_bFirstTime = true;
172cdf0e10cSrcweir if ( s_bFirstTime )
173cdf0e10cSrcweir {
174cdf0e10cSrcweir s_bFirstTime = false;
175cdf0e10cSrcweir try
176cdf0e10cSrcweir {
177cdf0e10cSrcweir ::rtl::Reference< jvmaccess::VirtualMachine > xJVM = ::connectivity::getJavaVM(m_xFactory);
178cdf0e10cSrcweir }
179cdf0e10cSrcweir catch(uno::Exception& ex)
180cdf0e10cSrcweir {
181cdf0e10cSrcweir (void)ex;
182cdf0e10cSrcweir OSL_ASSERT(0);
183cdf0e10cSrcweir }
184cdf0e10cSrcweir } // if ( s_bFirstTime )
185cdf0e10cSrcweir } // if ( m_eWhat == E_JAVA )
186cdf0e10cSrcweir else if ( m_eWhat == E_CALC )
187cdf0e10cSrcweir {
188cdf0e10cSrcweir static bool s_bFirstTime = true;
189cdf0e10cSrcweir if ( s_bFirstTime )
190cdf0e10cSrcweir {
191cdf0e10cSrcweir s_bFirstTime = false;
192cdf0e10cSrcweir try
193cdf0e10cSrcweir {
194cdf0e10cSrcweir uno::Reference<frame::XComponentLoader> xFrameLoad( m_xFactory->createInstance(
195cdf0e10cSrcweir ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop")))
196cdf0e10cSrcweir ,uno::UNO_QUERY);
197cdf0e10cSrcweir const ::rtl::OUString sTarget(RTL_CONSTASCII_USTRINGPARAM("_blank"));
198cdf0e10cSrcweir sal_Int32 nFrameSearchFlag = frame::FrameSearchFlag::TASKS | frame::FrameSearchFlag::CREATE;
199cdf0e10cSrcweir uno::Reference< frame::XFrame> xFrame = uno::Reference< frame::XFrame>(xFrameLoad,uno::UNO_QUERY_THROW)->findFrame(sTarget,nFrameSearchFlag);
200cdf0e10cSrcweir xFrameLoad.set( xFrame,uno::UNO_QUERY);
201cdf0e10cSrcweir
202cdf0e10cSrcweir if ( xFrameLoad.is() )
203cdf0e10cSrcweir {
204cdf0e10cSrcweir uno::Sequence < beans::PropertyValue > aArgs( 3);
205cdf0e10cSrcweir sal_Int32 nLen = 0;
206cdf0e10cSrcweir aArgs[nLen].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AsTemplate"));
207cdf0e10cSrcweir aArgs[nLen++].Value <<= sal_False;
208cdf0e10cSrcweir
209cdf0e10cSrcweir aArgs[nLen].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ReadOnly"));
210cdf0e10cSrcweir aArgs[nLen++].Value <<= sal_True;
211cdf0e10cSrcweir
212cdf0e10cSrcweir aArgs[nLen].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Hidden"));
213cdf0e10cSrcweir aArgs[nLen++].Value <<= sal_True;
214cdf0e10cSrcweir
215cdf0e10cSrcweir ::comphelper::MimeConfigurationHelper aHelper(m_xFactory);
216cdf0e10cSrcweir SvtModuleOptions aModuleOptions;
217cdf0e10cSrcweir uno::Reference< frame::XModel > xModel(xFrameLoad->loadComponentFromURL(
218cdf0e10cSrcweir aModuleOptions.GetFactoryEmptyDocumentURL( aModuleOptions.ClassifyFactoryByServiceName( aHelper.GetDocServiceNameFromMediaType(MIMETYPE_OASIS_OPENDOCUMENT_SPREADSHEET) )),
219cdf0e10cSrcweir ::rtl::OUString(), // empty frame name
220cdf0e10cSrcweir 0,
221cdf0e10cSrcweir aArgs
222cdf0e10cSrcweir ),uno::UNO_QUERY);
223cdf0e10cSrcweir ::comphelper::disposeComponent(xModel);
224cdf0e10cSrcweir }
225cdf0e10cSrcweir }
226cdf0e10cSrcweir catch(uno::Exception& ex)
227cdf0e10cSrcweir {
228cdf0e10cSrcweir (void)ex;
229cdf0e10cSrcweir OSL_ASSERT(0);
230cdf0e10cSrcweir }
231cdf0e10cSrcweir }
232cdf0e10cSrcweir }
233cdf0e10cSrcweir }
onTerminated()234cdf0e10cSrcweir void SAL_CALL FastLoader::onTerminated()
235cdf0e10cSrcweir {
236cdf0e10cSrcweir delete this;
237cdf0e10cSrcweir }
238cdf0e10cSrcweir
239cdf0e10cSrcweir class DatasourceURLListener : public ::cppu::WeakImplHelper1< beans::XPropertyChangeListener >
240cdf0e10cSrcweir {
241cdf0e10cSrcweir uno::Reference< lang::XMultiServiceFactory > m_xFactory;
242cdf0e10cSrcweir ::dbaccess::ODsnTypeCollection m_aTypeCollection;
243cdf0e10cSrcweir DatasourceURLListener(const DatasourceURLListener&);
244cdf0e10cSrcweir void operator =(const DatasourceURLListener&);
245cdf0e10cSrcweir protected:
~DatasourceURLListener()246cdf0e10cSrcweir virtual ~DatasourceURLListener(){}
247cdf0e10cSrcweir public:
DatasourceURLListener(uno::Reference<lang::XMultiServiceFactory> const & _xFactory)248cdf0e10cSrcweir DatasourceURLListener(uno::Reference< lang::XMultiServiceFactory > const & _xFactory) : m_xFactory(_xFactory),m_aTypeCollection(_xFactory){}
249cdf0e10cSrcweir // XPropertyChangeListener
propertyChange(const beans::PropertyChangeEvent & _rEvent)250cdf0e10cSrcweir virtual void SAL_CALL propertyChange( const beans::PropertyChangeEvent& _rEvent ) throw (uno::RuntimeException)
251cdf0e10cSrcweir {
252cdf0e10cSrcweir ::rtl::OUString sURL;
253cdf0e10cSrcweir _rEvent.NewValue >>= sURL;
254cdf0e10cSrcweir FastLoader* pCreatorThread = NULL;
255cdf0e10cSrcweir
256cdf0e10cSrcweir if ( m_aTypeCollection.needsJVM(sURL) )
257cdf0e10cSrcweir {
258cdf0e10cSrcweir pCreatorThread = new FastLoader(m_xFactory,FastLoader::E_JAVA);
259cdf0e10cSrcweir } // if ( m_aTypeCollection.needsJVM(sURL) )
260cdf0e10cSrcweir else if ( sURL.matchIgnoreAsciiCaseAsciiL("sdbc:calc:",10,0) )
261cdf0e10cSrcweir {
262cdf0e10cSrcweir pCreatorThread = new FastLoader(m_xFactory,FastLoader::E_CALC);
263cdf0e10cSrcweir }
264cdf0e10cSrcweir if ( pCreatorThread )
265cdf0e10cSrcweir {
266cdf0e10cSrcweir pCreatorThread->createSuspended();
267cdf0e10cSrcweir pCreatorThread->setPriority(osl_Thread_PriorityBelowNormal);
268cdf0e10cSrcweir pCreatorThread->resume();
269cdf0e10cSrcweir }
270cdf0e10cSrcweir }
271cdf0e10cSrcweir // XEventListener
disposing(const lang::EventObject &)272cdf0e10cSrcweir virtual void SAL_CALL disposing( const lang::EventObject& /*_rSource*/ ) throw (uno::RuntimeException)
273cdf0e10cSrcweir {
274cdf0e10cSrcweir }
275cdf0e10cSrcweir };
276cdf0e10cSrcweir }
277cdf0e10cSrcweir sal_Char __READONLY_DATA sXML_np__db[] = "_db";
278cdf0e10cSrcweir sal_Char __READONLY_DATA sXML_np___db[] = "__db";
279cdf0e10cSrcweir
280cdf0e10cSrcweir using namespace ::com::sun::star::util;
281cdf0e10cSrcweir /// read a component (file + filter version)
ReadThroughComponent(const uno::Reference<XInputStream> & xInputStream,const uno::Reference<XComponent> & xModelComponent,const uno::Reference<XMultiServiceFactory> & rFactory,const uno::Reference<XDocumentHandler> & _xFilter)282cdf0e10cSrcweir sal_Int32 ReadThroughComponent(
283cdf0e10cSrcweir const uno::Reference<XInputStream>& xInputStream,
284cdf0e10cSrcweir const uno::Reference<XComponent>& xModelComponent,
285cdf0e10cSrcweir const uno::Reference<XMultiServiceFactory> & rFactory,
286cdf0e10cSrcweir const uno::Reference< XDocumentHandler >& _xFilter )
287cdf0e10cSrcweir {
288cdf0e10cSrcweir DBG_ASSERT(xInputStream.is(), "input stream missing");
289cdf0e10cSrcweir DBG_ASSERT(xModelComponent.is(), "document missing");
290cdf0e10cSrcweir DBG_ASSERT(rFactory.is(), "factory missing");
291cdf0e10cSrcweir
292cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "dbaxml", "oj", "ReadThroughComponent" );
293cdf0e10cSrcweir
294cdf0e10cSrcweir // prepare ParserInputSrouce
295cdf0e10cSrcweir InputSource aParserInput;
296cdf0e10cSrcweir aParserInput.aInputStream = xInputStream;
297cdf0e10cSrcweir
298cdf0e10cSrcweir // get parser
299cdf0e10cSrcweir uno::Reference< XParser > xParser(
300cdf0e10cSrcweir rFactory->createInstance(
301cdf0e10cSrcweir ::rtl::OUString::createFromAscii("com.sun.star.xml.sax.Parser") ),
302cdf0e10cSrcweir UNO_QUERY );
303cdf0e10cSrcweir DBG_ASSERT( xParser.is(), "Can't create parser" );
304cdf0e10cSrcweir if( !xParser.is() )
305cdf0e10cSrcweir return 1;
306cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_TRACE( aLog, "parser created" );
307cdf0e10cSrcweir
308cdf0e10cSrcweir // get filter
309cdf0e10cSrcweir DBG_ASSERT( _xFilter.is(), "Can't instantiate filter component." );
310cdf0e10cSrcweir if( !_xFilter.is() )
311cdf0e10cSrcweir return 1;
312cdf0e10cSrcweir
313cdf0e10cSrcweir // connect parser and filter
314cdf0e10cSrcweir xParser->setDocumentHandler( _xFilter );
315cdf0e10cSrcweir
316cdf0e10cSrcweir // connect model and filter
317cdf0e10cSrcweir uno::Reference < XImporter > xImporter( _xFilter, UNO_QUERY );
318cdf0e10cSrcweir xImporter->setTargetDocument( xModelComponent );
319cdf0e10cSrcweir
320cdf0e10cSrcweir
321cdf0e10cSrcweir
322cdf0e10cSrcweir // finally, parser the stream
323cdf0e10cSrcweir try
324cdf0e10cSrcweir {
325cdf0e10cSrcweir xParser->parseStream( aParserInput );
326cdf0e10cSrcweir }
327cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1
328cdf0e10cSrcweir catch( SAXParseException& r )
329cdf0e10cSrcweir {
330cdf0e10cSrcweir ByteString aError( "SAX parse exception catched while importing:\n" );
331cdf0e10cSrcweir aError += ByteString( String( r.Message), RTL_TEXTENCODING_ASCII_US );
332cdf0e10cSrcweir aError += ByteString::CreateFromInt32( r.LineNumber );
333cdf0e10cSrcweir aError += ',';
334cdf0e10cSrcweir aError += ByteString::CreateFromInt32( r.ColumnNumber );
335cdf0e10cSrcweir
336cdf0e10cSrcweir DBG_ERROR( aError.GetBuffer() );
337cdf0e10cSrcweir return 1;
338cdf0e10cSrcweir }
339cdf0e10cSrcweir #else
340cdf0e10cSrcweir catch( SAXParseException& )
341cdf0e10cSrcweir {
342cdf0e10cSrcweir return 1;
343cdf0e10cSrcweir }
344cdf0e10cSrcweir #endif
345cdf0e10cSrcweir catch( SAXException& )
346cdf0e10cSrcweir {
347cdf0e10cSrcweir return 1;
348cdf0e10cSrcweir }
349cdf0e10cSrcweir catch( packages::zip::ZipIOException& )
350cdf0e10cSrcweir {
351cdf0e10cSrcweir return ERRCODE_IO_BROKENPACKAGE;
352cdf0e10cSrcweir }
353cdf0e10cSrcweir catch( Exception& )
354cdf0e10cSrcweir {
355cdf0e10cSrcweir DBG_UNHANDLED_EXCEPTION();
356cdf0e10cSrcweir }
357cdf0e10cSrcweir
358cdf0e10cSrcweir // success!
359cdf0e10cSrcweir return 0;
360cdf0e10cSrcweir }
361cdf0e10cSrcweir
362cdf0e10cSrcweir /// read a component (storage version)
ReadThroughComponent(uno::Reference<embed::XStorage> xStorage,const uno::Reference<XComponent> & xModelComponent,const sal_Char * pStreamName,const sal_Char * pCompatibilityStreamName,const uno::Reference<XMultiServiceFactory> & rFactory,const uno::Reference<XDocumentHandler> & _xFilter)363cdf0e10cSrcweir sal_Int32 ReadThroughComponent(
364cdf0e10cSrcweir uno::Reference< embed::XStorage > xStorage,
365cdf0e10cSrcweir const uno::Reference<XComponent>& xModelComponent,
366cdf0e10cSrcweir const sal_Char* pStreamName,
367cdf0e10cSrcweir const sal_Char* pCompatibilityStreamName,
368cdf0e10cSrcweir const uno::Reference<XMultiServiceFactory> & rFactory,
369cdf0e10cSrcweir const uno::Reference< XDocumentHandler >& _xFilter)
370cdf0e10cSrcweir {
371cdf0e10cSrcweir DBG_ASSERT( xStorage.is(), "Need storage!");
372cdf0e10cSrcweir DBG_ASSERT(NULL != pStreamName, "Please, please, give me a name!");
373cdf0e10cSrcweir
374cdf0e10cSrcweir if ( xStorage.is() )
375cdf0e10cSrcweir {
376cdf0e10cSrcweir uno::Reference< io::XStream > xDocStream;
377cdf0e10cSrcweir sal_Bool bEncrypted = sal_False;
378cdf0e10cSrcweir
379cdf0e10cSrcweir try
380cdf0e10cSrcweir {
381cdf0e10cSrcweir // open stream (and set parser input)
382cdf0e10cSrcweir ::rtl::OUString sStreamName = ::rtl::OUString::createFromAscii(pStreamName);
383cdf0e10cSrcweir if ( !xStorage->hasByName( sStreamName ) || !xStorage->isStreamElement( sStreamName ) )
384cdf0e10cSrcweir {
385cdf0e10cSrcweir // stream name not found! Then try the compatibility name.
38607a3d7f1SPedro Giffuni // if no stream can be opened, return immediately with OK signal
387cdf0e10cSrcweir
388cdf0e10cSrcweir // do we even have an alternative name?
389cdf0e10cSrcweir if ( NULL == pCompatibilityStreamName )
390cdf0e10cSrcweir return 0;
391cdf0e10cSrcweir
392cdf0e10cSrcweir // if so, does the stream exist?
393cdf0e10cSrcweir sStreamName = ::rtl::OUString::createFromAscii(pCompatibilityStreamName);
394cdf0e10cSrcweir if ( !xStorage->hasByName( sStreamName ) || !xStorage->isStreamElement( sStreamName ) )
395cdf0e10cSrcweir return 0;
396cdf0e10cSrcweir }
397cdf0e10cSrcweir
398cdf0e10cSrcweir // get input stream
399cdf0e10cSrcweir xDocStream = xStorage->openStreamElement( sStreamName, embed::ElementModes::READ );
400cdf0e10cSrcweir
401cdf0e10cSrcweir uno::Reference< beans::XPropertySet > xProps( xDocStream, uno::UNO_QUERY_THROW );
402cdf0e10cSrcweir uno::Any aAny = xProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Encrypted") ) );
403cdf0e10cSrcweir aAny >>= bEncrypted;
404cdf0e10cSrcweir }
405cdf0e10cSrcweir catch( packages::WrongPasswordException& )
406cdf0e10cSrcweir {
407cdf0e10cSrcweir return ERRCODE_SFX_WRONGPASSWORD;
408cdf0e10cSrcweir }
409cdf0e10cSrcweir catch ( uno::Exception& )
410cdf0e10cSrcweir {
411cdf0e10cSrcweir return 1; // TODO/LATER: error handling
412cdf0e10cSrcweir }
413cdf0e10cSrcweir
414cdf0e10cSrcweir #ifdef TIMELOG
415cdf0e10cSrcweir // if we do profiling, we want to know the stream
416cdf0e10cSrcweir RTL_LOGFILE_TRACE_AUTHOR1( "dbaxml", "oj",
417cdf0e10cSrcweir "ReadThroughComponent : parsing \"%s\"", pStreamName );
418cdf0e10cSrcweir #endif
419cdf0e10cSrcweir
420cdf0e10cSrcweir uno::Reference< XInputStream > xInputStream = xDocStream->getInputStream();
421cdf0e10cSrcweir // read from the stream
422cdf0e10cSrcweir return ReadThroughComponent( xInputStream
423cdf0e10cSrcweir ,xModelComponent
424cdf0e10cSrcweir ,rFactory
425cdf0e10cSrcweir ,_xFilter );
426cdf0e10cSrcweir }
427cdf0e10cSrcweir
428cdf0e10cSrcweir // TODO/LATER: better error handling
429cdf0e10cSrcweir return 1;
430cdf0e10cSrcweir }
431cdf0e10cSrcweir
432cdf0e10cSrcweir // -------------
433cdf0e10cSrcweir // - ODBFilter -
434cdf0e10cSrcweir // -------------
DBG_NAME(ODBFilter)435cdf0e10cSrcweir DBG_NAME(ODBFilter)
436cdf0e10cSrcweir
437cdf0e10cSrcweir ODBFilter::ODBFilter( const uno::Reference< XMultiServiceFactory >& _rxMSF )
438cdf0e10cSrcweir :SvXMLImport(_rxMSF)
439cdf0e10cSrcweir ,m_bNewFormat(false)
440cdf0e10cSrcweir {
441cdf0e10cSrcweir DBG_CTOR(ODBFilter,NULL);
442cdf0e10cSrcweir
443cdf0e10cSrcweir GetMM100UnitConverter().setCoreMeasureUnit(MAP_10TH_MM);
444cdf0e10cSrcweir GetMM100UnitConverter().setXMLMeasureUnit(MAP_CM);
445cdf0e10cSrcweir GetNamespaceMap().Add( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( sXML_np__db) ),
446cdf0e10cSrcweir GetXMLToken(XML_N_DB),
447cdf0e10cSrcweir XML_NAMESPACE_DB );
448cdf0e10cSrcweir
449cdf0e10cSrcweir GetNamespaceMap().Add( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( sXML_np___db) ),
450cdf0e10cSrcweir GetXMLToken(XML_N_DB_OASIS),
451cdf0e10cSrcweir XML_NAMESPACE_DB );
452cdf0e10cSrcweir }
453cdf0e10cSrcweir
454cdf0e10cSrcweir // -----------------------------------------------------------------------------
455cdf0e10cSrcweir
~ODBFilter()456cdf0e10cSrcweir ODBFilter::~ODBFilter() throw()
457cdf0e10cSrcweir {
458cdf0e10cSrcweir
459cdf0e10cSrcweir DBG_DTOR(ODBFilter,NULL);
460cdf0e10cSrcweir }
461cdf0e10cSrcweir // -----------------------------------------------------------------------------
462cdf0e10cSrcweir IMPLEMENT_SERVICE_INFO1_STATIC( ODBFilter, "com.sun.star.comp.sdb.DBFilter", "com.sun.star.document.ImportFilter")
463cdf0e10cSrcweir // -----------------------------------------------------------------------------
filter(const Sequence<PropertyValue> & rDescriptor)464cdf0e10cSrcweir sal_Bool SAL_CALL ODBFilter::filter( const Sequence< PropertyValue >& rDescriptor )
465cdf0e10cSrcweir throw (RuntimeException)
466cdf0e10cSrcweir {
467cdf0e10cSrcweir uno::Reference< ::com::sun::star::awt::XWindow > xWindow;
468cdf0e10cSrcweir {
469cdf0e10cSrcweir ::vos::OGuard aGuard(Application::GetSolarMutex());
470cdf0e10cSrcweir Window* pFocusWindow = Application::GetFocusWindow();
471cdf0e10cSrcweir xWindow = VCLUnoHelper::GetInterface( pFocusWindow );
472cdf0e10cSrcweir if( pFocusWindow )
473cdf0e10cSrcweir pFocusWindow->EnterWait();
474cdf0e10cSrcweir }
475cdf0e10cSrcweir sal_Bool bRet = sal_False;
476cdf0e10cSrcweir
477cdf0e10cSrcweir if ( GetModel().is() )
478cdf0e10cSrcweir bRet = implImport( rDescriptor );
479cdf0e10cSrcweir
480cdf0e10cSrcweir if ( xWindow.is() )
481cdf0e10cSrcweir {
482cdf0e10cSrcweir ::vos::OGuard aGuard(Application::GetSolarMutex());
483cdf0e10cSrcweir Window* pFocusWindow = VCLUnoHelper::GetWindow( xWindow );
484cdf0e10cSrcweir if ( pFocusWindow )
485cdf0e10cSrcweir pFocusWindow->LeaveWait();
486cdf0e10cSrcweir }
487cdf0e10cSrcweir
488cdf0e10cSrcweir
489cdf0e10cSrcweir return bRet;
490cdf0e10cSrcweir }
491cdf0e10cSrcweir // -----------------------------------------------------------------------------
implImport(const Sequence<PropertyValue> & rDescriptor)492cdf0e10cSrcweir sal_Bool ODBFilter::implImport( const Sequence< PropertyValue >& rDescriptor )
493cdf0e10cSrcweir throw (RuntimeException)
494cdf0e10cSrcweir {
495cdf0e10cSrcweir ::rtl::OUString sFileName;
496cdf0e10cSrcweir ::comphelper::NamedValueCollection aMediaDescriptor( rDescriptor );
497cdf0e10cSrcweir if ( aMediaDescriptor.has( "URL" ) )
498cdf0e10cSrcweir sFileName = aMediaDescriptor.getOrDefault( "URL", ::rtl::OUString() );
499cdf0e10cSrcweir if ( !sFileName.getLength() && aMediaDescriptor.has( "FileName" ) )
500cdf0e10cSrcweir sFileName = aMediaDescriptor.getOrDefault( "FileName", sFileName );
501cdf0e10cSrcweir
502cdf0e10cSrcweir OSL_ENSURE( sFileName.getLength(), "ODBFilter::implImport: no URL given!" );
503cdf0e10cSrcweir sal_Bool bRet = ( sFileName.getLength() != 0 );
504cdf0e10cSrcweir
505cdf0e10cSrcweir if ( bRet )
506cdf0e10cSrcweir {
507cdf0e10cSrcweir uno::Reference<XComponent> xCom(GetModel(),UNO_QUERY);
508cdf0e10cSrcweir
509cdf0e10cSrcweir SfxMediumRef pMedium = new SfxMedium(
510cdf0e10cSrcweir sFileName, ( STREAM_READ | STREAM_NOCREATE ), sal_False, 0 );
511cdf0e10cSrcweir uno::Reference< embed::XStorage > xStorage;
512cdf0e10cSrcweir try
513cdf0e10cSrcweir {
514cdf0e10cSrcweir xStorage.set( pMedium->GetStorage( sal_False ), UNO_QUERY_THROW );
515cdf0e10cSrcweir }
516cdf0e10cSrcweir catch( const Exception& )
517cdf0e10cSrcweir {
518cdf0e10cSrcweir Any aError = ::cppu::getCaughtException();
519cdf0e10cSrcweir if ( aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() ) )
520cdf0e10cSrcweir throw;
521cdf0e10cSrcweir throw lang::WrappedTargetRuntimeException( ::rtl::OUString(), *this, aError );
522cdf0e10cSrcweir }
523cdf0e10cSrcweir
524cdf0e10cSrcweir uno::Reference<sdb::XOfficeDatabaseDocument> xOfficeDoc(GetModel(),UNO_QUERY_THROW);
525cdf0e10cSrcweir m_xDataSource.set(xOfficeDoc->getDataSource(),UNO_QUERY_THROW);
526cdf0e10cSrcweir uno::Reference<beans::XPropertyChangeListener> xListener = new DatasourceURLListener(getServiceFactory());
527cdf0e10cSrcweir m_xDataSource->addPropertyChangeListener(PROPERTY_URL,xListener);
528cdf0e10cSrcweir uno::Reference< XNumberFormatsSupplier > xNum(m_xDataSource->getPropertyValue(PROPERTY_NUMBERFORMATSSUPPLIER),UNO_QUERY);
529cdf0e10cSrcweir SetNumberFormatsSupplier(xNum);
530cdf0e10cSrcweir
531cdf0e10cSrcweir uno::Reference<XComponent> xModel(GetModel(),UNO_QUERY);
532cdf0e10cSrcweir sal_Int32 nRet = ReadThroughComponent( xStorage
533cdf0e10cSrcweir ,xModel
534cdf0e10cSrcweir ,"settings.xml"
535cdf0e10cSrcweir ,"Settings.xml"
536cdf0e10cSrcweir ,getServiceFactory()
537cdf0e10cSrcweir ,this
538cdf0e10cSrcweir );
539cdf0e10cSrcweir
540cdf0e10cSrcweir if ( nRet == 0 )
541cdf0e10cSrcweir nRet = ReadThroughComponent( xStorage
542cdf0e10cSrcweir ,xModel
543cdf0e10cSrcweir ,"content.xml"
544cdf0e10cSrcweir ,"Content.xml"
545cdf0e10cSrcweir ,getServiceFactory()
546cdf0e10cSrcweir ,this
547cdf0e10cSrcweir );
548cdf0e10cSrcweir
549cdf0e10cSrcweir bRet = nRet == 0;
550cdf0e10cSrcweir
551cdf0e10cSrcweir if ( bRet )
552cdf0e10cSrcweir {
553cdf0e10cSrcweir uno::Reference< XModifiable > xModi(GetModel(),UNO_QUERY);
554cdf0e10cSrcweir if ( xModi.is() )
555cdf0e10cSrcweir xModi->setModified(sal_False);
556cdf0e10cSrcweir }
557cdf0e10cSrcweir else
558cdf0e10cSrcweir {
559cdf0e10cSrcweir switch( nRet )
560cdf0e10cSrcweir {
561cdf0e10cSrcweir case ERRCODE_IO_BROKENPACKAGE:
562cdf0e10cSrcweir // TODO/LATER: no way to transport the error outside from the filter!
563cdf0e10cSrcweir break;
564cdf0e10cSrcweir default:
565cdf0e10cSrcweir {
566cdf0e10cSrcweir // TODO/LATER: this is completely wrong! Filter code should never call ErrorHandler directly! But for now this is the only way!
567cdf0e10cSrcweir ErrorHandler::HandleError( nRet );
568cdf0e10cSrcweir if( nRet & ERRCODE_WARNING_MASK )
569cdf0e10cSrcweir bRet = sal_True;
570cdf0e10cSrcweir }
571cdf0e10cSrcweir }
572cdf0e10cSrcweir }
573cdf0e10cSrcweir }
574cdf0e10cSrcweir
575cdf0e10cSrcweir return bRet;
576cdf0e10cSrcweir }
577cdf0e10cSrcweir // -----------------------------------------------------------------------------
CreateContext(sal_uInt16 nPrefix,const::rtl::OUString & rLocalName,const uno::Reference<::com::sun::star::xml::sax::XAttributeList> & xAttrList)578cdf0e10cSrcweir SvXMLImportContext* ODBFilter::CreateContext( sal_uInt16 nPrefix,
579cdf0e10cSrcweir const ::rtl::OUString& rLocalName,
580cdf0e10cSrcweir const uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList )
581cdf0e10cSrcweir {
582cdf0e10cSrcweir SvXMLImportContext *pContext = 0;
583cdf0e10cSrcweir
584cdf0e10cSrcweir const SvXMLTokenMap& rTokenMap = GetDocElemTokenMap();
585cdf0e10cSrcweir switch( rTokenMap.Get( nPrefix, rLocalName ) )
586cdf0e10cSrcweir {
587cdf0e10cSrcweir case XML_TOK_DOC_SETTINGS:
588cdf0e10cSrcweir GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
589cdf0e10cSrcweir pContext = new XMLDocumentSettingsContext( *this, nPrefix, rLocalName,xAttrList );
590cdf0e10cSrcweir break;
591cdf0e10cSrcweir case XML_TOK_DOC_DATABASE:
592cdf0e10cSrcweir GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
593cdf0e10cSrcweir pContext = new OXMLDatabase( *this, nPrefix, rLocalName );
594cdf0e10cSrcweir break;
595cdf0e10cSrcweir case XML_TOK_DOC_STYLES:
596cdf0e10cSrcweir GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
597cdf0e10cSrcweir pContext = CreateStylesContext(nPrefix, rLocalName, xAttrList, sal_False);
598cdf0e10cSrcweir break;
599cdf0e10cSrcweir case XML_TOK_DOC_AUTOSTYLES:
600cdf0e10cSrcweir GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
601cdf0e10cSrcweir pContext = CreateStylesContext(nPrefix, rLocalName, xAttrList, sal_True);
602cdf0e10cSrcweir break;
603cdf0e10cSrcweir case XML_TOK_DOC_SCRIPT:
604cdf0e10cSrcweir pContext = CreateScriptContext( rLocalName );
605cdf0e10cSrcweir break;
606cdf0e10cSrcweir }
607cdf0e10cSrcweir
608cdf0e10cSrcweir if ( !pContext )
609cdf0e10cSrcweir pContext = SvXMLImport::CreateContext( nPrefix, rLocalName, xAttrList );
610cdf0e10cSrcweir
611cdf0e10cSrcweir return pContext;
612cdf0e10cSrcweir }
613cdf0e10cSrcweir // -----------------------------------------------------------------------------
SetViewSettings(const Sequence<PropertyValue> & aViewProps)614cdf0e10cSrcweir void ODBFilter::SetViewSettings(const Sequence<PropertyValue>& aViewProps)
615cdf0e10cSrcweir {
616cdf0e10cSrcweir const PropertyValue *pIter = aViewProps.getConstArray();
617cdf0e10cSrcweir const PropertyValue *pEnd = pIter + aViewProps.getLength();
618cdf0e10cSrcweir for (; pIter != pEnd; ++pIter)
619cdf0e10cSrcweir {
620cdf0e10cSrcweir if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "Queries" ) ) )
621cdf0e10cSrcweir {
622cdf0e10cSrcweir fillPropertyMap(pIter->Value,m_aQuerySettings);
623cdf0e10cSrcweir }
624cdf0e10cSrcweir else if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "Tables" ) ) )
625cdf0e10cSrcweir {
626cdf0e10cSrcweir fillPropertyMap(pIter->Value,m_aTablesSettings);
627cdf0e10cSrcweir }
628cdf0e10cSrcweir }
629cdf0e10cSrcweir }
630cdf0e10cSrcweir // -----------------------------------------------------------------------------
SetConfigurationSettings(const Sequence<PropertyValue> & aConfigProps)631cdf0e10cSrcweir void ODBFilter::SetConfigurationSettings(const Sequence<PropertyValue>& aConfigProps)
632cdf0e10cSrcweir {
633cdf0e10cSrcweir const PropertyValue *pIter = aConfigProps.getConstArray();
634cdf0e10cSrcweir const PropertyValue *pEnd = pIter + aConfigProps.getLength();
635cdf0e10cSrcweir for (; pIter != pEnd; ++pIter)
636cdf0e10cSrcweir {
637cdf0e10cSrcweir if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "layout-settings" ) ) )
638cdf0e10cSrcweir {
639cdf0e10cSrcweir Sequence<PropertyValue> aWindows;
640cdf0e10cSrcweir pIter->Value >>= aWindows;
641cdf0e10cSrcweir uno::Reference<XPropertySet> xProp(getDataSource());
642cdf0e10cSrcweir if ( xProp.is() )
643cdf0e10cSrcweir xProp->setPropertyValue(PROPERTY_LAYOUTINFORMATION,makeAny(aWindows));
644cdf0e10cSrcweir }
645cdf0e10cSrcweir }
646cdf0e10cSrcweir }
647cdf0e10cSrcweir // -----------------------------------------------------------------------------
fillPropertyMap(const Any & _rValue,TPropertyNameMap & _rMap)648cdf0e10cSrcweir void ODBFilter::fillPropertyMap(const Any& _rValue,TPropertyNameMap& _rMap)
649cdf0e10cSrcweir {
650cdf0e10cSrcweir Sequence<PropertyValue> aWindows;
651cdf0e10cSrcweir _rValue >>= aWindows;
652cdf0e10cSrcweir const PropertyValue *pIter = aWindows.getConstArray();
653cdf0e10cSrcweir const PropertyValue *pEnd = pIter + aWindows.getLength();
654cdf0e10cSrcweir for (; pIter != pEnd; ++pIter)
655cdf0e10cSrcweir {
656cdf0e10cSrcweir Sequence<PropertyValue> aValue;
657cdf0e10cSrcweir pIter->Value >>= aValue;
658cdf0e10cSrcweir _rMap.insert(TPropertyNameMap::value_type(pIter->Name,aValue));
659cdf0e10cSrcweir }
660cdf0e10cSrcweir
661cdf0e10cSrcweir }
662cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetDocElemTokenMap() const663cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetDocElemTokenMap() const
664cdf0e10cSrcweir {
665cdf0e10cSrcweir if ( !m_pDocElemTokenMap.get() )
666cdf0e10cSrcweir {
667cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
668cdf0e10cSrcweir {
669cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_SETTINGS, XML_TOK_DOC_SETTINGS },
670cdf0e10cSrcweir { XML_NAMESPACE_OOO, XML_SETTINGS, XML_TOK_DOC_SETTINGS },
671cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_STYLES, XML_TOK_DOC_STYLES },
672cdf0e10cSrcweir { XML_NAMESPACE_OOO, XML_STYLES, XML_TOK_DOC_STYLES },
673cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_AUTOMATIC_STYLES, XML_TOK_DOC_AUTOSTYLES },
674cdf0e10cSrcweir { XML_NAMESPACE_OOO, XML_AUTOMATIC_STYLES, XML_TOK_DOC_AUTOSTYLES },
675cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_DATABASE, XML_TOK_DOC_DATABASE },
676cdf0e10cSrcweir { XML_NAMESPACE_OOO, XML_DATABASE, XML_TOK_DOC_DATABASE },
677cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_SCRIPTS, XML_TOK_DOC_SCRIPT },
678cdf0e10cSrcweir XML_TOKEN_MAP_END
679cdf0e10cSrcweir };
680cdf0e10cSrcweir m_pDocElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
681cdf0e10cSrcweir }
682cdf0e10cSrcweir return *m_pDocElemTokenMap;
683cdf0e10cSrcweir }
684cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetDatabaseElemTokenMap() const685cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetDatabaseElemTokenMap() const
686cdf0e10cSrcweir {
687cdf0e10cSrcweir if ( !m_pDatabaseElemTokenMap.get() )
688cdf0e10cSrcweir {
689cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
690cdf0e10cSrcweir {
691cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATASOURCE, XML_TOK_DATASOURCE },
692cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_FORMS, XML_TOK_FORMS},
693cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_REPORTS, XML_TOK_REPORTS},
694cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_QUERIES, XML_TOK_QUERIES},
695cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_TABLES, XML_TOK_TABLES},
696cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_TABLE_REPRESENTATIONS, XML_TOK_TABLES},
697cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_SCHEMA_DEFINITION, XML_TOK_SCHEMA_DEFINITION},
698cdf0e10cSrcweir XML_TOKEN_MAP_END
699cdf0e10cSrcweir };
700cdf0e10cSrcweir m_pDatabaseElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
701cdf0e10cSrcweir }
702cdf0e10cSrcweir return *m_pDatabaseElemTokenMap;
703cdf0e10cSrcweir }
704cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetDataSourceElemTokenMap() const705cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetDataSourceElemTokenMap() const
706cdf0e10cSrcweir {
707cdf0e10cSrcweir if ( !m_pDataSourceElemTokenMap.get() )
708cdf0e10cSrcweir {
709cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
710cdf0e10cSrcweir {
711cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_CONNECTION_RESOURCE, XML_TOK_CONNECTION_RESOURCE},
712cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_SUPPRESS_VERSION_COLUMNS, XML_TOK_SUPPRESS_VERSION_COLUMNS},
713cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_JAVA_DRIVER_CLASS, XML_TOK_JAVA_DRIVER_CLASS},
714cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_EXTENSION, XML_TOK_EXTENSION},
715cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_IS_FIRST_ROW_HEADER_LINE, XML_TOK_IS_FIRST_ROW_HEADER_LINE},
716cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_SHOW_DELETED, XML_TOK_SHOW_DELETED},
717cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_IS_TABLE_NAME_LENGTH_LIMITED, XML_TOK_IS_TABLE_NAME_LENGTH_LIMITED},
718cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_SYSTEM_DRIVER_SETTINGS, XML_TOK_SYSTEM_DRIVER_SETTINGS},
719cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_ENABLE_SQL92_CHECK, XML_TOK_ENABLE_SQL92_CHECK},
720cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_APPEND_TABLE_ALIAS_NAME, XML_TOK_APPEND_TABLE_ALIAS_NAME},
721cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_PARAMETER_NAME_SUBSTITUTION, XML_TOK_PARAMETER_NAME_SUBSTITUTION},
722cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_IGNORE_DRIVER_PRIVILEGES, XML_TOK_IGNORE_DRIVER_PRIVILEGES},
723cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_BOOLEAN_COMPARISON_MODE, XML_TOK_BOOLEAN_COMPARISON_MODE},
724cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_USE_CATALOG, XML_TOK_USE_CATALOG},
725cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_BASE_DN, XML_TOK_BASE_DN},
726cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_MAX_ROW_COUNT, XML_TOK_MAX_ROW_COUNT},
727cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_LOGIN, XML_TOK_LOGIN},
728cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_TABLE_FILTER, XML_TOK_TABLE_FILTER},
729cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_TABLE_TYPE_FILTER, XML_TOK_TABLE_TYPE_FILTER},
730cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_AUTO_INCREMENT, XML_TOK_AUTO_INCREMENT},
731cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DELIMITER, XML_TOK_DELIMITER},
732cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATA_SOURCE_SETTINGS, XML_TOK_DATA_SOURCE_SETTINGS},
733cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_FONT_CHARSET, XML_TOK_FONT_CHARSET},
734cdf0e10cSrcweir // db odf 12
735cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_CONNECTION_DATA, XML_TOK_CONNECTION_DATA},
736cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATABASE_DESCRIPTION, XML_TOK_DATABASE_DESCRIPTION},
737cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_COMPOUND_DATABASE, XML_TOK_COMPOUND_DATABASE},
738cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_DB_HREF},
739cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_MEDIA_TYPE, XML_TOK_MEDIA_TYPE},
740cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_TYPE, XML_TOK_DB_TYPE},
741cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_HOSTNAME, XML_TOK_HOSTNAME},
742cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_PORT, XML_TOK_PORT},
743cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_LOCAL_SOCKET, XML_TOK_LOCAL_SOCKET},
744cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATABASE_NAME, XML_TOK_DATABASE_NAME},
745cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DRIVER_SETTINGS, XML_TOK_DRIVER_SETTINGS},
746cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_JAVA_CLASSPATH, XML_TOK_JAVA_CLASSPATH},
747cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_CHARACTER_SET, XML_TOK_CHARACTER_SET},
748cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_APPLICATION_CONNECTION_SETTINGS,XML_TOK_APPLICATION_CONNECTION_SETTINGS},
749cdf0e10cSrcweir XML_TOKEN_MAP_END
750cdf0e10cSrcweir };
751cdf0e10cSrcweir m_pDataSourceElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
752cdf0e10cSrcweir }
753cdf0e10cSrcweir return *m_pDataSourceElemTokenMap;
754cdf0e10cSrcweir }
755cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetLoginElemTokenMap() const756cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetLoginElemTokenMap() const
757cdf0e10cSrcweir {
758cdf0e10cSrcweir if ( !m_pLoginElemTokenMap.get() )
759cdf0e10cSrcweir {
760cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
761cdf0e10cSrcweir {
762cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_USER_NAME, XML_TOK_USER_NAME},
763cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_IS_PASSWORD_REQUIRED, XML_TOK_IS_PASSWORD_REQUIRED},
764cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_USE_SYSTEM_USER, XML_TOK_USE_SYSTEM_USER},
765cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_LOGIN_TIMEOUT, XML_TOK_LOGIN_TIMEOUT},
766cdf0e10cSrcweir XML_TOKEN_MAP_END
767cdf0e10cSrcweir };
768cdf0e10cSrcweir m_pLoginElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
769cdf0e10cSrcweir }
770cdf0e10cSrcweir return *m_pLoginElemTokenMap;
771cdf0e10cSrcweir }
772cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetDatabaseDescriptionElemTokenMap() const773cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetDatabaseDescriptionElemTokenMap() const
774cdf0e10cSrcweir {
775cdf0e10cSrcweir if ( !m_pDatabaseDescriptionElemTokenMap.get() )
776cdf0e10cSrcweir {
777cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
778cdf0e10cSrcweir {
779cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_FILE_BASED_DATABASE, XML_TOK_FILE_BASED_DATABASE},
780cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_SERVER_DATABASE, XML_TOK_SERVER_DATABASE},
781cdf0e10cSrcweir XML_TOKEN_MAP_END
782cdf0e10cSrcweir };
783cdf0e10cSrcweir m_pDatabaseDescriptionElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
784cdf0e10cSrcweir }
785cdf0e10cSrcweir return *m_pDatabaseDescriptionElemTokenMap;
786cdf0e10cSrcweir }
787cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetDataSourceInfoElemTokenMap() const788cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetDataSourceInfoElemTokenMap() const
789cdf0e10cSrcweir {
790cdf0e10cSrcweir if ( !m_pDataSourceInfoElemTokenMap.get() )
791cdf0e10cSrcweir {
792cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
793cdf0e10cSrcweir {
794cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_ADDITIONAL_COLUMN_STATEMENT,XML_TOK_ADDITIONAL_COLUMN_STATEMENT},
795cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_ROW_RETRIEVING_STATEMENT, XML_TOK_ROW_RETRIEVING_STATEMENT},
796cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_STRING, XML_TOK_STRING},
797cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_FIELD, XML_TOK_FIELD},
798cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DECIMAL, XML_TOK_DECIMAL},
799cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_THOUSAND, XML_TOK_THOUSAND},
800cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATA_SOURCE_SETTING, XML_TOK_DATA_SOURCE_SETTING},
801cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATA_SOURCE_SETTING_VALUE, XML_TOK_DATA_SOURCE_SETTING_VALUE},
802cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATA_SOURCE_SETTING_IS_LIST,XML_TOK_DATA_SOURCE_SETTING_IS_LIST},
803cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATA_SOURCE_SETTING_TYPE, XML_TOK_DATA_SOURCE_SETTING_TYPE},
804cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DATA_SOURCE_SETTING_NAME, XML_TOK_DATA_SOURCE_SETTING_NAME},
805cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_FONT_CHARSET, XML_TOK_FONT_CHARSET},
806cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_ENCODING, XML_TOK_ENCODING},
807cdf0e10cSrcweir XML_TOKEN_MAP_END
808cdf0e10cSrcweir };
809cdf0e10cSrcweir m_pDataSourceInfoElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
810cdf0e10cSrcweir }
811cdf0e10cSrcweir return *m_pDataSourceInfoElemTokenMap;
812cdf0e10cSrcweir }
813cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetDocumentsElemTokenMap() const814cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetDocumentsElemTokenMap() const
815cdf0e10cSrcweir {
816cdf0e10cSrcweir if ( !m_pDocumentsElemTokenMap.get() )
817cdf0e10cSrcweir {
818cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
819cdf0e10cSrcweir {
820cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_COMPONENT, XML_TOK_COMPONENT},
821cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_COMPONENT_COLLECTION, XML_TOK_COMPONENT_COLLECTION},
822cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_QUERY_COLLECTION, XML_TOK_QUERY_COLLECTION},
823cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_QUERY, XML_TOK_QUERY},
824cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_TABLE, XML_TOK_TABLE},
825cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_TABLE_REPRESENTATION, XML_TOK_TABLE},
826cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_COLUMN, XML_TOK_COLUMN},
827cdf0e10cSrcweir XML_TOKEN_MAP_END
828cdf0e10cSrcweir };
829cdf0e10cSrcweir m_pDocumentsElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
830cdf0e10cSrcweir }
831cdf0e10cSrcweir return *m_pDocumentsElemTokenMap;
832cdf0e10cSrcweir }
833cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetComponentElemTokenMap() const834cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetComponentElemTokenMap() const
835cdf0e10cSrcweir {
836cdf0e10cSrcweir if ( !m_pComponentElemTokenMap.get() )
837cdf0e10cSrcweir {
838cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
839cdf0e10cSrcweir {
840cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_HREF },
841cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_TYPE, XML_TOK_TYPE },
842cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_SHOW },
843cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_ACTUATE, XML_TOK_ACTUATE},
844cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_AS_TEMPLATE, XML_TOK_AS_TEMPLATE },
845cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_NAME, XML_TOK_COMPONENT_NAME },
846cdf0e10cSrcweir XML_TOKEN_MAP_END
847cdf0e10cSrcweir };
848cdf0e10cSrcweir m_pComponentElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
849cdf0e10cSrcweir }
850cdf0e10cSrcweir return *m_pComponentElemTokenMap;
851cdf0e10cSrcweir }
852cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetQueryElemTokenMap() const853cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetQueryElemTokenMap() const
854cdf0e10cSrcweir {
855cdf0e10cSrcweir if ( !m_pQueryElemTokenMap.get() )
856cdf0e10cSrcweir {
857cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
858cdf0e10cSrcweir {
859cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_COMMAND, XML_TOK_COMMAND },
860cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_ESCAPE_PROCESSING, XML_TOK_ESCAPE_PROCESSING },
861cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_NAME, XML_TOK_QUERY_NAME },
862cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_FILTER_STATEMENT, XML_TOK_FILTER_STATEMENT },
863cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_ORDER_STATEMENT, XML_TOK_ORDER_STATEMENT },
864cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_CATALOG_NAME, XML_TOK_CATALOG_NAME },
865cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_SCHEMA_NAME, XML_TOK_SCHEMA_NAME },
866cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_STYLE_NAME, XML_TOK_STYLE_NAME},
867cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_APPLY_FILTER, XML_TOK_APPLY_FILTER},
868cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_APPLY_ORDER, XML_TOK_APPLY_ORDER},
869cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_COLUMNS, XML_TOK_COLUMNS},
870cdf0e10cSrcweir XML_TOKEN_MAP_END
871cdf0e10cSrcweir };
872cdf0e10cSrcweir m_pQueryElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
873cdf0e10cSrcweir }
874cdf0e10cSrcweir return *m_pQueryElemTokenMap;
875cdf0e10cSrcweir }
876cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetColumnElemTokenMap() const877cdf0e10cSrcweir const SvXMLTokenMap& ODBFilter::GetColumnElemTokenMap() const
878cdf0e10cSrcweir {
879cdf0e10cSrcweir if ( !m_pColumnElemTokenMap.get() )
880cdf0e10cSrcweir {
881cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
882cdf0e10cSrcweir {
883cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_NAME, XML_TOK_COLUMN_NAME },
884cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_STYLE_NAME, XML_TOK_COLUMN_STYLE_NAME },
885cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_HELP_MESSAGE, XML_TOK_COLUMN_HELP_MESSAGE },
886cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_VISIBILITY, XML_TOK_COLUMN_VISIBILITY },
887cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DEFAULT_VALUE, XML_TOK_COLUMN_DEFAULT_VALUE },
888cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_TYPE_NAME, XML_TOK_COLUMN_TYPE_NAME },
889cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_VISIBLE, XML_TOK_COLUMN_VISIBLE },
890cdf0e10cSrcweir { XML_NAMESPACE_DB, XML_DEFAULT_CELL_STYLE_NAME, XML_TOK_DEFAULT_CELL_STYLE_NAME },
891cdf0e10cSrcweir XML_TOKEN_MAP_END
892cdf0e10cSrcweir };
893cdf0e10cSrcweir m_pColumnElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap ));
894cdf0e10cSrcweir }
895cdf0e10cSrcweir return *m_pColumnElemTokenMap;
896cdf0e10cSrcweir }
897cdf0e10cSrcweir // -----------------------------------------------------------------------------
CreateStylesContext(sal_uInt16 _nPrefix,const::rtl::OUString & rLocalName,const uno::Reference<XAttributeList> & xAttrList,sal_Bool bIsAutoStyle)898cdf0e10cSrcweir SvXMLImportContext* ODBFilter::CreateStylesContext(sal_uInt16 _nPrefix,const ::rtl::OUString& rLocalName,
899cdf0e10cSrcweir const uno::Reference< XAttributeList>& xAttrList, sal_Bool bIsAutoStyle )
900cdf0e10cSrcweir {
901cdf0e10cSrcweir SvXMLImportContext *pContext = NULL;
902cdf0e10cSrcweir if (!pContext)
903cdf0e10cSrcweir {
904cdf0e10cSrcweir pContext = new OTableStylesContext(*this, _nPrefix, rLocalName, xAttrList, bIsAutoStyle);
905cdf0e10cSrcweir if (bIsAutoStyle)
906cdf0e10cSrcweir //xAutoStyles = pContext;
907cdf0e10cSrcweir SetAutoStyles((SvXMLStylesContext*)pContext);
908cdf0e10cSrcweir else
909cdf0e10cSrcweir //xStyles = pContext;
910cdf0e10cSrcweir SetStyles((SvXMLStylesContext*)pContext);
911cdf0e10cSrcweir }
912cdf0e10cSrcweir return pContext;
913cdf0e10cSrcweir }
914cdf0e10cSrcweir // -----------------------------------------------------------------------------
CreateScriptContext(const::rtl::OUString & _rLocalName)915cdf0e10cSrcweir SvXMLImportContext* ODBFilter::CreateScriptContext( const ::rtl::OUString& _rLocalName )
916cdf0e10cSrcweir {
917cdf0e10cSrcweir return new XMLScriptContext( *this, XML_NAMESPACE_OFFICE, _rLocalName, GetModel() );
918cdf0e10cSrcweir }
919cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetTableStylesPropertySetMapper() const920cdf0e10cSrcweir UniReference < XMLPropertySetMapper > ODBFilter::GetTableStylesPropertySetMapper() const
921cdf0e10cSrcweir {
922cdf0e10cSrcweir if ( !m_xTableStylesPropertySetMapper.is() )
923cdf0e10cSrcweir {
924cdf0e10cSrcweir m_xTableStylesPropertySetMapper = OXMLHelper::GetTableStylesPropertySetMapper();
925cdf0e10cSrcweir }
926cdf0e10cSrcweir return m_xTableStylesPropertySetMapper;
927cdf0e10cSrcweir }
928cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetColumnStylesPropertySetMapper() const929cdf0e10cSrcweir UniReference < XMLPropertySetMapper > ODBFilter::GetColumnStylesPropertySetMapper() const
930cdf0e10cSrcweir {
931cdf0e10cSrcweir if ( !m_xColumnStylesPropertySetMapper.is() )
932cdf0e10cSrcweir {
933cdf0e10cSrcweir m_xColumnStylesPropertySetMapper = OXMLHelper::GetColumnStylesPropertySetMapper();
934cdf0e10cSrcweir }
935cdf0e10cSrcweir return m_xColumnStylesPropertySetMapper;
936cdf0e10cSrcweir }
937cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetCellStylesPropertySetMapper() const938cdf0e10cSrcweir UniReference < XMLPropertySetMapper > ODBFilter::GetCellStylesPropertySetMapper() const
939cdf0e10cSrcweir {
940cdf0e10cSrcweir if ( !m_xCellStylesPropertySetMapper.is() )
941cdf0e10cSrcweir {
942cdf0e10cSrcweir m_xCellStylesPropertySetMapper = OXMLHelper::GetCellStylesPropertySetMapper();
943cdf0e10cSrcweir }
944cdf0e10cSrcweir return m_xCellStylesPropertySetMapper;
945cdf0e10cSrcweir }
946cdf0e10cSrcweir // -----------------------------------------------------------------------------
setPropertyInfo()947cdf0e10cSrcweir void ODBFilter::setPropertyInfo()
948cdf0e10cSrcweir {
949cdf0e10cSrcweir Reference<XPropertySet> xDataSource(getDataSource());
950cdf0e10cSrcweir if ( !xDataSource.is() )
951cdf0e10cSrcweir return;
952cdf0e10cSrcweir
953cdf0e10cSrcweir ::connectivity::DriversConfig aDriverConfig(getServiceFactory());
954cdf0e10cSrcweir const ::rtl::OUString sURL = ::comphelper::getString(xDataSource->getPropertyValue(PROPERTY_URL));
955cdf0e10cSrcweir ::comphelper::NamedValueCollection aDataSourceSettings = aDriverConfig.getProperties( sURL );
956cdf0e10cSrcweir
957cdf0e10cSrcweir Sequence<PropertyValue> aInfo;
958cdf0e10cSrcweir if ( !m_aInfoSequence.empty() )
959cdf0e10cSrcweir aInfo = Sequence<PropertyValue>(&(*m_aInfoSequence.begin()),m_aInfoSequence.size());
960cdf0e10cSrcweir aDataSourceSettings.merge( ::comphelper::NamedValueCollection( aInfo ), true );
961cdf0e10cSrcweir
962cdf0e10cSrcweir aDataSourceSettings >>= aInfo;
963cdf0e10cSrcweir if ( aInfo.getLength() )
964cdf0e10cSrcweir {
965cdf0e10cSrcweir try
966cdf0e10cSrcweir {
967cdf0e10cSrcweir xDataSource->setPropertyValue(PROPERTY_INFO,makeAny(aInfo));
968cdf0e10cSrcweir }
969cdf0e10cSrcweir catch(Exception)
970cdf0e10cSrcweir {
971cdf0e10cSrcweir DBG_UNHANDLED_EXCEPTION();
972cdf0e10cSrcweir }
973cdf0e10cSrcweir }
974cdf0e10cSrcweir }
975cdf0e10cSrcweir // -----------------------------------------------------------------------------
976cdf0e10cSrcweir }// dbaxml
977cdf0e10cSrcweir // -----------------------------------------------------------------------------
978