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