Commits

Anonymous committed 003c5bc

CWS-TOOLING: integrate CWS evoab2def
2009-05-28 16:00:19 +0200 fs r272412 : don't use createFalse - Evo 2.22 simply hangs when ask for all contacts without a first name. Instead, in the WHERE 0=1 case, simply create an empty result set
2009-05-22 14:25:51 +0200 fs r272193 : #i10000#
2009-05-22 14:25:37 +0200 fs r272192 : oops, ENABLE_EVOAB2 for some platforms only, not generically
2009-05-22 14:19:00 +0200 fs r272191 : #i10000#
2009-05-22 12:42:38 +0200 fs r272183 : when sorting, properly use a syslocale collator, instead of comparing the numerical values of the string's UTF-16 code points
2009-05-20 15:09:00 +0200 fs r272131 : clear/getWarnings: also allowed without cache
2009-05-20 14:11:19 +0200 fs r272128 : removed debug traces
2009-05-20 14:03:31 +0200 fs r272126 : #i55701# +STR_SORT_BY_COL_ONLY
2009-05-20 14:02:29 +0200 fs r272125 : implement sorting
2009-05-20 10:10:19 +0200 fs r272107 : #i10000#
2009-05-19 16:02:17 +0200 fs r272089 : #i10000#
2009-05-19 16:02:02 +0200 fs r272088 : #i55701# strings for new error condition DATA_CANNOT_SELECT_UNFILTERED
2009-05-19 16:01:31 +0200 fs r272087 : #i55701# use DATA_CANNOT_SELECT_UNFILTERED as standardized error code
2009-05-19 15:59:59 +0200 fs r272086 : #i55701# +DATA_CANNOT_SELECT_UNFILTERED
2009-05-19 15:46:12 +0200 fs r272084 : #i55701# recognize the DATA_CANNOT_SELECT_UNFILTERED error condition, and allow filtering in this case, even when the result set is empty
2009-05-19 09:06:50 +0200 fs r272059 : merging changes from CWS dba32b, to prevent future conflicts with upcoming local changes
2009-05-18 21:48:58 +0200 fs r272054 : accessing a non-local unfiltered address book now returns an empty result set, and reports a warning, instead of ungracefully failing
2009-05-18 21:48:42 +0200 fs r272053 : accessing a non-local unfiltered address book now returns an empty result set, and reports a warning, instead of ungracefully failing
2009-05-18 21:47:41 +0200 fs r272052 : +setExternalWarnings
2009-05-18 21:47:12 +0200 fs r272051 : #i55701# when re/loading the form, display any possible warnings
2009-05-18 21:43:26 +0200 fs r272050 : #i55701# implement XWarningsSupplier, exposing the warnings of our result set
2009-05-18 21:42:51 +0200 fs r272049 : #i55701# implement XWarningsSupplier, exposing the warnings of our aggregate RowSet
2009-05-18 17:53:59 +0200 fs r272041 : #i55701# moved the (I)WarningsContainer from dbaccess to connectivity, to be able to use it in the latter module, too
2009-05-18 17:24:10 +0200 fs r272040 : #i55701# properly enable the various Evolution types
2009-05-18 14:52:19 +0200 fs r272024 : #i55701# properly enable the Evolution types
2009-05-18 13:57:10 +0200 fs r272018 : fixed/extended whereAnalysis (column searching still not enabled, as neither LIKE nor = seem to work with my (somewhat older) Evolution version)
2009-05-18 13:56:08 +0200 fs r272017 : extended showParseTree
2009-05-18 13:55:25 +0200 fs r272016 : extended showParseTree
2009-05-18 11:40:16 +0200 fs r272008 : #i55701#
2009-05-18 11:39:02 +0200 fs r272006 : let the PreparedStatement return proper meta data, too
2009-05-18 10:05:37 +0200 fs r271999 : moved the XStatement interface to from OCommonStatement to OStatement - the former class is also the base for other classes which should not have this interface
2009-05-15 21:53:22 +0200 fs r271973 : collectColumnInformation: report invalid meta data as assertion
2009-05-15 21:51:40 +0200 fs r271972 : showParseTree should be const
2009-05-15 21:51:26 +0200 fs r271971 : showParseTree should be const
2009-05-15 21:51:03 +0200 fs r271970 : properly recognize the 'WHERE 0 = 1' clause, this way having proper statement meta data, this way saving much much calls from the DBA framework
2009-05-15 20:29:03 +0200 fs r271969 : cleaned up the mess with the statement classes
2009-05-15 15:51:11 +0200 fs r271944 : let the result set properly init its meta data
2009-05-15 15:29:54 +0200 fs r271939 : proper property implementations for the resultset class
2009-05-15 15:01:31 +0200 fs r271936 : proper property implementations for the statement class
2009-05-08 14:46:33 +0200 fs r271717 : component_foo must be PUBLIC
2009-05-06 09:20:05 +0200 fs r271565 : #i10000# (warnings on unxlngi6)
2009-05-06 09:01:30 +0200 fs r271564 : #i101493#
2009-05-05 23:08:12 +0200 fs r271560 : #i55701# merging the changes from the ancient (CVS-based) CWS evoab2default into this CWS here

Comments (0)

Files changed (98)

connectivity/inc/connectivity/sqlnode.hxx

 	}
 }
 
+namespace rtl
+{
+    class OUStringBuffer;
+}
+
 namespace connectivity
 {
     class OSQLParser;
 
 #if OSL_DEBUG_LEVEL > 0
 			// zeigt den ParseTree mit tabs und linefeeds
-		void showParseTree(::rtl::OUString& rString, sal_uInt32 nLevel=0);
+		void showParseTree( ::rtl::OUString& rString ) const;
+		void showParseTree( ::rtl::OUStringBuffer& _inout_rBuf, sal_uInt32 nLevel ) const;
 #endif
 
 			// GetNodeType gibt den Knotentyp zurueck

connectivity/inc/connectivity/warningscontainer.hxx

+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * 
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: warnings.hxx,v $
+ * $Revision: 1.6 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org.  If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef DBTOOLS_WARNINGSCONTAINER_HXX
+#define DBTOOLS_WARNINGSCONTAINER_HXX
+
+/** ==== begin UNO includes === **/
+#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
+#include <com/sun/star/sdb/SQLContext.hpp>
+/** ==== end UNO includes === **/
+
+#include "connectivity/dbtoolsdllapi.hxx"
+
+//.........................................................................
+namespace dbtools
+{
+//.........................................................................
+
+	//=====================================================================
+	//= IWarningsContainer
+	//=====================================================================
+	class SAL_NO_VTABLE IWarningsContainer
+	{
+	public:
+		virtual void appendWarning(const ::com::sun::star::sdbc::SQLException& _rWarning) = 0;
+		virtual void appendWarning(const ::com::sun::star::sdbc::SQLWarning& _rWarning) = 0;
+		virtual void appendWarning(const ::com::sun::star::sdb::SQLContext& _rContext) = 0;
+	};
+
+    //====================================================================
+    //= WarningsContainer
+    //====================================================================
+    /** helper class for implementing XWarningsSupplier, which mixes own warnings with
+        warnings obtained from an external instance
+    */
+    class OOO_DLLPUBLIC_DBTOOLS WarningsContainer : public IWarningsContainer
+    {
+    private:
+        ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XWarningsSupplier >   m_xExternalWarnings;
+	    ::com::sun::star::uno::Any	                                                    m_aOwnWarnings;
+
+    public:
+        WarningsContainer() { }
+        WarningsContainer( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XWarningsSupplier >& _rxExternalWarnings )
+            :m_xExternalWarnings( _rxExternalWarnings )
+        {
+        }
+        virtual ~WarningsContainer();
+
+        void setExternalWarnings( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XWarningsSupplier >& _rxExternalWarnings )
+        {
+            m_xExternalWarnings = _rxExternalWarnings;
+        }
+
+        // convenience
+        /** appends an SQLWarning instance to the chain
+            @param  _rWarning
+                the warning message
+            @param  _pAsciiSQLState
+                the SQLState of the warning
+            @param  _rxContext
+                the context of the warning
+        */
+        void appendWarning(
+            const ::rtl::OUString& _rWarning,
+            const sal_Char* _pAsciiSQLState,
+            const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContext );
+
+        // IWarningsContainer
+	    virtual void appendWarning(const ::com::sun::star::sdbc::SQLException& _rWarning);
+	    virtual void appendWarning(const ::com::sun::star::sdbc::SQLWarning& _rWarning);
+	    virtual void appendWarning(const ::com::sun::star::sdb::SQLContext& _rContext);
+
+        // XWarningsSupplier equivalents
+        ::com::sun::star::uno::Any SAL_CALL getWarnings(  ) const;
+        void SAL_CALL clearWarnings(  );
+    };
+
+//.........................................................................
+}	// namespace dbtools
+//.........................................................................
+
+#endif // DBTOOLS_WARNINGSCONTAINER_HXX

connectivity/prj/build.lst

 cn  connectivity\source\drivers\mozab               nmake   -   all cn_mozab cn_mozab_bootstrap cn_dbtools cn_inc NULL
 cn  connectivity\source\drivers\kab                 nmake   -   u   cn_kab cn_dbtools cn_inc NULL
 cn  connectivity\source\drivers\macab               nmake   -   u   cn_macab cn_dbtools cn_inc NULL
-cn  connectivity\source\drivers\evoab               nmake   -   u   cn_evoab cn_dbtools cn_file cn_inc NULL
 cn  connectivity\source\drivers\evoab2              nmake   -   u   cn_evoab2 cn_dbtools cn_file cn_inc NULL
 cn  connectivity\source\drivers\calc                nmake   -   all cn_calc cn_file cn_inc NULL
 cn  connectivity\source\drivers\odbcbase            nmake   -   all cn_odbcbase cn_dbtools cn_inc NULL

connectivity/prj/d.lst

 ..\source\drivers\odbc\*.xml %_DEST%\xml%_EXT%\*.xml
 ..\source\drivers\mozab\*.xml %_DEST%\xml%_EXT%\*.xml
 ..\source\drivers\evoab2\*.xml %_DEST%\xml%_EXT%\*.xml
-..\source\drivers\evoab\*.xml %_DEST%\xml%_EXT%\*.xml
 ..\source\drivers\calc\*.xml %_DEST%\xml%_EXT%\*.xml
 ..\source\drivers\mysql\*.xml %_DEST%\xml%_EXT%\*.xml
 ..\%__SRC%\class\*.jar %_DEST%\bin%_EXT%\*.jar

connectivity/source/commontools/dbtools2.cxx

 		Reference< XResultSetMetaData > xMeta( xSuppMeta->getMetaData(), UNO_QUERY_THROW );
 
         sal_Int32 nCount = xMeta->getColumnCount();
+        OSL_ENSURE( nCount != 0, "::dbtools::collectColumnInformation: result set has empty (column-less) meta data!" );
 		for (sal_Int32 i=1; i <= nCount ; ++i)
 		{
 			_rInfo.insert(ColumnInformationMap::value_type(xMeta->getColumnName(i),

connectivity/source/commontools/makefile.mk

         $(SLO)$/filtermanager.obj                       \
         $(SLO)$/parameters.obj							\
         $(SLO)$/ParamterSubstitution.obj                \
-        $(SLO)$/formattedcolumnvalue.obj
+        $(SLO)$/formattedcolumnvalue.obj                \
+        $(SLO)$/warningscontainer.obj
 
 SLOFILES=\
 		$(EXCEPTIONSFILES)								\

connectivity/source/commontools/warningscontainer.cxx

+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * 
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: warnings.cxx,v $
+ * $Revision: 1.5 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org.  If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_connectivity.hxx"
+
+#include "connectivity/warningscontainer.hxx"
+#include "connectivity/dbexception.hxx"
+
+#include <osl/diagnose.h>
+
+//........................................................................
+namespace dbtools
+{
+//........................................................................
+
+    using namespace ::com::sun::star::uno;
+    using namespace ::com::sun::star::sdbc;
+    using namespace ::com::sun::star::sdb;
+
+    //====================================================================
+    //= WarningsContainer
+    //====================================================================
+    //--------------------------------------------------------------------
+    static void lcl_concatWarnings( Any& _rChainLeft, const Any& _rChainRight )
+    {
+	    if ( !_rChainLeft.hasValue() )
+		    _rChainLeft = _rChainRight;
+	    else
+	    {
+		    // to travel the chain by reference (and not by value), we need the getValue ...
+		    // looks like a hack, but the meaning of getValue is documented, and it's the only chance for reference-traveling ....
+
+		    OSL_ENSURE( SQLExceptionInfo( _rChainLeft ).isValid(),
+                "lcl_concatWarnings: invalid warnings chain (this will crash)!" );
+
+		    const SQLException* pChainTravel = static_cast< const SQLException* >( _rChainLeft.getValue() );
+		    SQLExceptionIteratorHelper aReferenceIterHelper( *pChainTravel );
+		    while ( aReferenceIterHelper.hasMoreElements() )
+			    pChainTravel = aReferenceIterHelper.next();
+
+		    // reached the end of the chain, and pChainTravel points to the last element
+		    const_cast< SQLException* >( pChainTravel )->NextException = _rChainRight;
+	    }
+    }
+
+    //--------------------------------------------------------------------
+    WarningsContainer::~WarningsContainer()
+    {
+    }
+
+    //--------------------------------------------------------------------
+    void WarningsContainer::appendWarning(const SQLException& _rWarning)
+    {
+	    lcl_concatWarnings( m_aOwnWarnings, makeAny( _rWarning ) );
+    }
+
+    //--------------------------------------------------------------------
+    void WarningsContainer::appendWarning( const SQLContext& _rContext )
+    {
+	    lcl_concatWarnings( m_aOwnWarnings, makeAny( _rContext ));
+    }
+
+    //--------------------------------------------------------------------
+    void WarningsContainer::appendWarning(const SQLWarning& _rWarning)
+    {
+	    lcl_concatWarnings( m_aOwnWarnings, makeAny( _rWarning ) );
+    }
+
+    //--------------------------------------------------------------------
+    Any SAL_CALL WarningsContainer::getWarnings(  ) const
+    {
+	    Any aAllWarnings;
+        if ( m_xExternalWarnings.is() )
+            aAllWarnings = m_xExternalWarnings->getWarnings();
+
+        if ( m_aOwnWarnings.hasValue() )
+		    lcl_concatWarnings( aAllWarnings, m_aOwnWarnings );
+
+        return aAllWarnings;
+    }
+
+    //--------------------------------------------------------------------
+    void SAL_CALL WarningsContainer::clearWarnings(  )
+    {
+        if ( m_xExternalWarnings.is() )
+            m_xExternalWarnings->clearWarnings();
+        m_aOwnWarnings.clear();
+    }
+
+    //--------------------------------------------------------------------
+    void WarningsContainer::appendWarning( const ::rtl::OUString& _rWarning, const sal_Char* _pAsciiSQLState, const Reference< XInterface >& _rxContext )
+    {
+        appendWarning( SQLWarning( _rWarning, _rxContext, ::rtl::OUString::createFromAscii( _pAsciiSQLState ), 0, Any() ) );
+    }
+
+//........................................................................
+}   // namespace dbtools
+//........................................................................

connectivity/source/drivers/evoab/LCatalog.cxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LCatalog.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_connectivity.hxx"
-
-
-#include "LCatalog.hxx"
-#include "LConnection.hxx"
-#include "LTables.hxx"
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::container;
-
-// -------------------------------------------------------------------------
-using namespace connectivity::evoab;
-// -------------------------------------------------------------------------
-OEvoabCatalog::OEvoabCatalog(OEvoabConnection* _pCon) : file::OFileCatalog(_pCon)
-{
-}
-// -------------------------------------------------------------------------
-void OEvoabCatalog::refreshTables()
-{
-	TStringVector aVector;
-	Sequence< ::rtl::OUString > aTypes;
-	Reference< XResultSet > xResult = m_xMetaData->getTables(Any(),
-		::rtl::OUString::createFromAscii("%"),::rtl::OUString::createFromAscii("%"),aTypes);
-
-	if(xResult.is())
-	{
-		Reference< XRow > xRow(xResult,UNO_QUERY);
-		while(xResult->next())
-			aVector.push_back(xRow->getString(3));
-	}
-	if(m_pTables)
-		m_pTables->reFill(aVector);
-	else
-		m_pTables = new OEvoabTables(m_xMetaData,*this,m_aMutex,aVector);
-}
-// -----------------------------------------------------------------------------
-
-
-

connectivity/source/drivers/evoab/LCatalog.hxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LCatalog.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_EVOAB_LCATALOG_HXX_
-#define _CONNECTIVITY_EVOAB_LCATALOG_HXX_
-
-#include "file/FCatalog.hxx"
-
-namespace connectivity
-{
-	namespace evoab
-	{
-		class OEvoabConnection;
-		class OEvoabCatalog : public file::OFileCatalog
-		{
-	public:
-			virtual void refreshTables();
-
-		public:
-			OEvoabCatalog(OEvoabConnection* _pCon);
-		};
-	}
-}
-#endif // _CONNECTIVITY_EVOAB_LCATALOG_HXX_
-

connectivity/source/drivers/evoab/LColumnAlias.cxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LColumnAlias.cxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_connectivity.hxx"
-#include "LColumnAlias.hxx"
-#include "LDriver.hxx"
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include "LConfigAccess.hxx"
-
-using namespace ::connectivity;
-using namespace ::connectivity::evoab;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-
-static const ::rtl::OUString sProgrammaticNames[] =
-{
-	::rtl::OUString::createFromAscii("FirstName"),
-	::rtl::OUString::createFromAscii("LastName"),
-	::rtl::OUString::createFromAscii("DisplayName"),
-	::rtl::OUString::createFromAscii("NickName"),
-	::rtl::OUString::createFromAscii("PrimaryEmail"),
-	::rtl::OUString::createFromAscii("SecondEmail"),
-	::rtl::OUString::createFromAscii("PreferMailFormat"),
-	::rtl::OUString::createFromAscii("WorkPhone"),
-	::rtl::OUString::createFromAscii("HomePhone"),
-	::rtl::OUString::createFromAscii("FaxNumber"),
-	::rtl::OUString::createFromAscii("PagerNumber"),
-	::rtl::OUString::createFromAscii("CellularNumber"),
-	::rtl::OUString::createFromAscii("HomeAddress"),
-	::rtl::OUString::createFromAscii("HomeAddress2"),
-	::rtl::OUString::createFromAscii("HomeCity"),
-	::rtl::OUString::createFromAscii("HomeState"),
-	::rtl::OUString::createFromAscii("HomeZipCode"),
-	::rtl::OUString::createFromAscii("HomeCountry"),
-	::rtl::OUString::createFromAscii("WorkAddress"),
-	::rtl::OUString::createFromAscii("WorkAddress2"),
-	::rtl::OUString::createFromAscii("WorkCity"),
-	::rtl::OUString::createFromAscii("WorkState"),
-	::rtl::OUString::createFromAscii("WorkZipCode"),
-	::rtl::OUString::createFromAscii("WorkCountry"),
-	::rtl::OUString::createFromAscii("JobTitle"),
-	::rtl::OUString::createFromAscii("Department"),
-	::rtl::OUString::createFromAscii("Company"),
-	::rtl::OUString::createFromAscii("WebPage1"),
-	::rtl::OUString::createFromAscii("WebPage2"),
-	::rtl::OUString::createFromAscii("BirthYear"),
-	::rtl::OUString::createFromAscii("BirthMonth"),
-	::rtl::OUString::createFromAscii("BirthDay"),
-	::rtl::OUString::createFromAscii("Notes")
-};
-//------------------------------------------------------------------------------
-OColumnAlias::OColumnAlias()
-{
-	// Initialise m_aAlias with the default values from sProgrammaticNames.
-	initialise();
-
-	// Initialise m_aAlias map with the default values from sProgrammaticNames.
-	setAliasMap();
-}
-//------------------------------------------------------------------
-OColumnAlias::~OColumnAlias()
-{
-}
-//------------------------------------------------------------------
-void OColumnAlias::initialise()
-{
-    m_aAlias.reserve( END - FIRSTNAME + 1 );
-	for (sal_Int32 i(FIRSTNAME); i < END; ++i)
-	{
-		m_aAlias.push_back(sProgrammaticNames[i]);
-		m_aHeadLineNames.push_back(sProgrammaticNames[i]);
-	}
-
-	return;
-}
-//------------------------------------------------------------------
-void OColumnAlias::setAlias(const ::com::sun::star::uno::Reference<
-                                       ::com::sun::star::lang::XMultiServiceFactory >& _rxORB)
-{
-		OSL_TRACE("OColumnAlias::setAlias()entered");
-
-		// open our driver settings config node
-
-		// the config path for our own driver's settings
-	Reference< XPropertySet > xEvoDriverNode = createDriverConfigNode( _rxORB, OEvoabDriver::getImplementationName_Static() );
-	//Reference< XPropertySet > xMozDriverNode = createDriverConfigNode( _rxORB, mozab::OConnection::getDriverImplementationName() );
-	Reference< XPropertySet > xMozDriverNode = createDriverConfigNode( _rxORB, ::rtl::OUString::createFromAscii ("com.sun.star.comp.sdbc.MozabDriver") );
-	if ( xEvoDriverNode.is() && xMozDriverNode.is() )
-	{
-		try
-		{
-            //=============================================================
-			Reference< XNameAccess > xEvoAliasesNode;
-			Reference< XNameAccess > xMozAliasesNode;
-			xEvoDriverNode->getPropertyValue( ::rtl::OUString::createFromAscii("ColumnAliases") ) >>= xEvoAliasesNode;
-			xMozDriverNode->getPropertyValue( ::rtl::OUString::createFromAscii("ColumnAliases") ) >>= xMozAliasesNode;
-			OSL_ENSURE( xEvoAliasesNode.is(), "OColumnAlias::setAlias: missing the evolution aliases node!" );
-			OSL_ENSURE( xMozAliasesNode.is(), "OColumnAlias::setAlias: missing the mozilla aliases node!" );
-
-			// this is a set of string nodes
-			Sequence< ::rtl::OUString > aColumnProgrammaticNames;
-			//OSL_TRACE("OColumnAlias::setAlias()before xAliasesNode->getElementNames()");
-			if ( xEvoAliasesNode.is() )
-				aColumnProgrammaticNames = xEvoAliasesNode->getElementNames();
-			//OSL_TRACE("OColumnAlias::setAlias()after xAliasesNode->getElementNames()");
-
-            //=============================================================
-			// travel through all the set elements
-			const ::rtl::OUString* pProgrammaticNames = aColumnProgrammaticNames.getConstArray();
-			const ::rtl::OUString* pProgrammaticNamesEnd = pProgrammaticNames + aColumnProgrammaticNames.getLength();
-			::rtl::OUString sAssignedAlias;
-			::rtl::OUString sHeadLineName;
-
-			for ( ; pProgrammaticNames < pProgrammaticNamesEnd; ++pProgrammaticNames )
-			{
-				//OSL_TRACE("OColumnAlias::setAlias()::*pProgrammaticNames = %s\n", ((OUtoCStr(*pProgrammaticNames)) ? (OUtoCStr(*pProgrammaticNames)):("NULL")) );
-				OSL_ENSURE( m_aAliasMap.end() != m_aAliasMap.find( *pProgrammaticNames ),
-					"OColumnAlias::setAlias: found an invalid programmtic name!" );
-					// if this asserts, somebody stored a programmatic name in the configuration
-					// which is not allowed (i.e. not in the list of known programmatics).
-				//OSL_TRACE("OColumnAlias::setAlias()before xAliasesNode->getByName()");
-
-#if OSL_DEBUG_LEVEL > 0
-				sal_Bool bExtractionSuccess =
-#endif
-				xMozAliasesNode->getByName( *pProgrammaticNames) >>= sAssignedAlias;
-				OSL_ENSURE( bExtractionSuccess, "OColumnAlias::setAlias: invalid mozilla config data!" );
-#if OSL_DEBUG_LEVEL > 0
-				bExtractionSuccess =
-#endif
-				xEvoAliasesNode->getByName( *pProgrammaticNames) >>= sHeadLineName;
-				OSL_ENSURE( bExtractionSuccess, "OColumnAlias::setAlias: invalid evolution config data!" );
-				//OSL_TRACE("OColumnAlias::setAlias()after xAliasesNode->getByName()");
-
-				// normalize in case the config data is corrupted
-				// (what we really don't need is an empty alias ...)
-				if ( 0 == sAssignedAlias.getLength() )
-					  sAssignedAlias = *pProgrammaticNames;
-				if ( 0 == sHeadLineName.getLength() )
-					  sHeadLineName = *pProgrammaticNames;
-				//OSL_TRACE("OColumnAlias::setAlias()::sAssignedAlias = %s\n", ((OUtoCStr(sAssignedAlias)) ? (OUtoCStr(sAssignedAlias)):("NULL")) );
-				//OSL_TRACE("OColumnAlias::setAlias()::sHeadLineName = %s\n", ((OUtoCStr(sHeadLineName)) ? (OUtoCStr(sHeadLineName)):("NULL")) );
-
-                //=============================================================
-				// check the value
-				// look up the programmatic indicated by pProgrammaticNames in the known programmatics
-				const ::rtl::OUString* pProgrammatic = sProgrammaticNames + FIRSTNAME;
-				const ::rtl::OUString* pProgrammaticEnd = sProgrammaticNames + END;
-
-				OSL_ENSURE( (sal_Int32)m_aAlias.size() == pProgrammaticEnd - pProgrammatic,
-					"OColumnAlias::setAlias: aliases vector not yet initialized!" );
-
-				// the destination where we want to remember the alias
-				::std::vector< ::rtl::OUString >::iterator aAlias = m_aAlias.begin();
-				::std::vector< ::rtl::OUString >::iterator aHeadLineName = m_aHeadLineNames.begin();
-
-				for ( ; pProgrammatic < pProgrammaticEnd; ++pProgrammatic, ++aAlias, ++aHeadLineName )
-				{
-					//OSL_TRACE("OColumnAlias::setAlias()::*pProgrammatic = %s\n", ((OUtoCStr(*pProgrammatic)) ? (OUtoCStr(*pProgrammatic)):("NULL")) );
-					if ( pProgrammaticNames->equals( *pProgrammatic ) )
-					{
-						// add alias to the vector
-						*aAlias = sAssignedAlias;
-						*aHeadLineName = sHeadLineName;
-						break;
-					}
-				}
-			}
-		}
-		catch( const Exception& )
-		{
-			OSL_ENSURE( sal_False, "OColumnAlias::setAlias: could not read my driver's configuration data!" );
-		}
-	}
-
-	// Initialise m_aAliasMap.
-	setAliasMap();
-
-	return;
-}
-//------------------------------------------------------------------
-const ::std::vector< ::rtl::OUString> & OColumnAlias::getAlias() const
-{
-	return m_aAlias;
-}
-//------------------------------------------------------------------
-const ::std::map< ::rtl::OUString, ::rtl::OUString> & OColumnAlias::getAliasMap() const
-{
-	return m_aAliasMap;
-}
-//------------------------------------------------------------------
-void OColumnAlias::setAliasMap()
-{
-    	// Fill the map with the values of m_aAlias
-        // and the sProgrammaticNames array.
-	for (sal_Int32 i(FIRSTNAME); i < END; ++i) {
-		m_aAliasMap[m_aAlias[i]] = m_aHeadLineNames[i];
-		//OSL_TRACE("OColumnAlias::setAliasMap()::m_aAlias[i] = %s\n", ((OUtoCStr(m_aAlias[i])) ? (OUtoCStr(m_aAlias[i])):("NULL")) );
-		//OSL_TRACE("OColumnAlias::setAliasMap()::m_aAliasMap[m_aAlias[i]] = %s\n", ((OUtoCStr(m_aAliasMap[m_aAlias[i]])) ? (OUtoCStr(m_aAliasMap[m_aAlias[i]])):("NULL")) );
-	}
-
-    	return;
-}
-//------------------------------------------------------------------

connectivity/source/drivers/evoab/LColumnAlias.hxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LColumnAlias.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_EVOAB_LCOLUMNALIAS_HXX_
-#define _CONNECTIVITY_EVOAB_LCOLUMNALIAS_HXX_
-
-#include <unotools/confignode.hxx>
-
-#include <osl/mutex.hxx>
-#include <vector>
-#include <map>
-
-namespace connectivity
-{
-	namespace evoab
-	{
-		typedef enum {
-			FIRSTNAME = 0,
-			LASTNAME,
-			DISPLAYNAME,
-			NICKNAME,
-			PRIMARYEMAIL,
-			SECONDEMAIL,
-			PREFERMAILFORMAT,
-			WORKPHONE,
-			HOMEPHONE,
-			FAXNUMBER,
-			PAGERNUMBER,
-			CELLULARNUMBER,
-			HOMEADDRESS,
-			HOMEADDRESS2,
-			HOMECITY,
-			HOMESTATE,
-			HOMEZIPCODE,
-			HOMECOUNTRY,
-			WORKADDRESS,
-			WORKADDRESS2,
-			WORKCITY,
-			WORKSTATE,
-			WORKZIPCODE,
-			WORKCOUNTRY,
-			JOBTITLE,
-			DEPARTMENT,
-			COMPANY,
-			WEBPAGE1,
-			WEBPAGE2,
-			BIRTHYEAR,
-			BIRTHMONTH,
-			BIRTHDAY,
-			NOTES,
-			END
-		} ProgrammaticName;
-
-		class OColumnAlias
-		{
-			/**
-			 * m_Alias holds aliases for the evolution addressbook
- 			 * column names. This member gets initialised during
-                         * creation of the connection to the driver.
-			 * m_aAlias initialises m_aAliasMap which then can be
-	    		 * used to find the corresponding programmatic name
-			 * when an alias is used as a query attribute. Mozilla
-			 * expects programmatic names from its clients.
-  			 *
-			 * m_aAlias:   vector of aliases used to initialise m_aAliasMap.
-			 * m_AliasMap: map of {alias, programmaticname} pairs.
-			 *
-			 */
-			private:
-				::std::vector< ::rtl::OUString> m_aAlias;
-				::std::vector< ::rtl::OUString> m_aHeadLineNames;
-				::std::map< ::rtl::OUString, ::rtl::OUString> m_aAliasMap; 
-			protected:
-				::osl::Mutex  m_aMutex;
-			public:
-				void initialise(void);
-				const ::std::vector< ::rtl::OUString> & getAlias(void) const;
-				const ::std::map< ::rtl::OUString, ::rtl::OUString> & getAliasMap(void) const;
-				void setAlias(const ::com::sun::star::uno::Reference< 
-                                                    ::com::sun::star::lang::XMultiServiceFactory > &);
-			private:
-				void setAliasMap(void);
-			public:
-				OColumnAlias(void);
-				~OColumnAlias(void);
-		};
-	}
-}
-#endif // _CONNECTIVITY_EVOAB_LCOLUMNALIAS_HXX_

connectivity/source/drivers/evoab/LColumns.cxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LColumns.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_connectivity.hxx"
- 
-#include "LColumns.hxx"
-#include "LTable.hxx"
-#include "connectivity/sdbcx/VColumn.hxx"
-
-using namespace connectivity::evoab;
-using namespace connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::container;
-
-
-sdbcx::ObjectType OEvoabColumns::createObject(const ::rtl::OUString& _rName)
-{
-
-	OEvoabTable* pTable = (OEvoabTable*)m_pTable;
-	::vos::ORef<OSQLColumns> aCols = pTable->getTableColumns();
-	OSQLColumns::Vector::const_iterator aIter = find(aCols->get().begin(),aCols->get().end(),_rName,::comphelper::UStringMixEqual(isCaseSensitive()));
-	sdbcx::ObjectType xRet;
-	if(aIter != aCols->get().end())
-		xRet = sdbcx::ObjectType(*aIter,UNO_QUERY);
-	return xRet;
-}
-// -------------------------------------------------------------------------
-
-

connectivity/source/drivers/evoab/LColumns.hxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LColumns.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_EVOAB_LCOLUMNS_HXX_
-#define _CONNECTIVITY_EVOAB_LCOLUMNS_HXX_
-
-#include "file/FColumns.hxx"
-
-namespace connectivity
-{
-	namespace evoab
-	{
-		class OEvoabColumns : public file::OColumns
-		{
-		protected:
-            virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-		public:
-			OEvoabColumns(file::OFileTable* _pTable,
-							::osl::Mutex& _rMutex,
-							const TStringVector &_rVector
-						 ) : file::OColumns(_pTable,_rMutex,_rVector)
-			{}
-
-		};
-	}
-}
-#endif // _CONNECTIVITY_EVOAB_LCOLUMNS_HXX_
-

connectivity/source/drivers/evoab/LConfigAccess.cxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LConfigAccess.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_connectivity.hxx"
-#include "LConfigAccess.hxx"
-#include "LDriver.hxx"
-#ifndef CONNECTIVITY_EVOAB_DEBUG_HELPER_HXX
-#include "LDebug.hxx"
-#endif
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-
-//.........................................................................
-namespace connectivity
-{
-	namespace evoab
-	{
-		//-----------------------------------------------------------------
-		Reference< XPropertySet > createDriverConfigNode( Reference< XMultiServiceFactory > _rxORB, ::rtl::OUString _sDriverImplementationName )
-		{
-			OSL_TRACE("createDriverConfigNode()entered");
-
-			Reference< XPropertySet > xNode;
-			try
-			{
-                //=============================================================
-				// create the config provider
-				Reference< XMultiServiceFactory > xConfigProvider(
-					_rxORB->createInstance( ::rtl::OUString::createFromAscii( "com.sun.star.configuration.ConfigurationProvider" ) ),
-					UNO_QUERY
-				);
-				OSL_ENSURE( xConfigProvider.is(), "createDriverConfigNode: could not create the config provider!" );
-
-				if ( xConfigProvider.is() )
-				{
-					::rtl::OUString sCompleteNodePath = ::rtl::OUString::createFromAscii ("/org.openoffice.Office.DataAccess/DriverSettings/" );
-					sCompleteNodePath += _sDriverImplementationName;
-					//sCompleteNodePath += OEvoabConnection::getDriverImplementationName();
-					//sCompleteNodePath += ::rtl::OUString::createFromAscii ("com.sun.star.comp.sdbc.MozabDriver");
-					EVO_TRACE_STRING("createDriverConfigNode()::sCompleteNodePath = %s\n", sCompleteNodePath );
-
-                    //=========================================================
-					// arguments for creating the config access
-					Sequence< Any > aArguments(2);
-					// the path to the node to open
-					aArguments[0] <<= PropertyValue(
-						::rtl::OUString::createFromAscii( "nodepath"),
-						0,
-						makeAny( sCompleteNodePath ),
-						PropertyState_DIRECT_VALUE
-					);
-					// the depth: -1 means unlimited
-					aArguments[1] <<= PropertyValue(
-						::rtl::OUString::createFromAscii( "depth"),
-						0,
-						makeAny( (sal_Int32)-1 ),
-						PropertyState_DIRECT_VALUE
-					);
-
-                    //=========================================================
-					// create the access
-					Reference< XInterface > xAccess = xConfigProvider->createInstanceWithArguments(
-						::rtl::OUString::createFromAscii( "com.sun.star.configuration.ConfigurationAccess" ),
-						aArguments
-					);
-					OSL_ENSURE( xAccess.is(), "createDriverConfigNode: invalid access returned (should throw an exception instead)!" );
-
-					xNode = xNode.query( xAccess );
-				}
-			}
-			catch( const Exception& )
-			{
-				OSL_ENSURE( sal_False, "createDriverConfigNode: caught an exception while accessing the driver's config node!" );
-			}
-
-			// outta here
-			return xNode;
-		}
-
-		//-----------------------------------------------------------------
-		namespace
-		{
-			// a private helper to accessing the point where we store the reference
-			// to the factory
-			Reference< XMultiServiceFactory >& accessFactoryStorage( )
-			{
-				static Reference< XMultiServiceFactory > xEvoabServiceFactory;
-				return xEvoabServiceFactory;
-			}
-		}
-
-		//-----------------------------------------------------------------
-		void setEvoabServiceFactory( const Reference< XMultiServiceFactory >& _rxFactory )
-		{
-			accessFactoryStorage( ) = _rxFactory;
-		}
-
-		//-----------------------------------------------------------------
-		const Reference< XMultiServiceFactory >& getEvoabServiceFactory( )
-		{
-			return accessFactoryStorage( );
-		}
-
-		//-----------------------------------------------------------------
-		::rtl::OUString getFullPathExportingCommand( Reference< XMultiServiceFactory > _rxORB )
-		{
-			::rtl::OUString sFullPathExportingCommand;
-
-			//Reference< XMultiServiceFactory > xFactory = getEvoabServiceFactory();
-			//OSL_ENSURE( xFactory.is(), "getPreferredProfileName: invalid service factory!" );
-			OSL_ENSURE( _rxORB.is(), "getFullPathExportingCommand: invalid service factory!" );
-			if ( _rxORB.is() )
-			{
-				try
-				{
-					Reference< XPropertySet > xDriverNode = createDriverConfigNode( _rxORB, OEvoabDriver::getImplementationName_Static() );
-					Reference< XPropertySet > xEvoPrefsNode;
-					if ( xDriverNode.is() )
-						xDriverNode->getPropertyValue( ::rtl::OUString::createFromAscii( "EvolutionPreferences" ) ) >>= xEvoPrefsNode;
-					OSL_ENSURE( xEvoPrefsNode.is(), "getFullPathExportingCommand: could not access the node for the evolution preferences!" );
-					if ( xEvoPrefsNode.is() )
-						xEvoPrefsNode->getPropertyValue( ::rtl::OUString::createFromAscii( "FullPathExportingCommand" ) ) >>= sFullPathExportingCommand;
-				}
-				catch( const Exception& )
-				{
-					OSL_ENSURE( sal_False, "getFullPathExportingCommand: caught an exception!" );
-				}
-			}
-			return sFullPathExportingCommand;
-		}
-	}
-}
-
-//.........................................................................

connectivity/source/drivers/evoab/LConfigAccess.hxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LConfigAccess.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_EVOAB_LCONFIGACCESS_HXX_
-#define _CONNECTIVITY_EVOAB_LCONFIGACCESS_HXX_
-
-// This is the extended version (for use on the SO side of the driver) of MConfigAccess
-// (which is for use on the mozilla side only)
-
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-
-namespace connectivity
-{
-	namespace evoab
-	{
-		::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
-				createDriverConfigNode( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > _rxORB, ::rtl::OUString _sDriverImplementationName );
-		::rtl::OUString getFullPathExportingCommand( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > _rxORB );
-	}
-}
-#endif // _CONNECTIVITY_EVOAB_LCONFIGACCESS_HXX_

connectivity/source/drivers/evoab/LConnection.cxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LConnection.cxx,v $
- * $Revision: 1.12.56.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_connectivity.hxx"
-#include "LConnection.hxx"
-#include "LDatabaseMetaData.hxx"
-#include "LCatalog.hxx"
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <tools/urlobj.hxx>
-#include "LPreparedStatement.hxx"
-#include "LStatement.hxx"
-#include <comphelper/extract.hxx>
-#include <connectivity/dbcharset.hxx>
-#include <connectivity/dbexception.hxx>
-#include <comphelper/processfactory.hxx>
-#include <vos/process.hxx>
-#include <tools/debug.hxx>
-#include "LDebug.hxx"
-#include "diagnose_ex.h"
-#include <comphelper/sequence.hxx>
-#include <connectivity/dbexception.hxx>
-#include "resource/common_res.hrc"
-
-using namespace connectivity::evoab;
-using namespace connectivity::file;
-using namespace vos;
-
-typedef connectivity::file::OConnection  OConnection_B;
-
-//------------------------------------------------------------------------------
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::lang;
-
-::rtl::OUString implGetExceptionMsg( Exception& e, const ::rtl::OUString& aExceptionType_ )
-{
-     ::rtl::OUString aExceptionType = aExceptionType_;
-     if( aExceptionType.getLength() == 0 )
-         aExceptionType = ::rtl::OUString( ::rtl::OUString::createFromAscii("Unknown" ) );
-
-     ::rtl::OUString aTypeLine( ::rtl::OUString::createFromAscii("\nType: " ) );
-     aTypeLine += aExceptionType;
-
-     ::rtl::OUString aMessageLine( ::rtl::OUString::createFromAscii("\nMessage: " ) );
-         aMessageLine += ::rtl::OUString( e.Message );
-
-	 ::rtl::OUString aMsg(aTypeLine);
-     aMsg += aMessageLine;
-         return aMsg;
-}
-
- // Exception type unknown
-::rtl::OUString implGetExceptionMsg( Exception& e )
-{
-         ::rtl::OUString aMsg = implGetExceptionMsg( e, ::rtl::OUString() );
-         return aMsg;
-}
-
-// --------------------------------------------------------------------------------
-OEvoabConnection::OEvoabConnection(OEvoabDriver*	_pDriver) : OConnection(_pDriver)
-	,m_bHeaderLine(sal_True)
-	,m_cFieldDelimiter(',')
-	,m_cStringDelimiter('"')
-	,m_cDecimalDelimiter('.')
-	,m_cThousandDelimiter(' ')
-{
-	// Initialise m_aColumnAlias.
-	m_aColumnAlias.setAlias(_pDriver->getFactory());
-}
-//-----------------------------------------------------------------------------
-OEvoabConnection::~OEvoabConnection()
-{
-}
-
-// XServiceInfo
-// --------------------------------------------------------------------------------
-IMPLEMENT_SERVICE_INFO(OEvoabConnection, "com.sun.star.sdbc.drivers.evoab.Connection", "com.sun.star.sdbc.Connection")
-
-//-----------------------------------------------------------------------------
-void OEvoabConnection::construct(const ::rtl::OUString& url,const Sequence< PropertyValue >& info)  throw(SQLException)
-{
-	osl_incrementInterlockedCount( &m_refCount );
-	EVO_TRACE_STRING("OEvoabConnection::construct()::url = %s\n", url );
-
-
-	::rtl::OUString aCLICommand = getDriver()->getEvoab_CLI_EffectiveCommand();
-	::rtl::OUString aWorkingDirPath = getDriver()->getWorkingDirPath();
-	::rtl::OUString aArg1 = ::rtl::OUString::createFromAscii(OEvoabDriver::getEVOAB_CLI_ARG_LIST_FOLDERS());
-	::rtl::OUString aArg2 = ::rtl::OUString::createFromAscii(OEvoabDriver::getEVOAB_CLI_ARG_OUTPUT_FILE_PREFIX());
-	aArg2 += aWorkingDirPath;
-	aArg2 += getDriver()->getEvoFolderListFileName();
-	OArgumentList aArgs(2,&aArg1,&aArg2);
-
-	EVO_TRACE_STRING("OEvoabConnection::construct()::aCLICommand = %s\n", aCLICommand );
-	EVO_TRACE_STRING("OEvoabConnection::construct()::aWorkingDirPath = %s\n", aWorkingDirPath );
-	EVO_TRACE_STRING("OEvoabConnection::construct()::aArg1 = %s\n", aArg1 );
-	EVO_TRACE_STRING("OEvoabConnection::construct()::aArg2 = %s\n", aArg2 );
-	OProcess aApp( aCLICommand,aWorkingDirPath);
-    OSL_VERIFY_EQUALS(
-        aApp.execute( (OProcess::TProcessOption)(OProcess::TOption_Hidden | OProcess::TOption_Wait | OProcess::TOption_SearchPath),aArgs),
-        OProcess::E_None,
-        "Error at execute evolution-addressbook-export to get VCards");
-
-
-	Sequence<PropertyValue> aDriverParam;
-	::std::vector<PropertyValue> aParam;
-
-	aParam.push_back(PropertyValue(::rtl::OUString::createFromAscii("EnableSQL92Check"), 0, Any(), PropertyState_DIRECT_VALUE));
- 	::dbtools::OCharsetMap aLookupIanaName;
- 	::dbtools::OCharsetMap::const_iterator aLookup = aLookupIanaName.find(RTL_TEXTENCODING_UTF8);
- 	aParam.push_back(PropertyValue(::rtl::OUString::createFromAscii("CharSet"), 0,
- 								   makeAny((*aLookup).getIanaName()), PropertyState_DIRECT_VALUE));
-	aParam.push_back(PropertyValue(::rtl::OUString::createFromAscii("Extension"), 0, makeAny(getDriver()->getFileExt()), PropertyState_DIRECT_VALUE));
-	aParam.push_back(PropertyValue(::rtl::OUString::createFromAscii("HeaderLine"), 0, makeAny(m_bHeaderLine), PropertyState_DIRECT_VALUE));
-	aParam.push_back(PropertyValue(::rtl::OUString::createFromAscii("FieldDelimiter"), 0, makeAny(::rtl::OUString(&m_cFieldDelimiter,1)), PropertyState_DIRECT_VALUE));
-	aParam.push_back(PropertyValue(::rtl::OUString::createFromAscii("StringDelimiter"), 0, makeAny(::rtl::OUString(&m_cStringDelimiter,1)), PropertyState_DIRECT_VALUE));
-	aParam.push_back(PropertyValue(::rtl::OUString::createFromAscii("DecimalDelimiter"), 0, makeAny(::rtl::OUString(&m_cDecimalDelimiter,1)), PropertyState_DIRECT_VALUE));
-	aParam.push_back(PropertyValue(::rtl::OUString::createFromAscii("ThousandDelimiter"), 0, makeAny(::rtl::OUString(&m_cThousandDelimiter,1)), PropertyState_DIRECT_VALUE));
-
-    // build a new parameter sequence from the original parameters, appended by the new parameters from above
-        PropertyValue *pParams = aParam.empty() ? 0 : &aParam[0];
-        aDriverParam = ::comphelper::concatSequences(
-        info,
-        Sequence< PropertyValue >( pParams, aParam.size() )
-    );
-
-	// transform "sdbc:address:evolution" part of URL to "sdbc:flat:file:///..."
-	//
-	sal_Int32 nLen = url.indexOf(':');
-	nLen = url.indexOf(':',nLen+1);
-	::rtl::OUString aAddrbookURI(url.copy(nLen+1));
-	// Get Scheme
-	nLen = aAddrbookURI.indexOf(':');
-	::rtl::OUString aAddrbookScheme;
-	if ( nLen == -1 )
-	{
-		// There isn't any subschema: - but could be just subschema
-		if ( aAddrbookURI.getLength() > 0 )
-		{
-			aAddrbookScheme= aAddrbookURI;
-		}
-		else
-		{
-			OSL_TRACE( "No subschema given!!!\n");
-		    throwGenericSQLException(STR_URI_SYNTAX_ERROR ,*this);
-		}
-	}
-	else
-	{
-		aAddrbookScheme = aAddrbookURI.copy(0, nLen);
-	}
-
-	EVO_TRACE_STRING("OEvoabConnection::construct()::URI = %s\n", aAddrbookURI );
-	EVO_TRACE_STRING("OEvoabConnection::construct()::Scheme = %s\n", aAddrbookScheme );
-
-	//
-	// Now we have a URI convert it to a Evolution CLI flat file URI
-	//
-	// The Mapping being used is:
-	//
-	// * for Evolution
-	//      "sdbc:address:evolution:"        -> "sdbc:flat:file:///(file path generated)
-
-	rtl::OUString aEvoFlatURI;
-	if ( aAddrbookScheme.compareToAscii( OEvoabDriver::getSDBC_SCHEME_EVOLUTION() ) == 0 )
-	{
-		aEvoFlatURI = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "sdbc:flat:" ));
-	}
-
-
-	aEvoFlatURI += getDriver()->getWorkingDirURL();
-	EVO_TRACE_STRING("OEvoabConnection::construct()::m_aEvoFlatURI = %s\n", aEvoFlatURI );
-	//setURL(aEvoFlatURI);
-	m_aEvoFlatURI = aEvoFlatURI;
-
-	osl_decrementInterlockedCount( &m_refCount );
-	OConnection::construct(aEvoFlatURI,aDriverParam);
-}
-// --------------------------------------------------------------------------------
-Reference< XDatabaseMetaData > SAL_CALL OEvoabConnection::getMetaData(  ) throw(SQLException, RuntimeException)
-{
-	::osl::MutexGuard aGuard( m_aMutex );
-	checkDisposed(OConnection_B::rBHelper.bDisposed);
-
-
-	Reference< XDatabaseMetaData > xMetaData = m_xMetaData;
-	if(!xMetaData.is())
-	{
-		xMetaData = new OEvoabDatabaseMetaData(this);
-		m_xMetaData = xMetaData;
-	}
-
-	return xMetaData;
-}
-//------------------------------------------------------------------------------
-::com::sun::star::uno::Reference< XTablesSupplier > OEvoabConnection::createCatalog()
-{
-	::osl::MutexGuard aGuard( m_aMutex );
-	Reference< XTablesSupplier > xTab = m_xCatalog;
-	if(!xTab.is())
-	{
-		OEvoabCatalog *pCat = new OEvoabCatalog(this);
-		xTab = pCat;
-		m_xCatalog = xTab;
-	}
-	return xTab;
-}
-// --------------------------------------------------------------------------------
-Reference< XStatement > SAL_CALL OEvoabConnection::createStatement(  ) throw(SQLException, RuntimeException)
-{
-	::osl::MutexGuard aGuard( m_aMutex );
-	checkDisposed(OConnection_B::rBHelper.bDisposed);
-
-	OEvoabStatement* pStmt = new OEvoabStatement(this);
-
-	Reference< XStatement > xStmt = pStmt;
-    m_aStatements.push_back(WeakReferenceHelper(*pStmt));
-	return xStmt;
-}
-// --------------------------------------------------------------------------------
-Reference< XPreparedStatement > SAL_CALL OEvoabConnection::prepareStatement( const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-{
-	::osl::MutexGuard aGuard( m_aMutex );
-	checkDisposed(OConnection_B::rBHelper.bDisposed);
-
-
-	OEvoabPreparedStatement* pStmt = new OEvoabPreparedStatement(this);
-	Reference< XPreparedStatement > xStmt = pStmt;
-	pStmt->construct(sql);
-
-    m_aStatements.push_back(WeakReferenceHelper(*pStmt));
-	return xStmt;
-}
-// --------------------------------------------------------------------------------
-Reference< XPreparedStatement > SAL_CALL OEvoabConnection::prepareCall( const ::rtl::OUString& /*sql*/ ) throw(SQLException, RuntimeException)
-{
-    ::dbtools::throwFeatureNotImplementedException( "XConnection::prepareCall", *this );
-	return NULL;
-}
-// -------------------------------------------------------------------------

connectivity/source/drivers/evoab/LConnection.hxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LConnection.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_EVOAB_LCONNECTION_HXX_
-#define _CONNECTIVITY_EVOAB_LCONNECTION_HXX_
-
-#include "LDriver.hxx"
-#include "file/FConnection.hxx"
-#include "LColumnAlias.hxx"
-
-namespace connectivity
-{
-	namespace evoab
-	{
-		class OEvoabConnection : public file::OConnection
-		{
-		private:	
-			OColumnAlias	m_aColumnAlias;
-			sal_Bool		m_bHeaderLine; 			// column names in first row
-			sal_Unicode		m_cFieldDelimiter;		// look at the name
-			sal_Unicode		m_cStringDelimiter;		// delimiter for strings m_cStringDelimiter blabla m_cStringDelimiter
-			sal_Unicode		m_cDecimalDelimiter;	// Dezimal-delimiter (Dezimalpoint)
-			sal_Unicode		m_cThousandDelimiter;	// 
-			rtl::OUString	m_aEvoFlatURI;
-
-		public:
-			OEvoabConnection(OEvoabDriver*	_pDriver);
-			virtual ~OEvoabConnection();
-
-			virtual void construct(const ::rtl::OUString& _rUrl,const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rInfo ) throw( ::com::sun::star::sdbc::SQLException);
-
-			// own methods
-			inline const OEvoabDriver*	getDriver()				const { return static_cast< const OEvoabDriver* >( m_pDriver );			}
-			inline sal_Bool			isHeaderLine()				const { return m_bHeaderLine;		}
-			inline sal_Unicode		getFieldDelimiter()			const { return m_cFieldDelimiter;	}
-			inline sal_Unicode		getStringDelimiter()			const { return m_cStringDelimiter;	}
-			inline sal_Unicode		getDecimalDelimiter()			const { return m_cDecimalDelimiter; }
-			inline sal_Unicode		getThousandDelimiter()			const { return m_cThousandDelimiter;}
-			const OColumnAlias& 	getColumnAlias() 				const { return m_aColumnAlias; }
-
-			// XServiceInfo
-			DECLARE_SERVICE_INFO();
-
-			// XConnection
-			virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-			virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier > createCatalog();
-			virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-			virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-			virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-		};
-	}
-}
-#endif // _CONNECTIVITY_EVOAB_LCONNECTION_HXX_

connectivity/source/drivers/evoab/LDatabaseMetaData.cxx

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: LDatabaseMetaData.cxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_connectivity.hxx"
-#include "LDatabaseMetaData.hxx"
-#include "LConnection.hxx"
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <com/sun/star/sdbc/ResultSetType.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/beans/XFastPropertySet.hpp>
-#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbcx/XIndexesSupplier.hpp>
-#include <com/sun/star/ucb/XContentAccess.hpp>
-#ifndef _COM_SUN_STAR_SQLC_XROW_HPP_
-#include <com/sun/star/sdbc/XRow.hpp>
-#endif
-#include <tools/urlobj.hxx>
-#include "FDatabaseMetaDataResultSet.hxx"
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <comphelper/extract.hxx>
-#include <comphelper/types.hxx>
-#include "LFolderList.hxx"
-#include "connectivity/CommonTools.hxx"
-#include <vos/process.hxx>
-#include <osl/process.h>
-#include <tools/debug.hxx>
-#include <map>
-#include <vector>
-
-#ifndef CONNECTIVITY_EVOAB_DEBUG_HELPER_HXX
-#include "LDebug.hxx"
-#endif
-#include "diagnose_ex.h"
-
-using namespace ::comphelper;
-using namespace connectivity;
-using namespace connectivity::evoab;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::ucb;
-using namespace osl;
-using namespace vos;
-
-namespace connectivity
-{
-    namespace evoab
-    {
-        static sal_Int32    const s_nCOLUMN_SIZE = 256;
-        static sal_Int32    const s_nDECIMAL_DIGITS = 0;
-        static sal_Int32    const s_nNULLABLE = 1;
-        static sal_Int32 const s_nCHAR_OCTET_LENGTH = 65535;
-    }
-}
-
-OEvoabDatabaseMetaData::OEvoabDatabaseMetaData(::connectivity::file::OConnection* _pCon) 	:ODatabaseMetaData(_pCon)
-{
-}
-// -------------------------------------------------------------------------
-OEvoabDatabaseMetaData::~OEvoabDatabaseMetaData()
-{
-}
-// -------------------------------------------------------------------------
-Reference< XResultSet > OEvoabDatabaseMetaData::impl_getTypeInfo_throw(  )
-{
-	::osl::MutexGuard aGuard( m_aMutex );
-
-    ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo);
-    Reference< XResultSet > xRef = pResult;
-	static ODatabaseMetaDataResultSet::ORows aRows;
-	if(aRows.empty())
-	{
-		ODatabaseMetaDataResultSet::ORow aRow;
-
-		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
-		aRow.push_back(new ORowSetValueDecorator(::rtl::OUString::createFromAscii("CHAR")));
-		aRow.push_back(new ORowSetValueDecorator(DataType::CHAR));
-		aRow.push_back(new ORowSetValueDecorator((sal_Int32)254));
-		aRow.push_back(ODatabaseMetaDataResultSet::getQuoteValue());
-		aRow.push_back(ODatabaseMetaDataResultSet::getQuoteValue());
-		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
-		aRow.push_back(new ORowSetValueDecorator((sal_Int32)ColumnValue::NULLABLE));
-		aRow.push_back(ODatabaseMetaDataResultSet::get1Value());
-		aRow.push_back(new ORowSetValueDecorator((sal_Int32)ColumnSearch::CHAR));
-		aRow.push_back(ODatabaseMetaDataResultSet::get1Value());
-		aRow.push_back(ODatabaseMetaDataResultSet::get0Value());
-		aRow.push_back(ODatabaseMetaDataResultSet::get0Value());
-		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
-		aRow.push_back(ODatabaseMetaDataResultSet::get0Value());
-		aRow.push_back(ODatabaseMetaDataResultSet::get0Value());
-		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
-		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
-		aRow.push_back(new ORowSetValueDecorator((sal_Int32)10));
-
-		aRows.push_back(aRow);
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("VARCHAR"));
-		aRow[2] = new ORowSetValueDecorator(DataType::VARCHAR);
-		aRow[4] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRow[5] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRows.push_back(aRow);
-
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("LONGVARCHAR"));
-		aRow[2] = new ORowSetValueDecorator(DataType::LONGVARCHAR);
-		aRow[3] = new ORowSetValueDecorator((sal_Int32)65535);
-		aRow[4] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRow[5] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRows.push_back(aRow);
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("DATE"));
-		aRow[2] = new ORowSetValueDecorator(DataType::DATE);
-		aRow[3] = new ORowSetValueDecorator((sal_Int32)10);
-		aRow[4] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRow[5] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRows.push_back(aRow);
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("TIME"));
-		aRow[2] = new ORowSetValueDecorator(DataType::TIME);
-		aRow[3] = new ORowSetValueDecorator((sal_Int32)8);
-		aRow[4] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRow[5] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRows.push_back(aRow);
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("TIMESTAMP"));
-		aRow[2] = new ORowSetValueDecorator(DataType::TIMESTAMP);
-		aRow[3] = new ORowSetValueDecorator((sal_Int32)19);
-		aRow[4] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRow[5] = ODatabaseMetaDataResultSet::getQuoteValue();
-		aRows.push_back(aRow);
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("BOOL"));
-		aRow[2] = new ORowSetValueDecorator(DataType::BIT);
-		aRow[3] = ODatabaseMetaDataResultSet::get1Value();
-		aRow[9] = ODatabaseMetaDataResultSet::getBasicValue();
-		aRows.push_back(aRow);
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("DECIMAL"));
-		aRow[2] = new ORowSetValueDecorator(DataType::DECIMAL);
-		aRow[3] = new ORowSetValueDecorator((sal_Int32)20);
-		aRow[15] = new ORowSetValueDecorator((sal_Int32)15);
-		aRows.push_back(aRow);
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("DOUBLE"));
-		aRow[2] = new ORowSetValueDecorator(DataType::DOUBLE);
-		aRow[3] = new ORowSetValueDecorator((sal_Int32)20);
-		aRow[15] = ODatabaseMetaDataResultSet::get0Value();
-		aRows.push_back(aRow);
-
-		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("NUMERIC"));
-		aRow[2] = new ORowSetValueDecorator(DataType::NUMERIC);
-		aRow[3] = new ORowSetValueDecorator((sal_Int32)20);
-		aRow[15] = new ORowSetValueDecorator((sal_Int32)20);
-		aRows.push_back(aRow);
-	}
-
-	pResult->setRows(aRows);
-	return xRef;
-}
-// -------------------------------------------------------------------------
-Reference< XResultSet > SAL_CALL OEvoabDatabaseMetaData::getColumns(
-	const Any& /*catalog*/, const ::rtl::OUString& /*schemaPattern*/, const ::rtl::OUString& tableNamePattern,
-        const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException)
-{
-	OSL_TRACE("OEvoabDatabaseMetaData::getColumns()::Entered\n");
-	EVO_TRACE_STRING("OEvoabDatabaseMetaData::getColumns()::schemaPattern = %s\n", schemaPattern );
-	EVO_TRACE_STRING("OEvoabDatabaseMetaData::getColumns()::tableNamePattern = %s\n", tableNamePattern );
-	EVO_TRACE_STRING("OEvoabDatabaseMetaData::getColumns()::columnNamePattern = %s\n", columnNamePattern );
-
-	::osl::MutexGuard aGuard( m_aMutex );
-
-	Reference< XTablesSupplier > xTables = m_pConnection->createCatalog();
-	if(!xTables.is())
-		throw SQLException();
-
-	Reference< XNameAccess> xNames = xTables->getTables();
-	if(!xNames.is())
-		throw SQLException();
-
-	ODatabaseMetaDataResultSet::ORows aRows;
-	ODatabaseMetaDataResultSet::ORow aRow(19);
-	aRow[10] = new ORowSetValueDecorator((sal_Int32)10);
-	Sequence< ::rtl::OUString> aTabNames(xNames->getElementNames());
-	const ::rtl::OUString* pTabBegin	= aTabNames.getConstArray();
-	const ::rtl::OUString* pTabEnd		= pTabBegin + aTabNames.getLength();
-	for(;pTabBegin != pTabEnd;++pTabBegin)
-	{
-		if(match(tableNamePattern,*pTabBegin,'\0'))
-		{
-			Reference< XColumnsSupplier> xTable;
-			::cppu::extractInterface(xTable,xNames->getByName(*pTabBegin));
-			aRow[3] = new ORowSetValueDecorator(*pTabBegin);
-
-			Reference< XNameAccess> xColumns = xTable->getColumns();
-			if(!xColumns.is())
-				throw SQLException();
-
-			Sequence< ::rtl::OUString> aColNames(xColumns->getElementNames());
-
-			const ::rtl::OUString* pBegin = aColNames.getConstArray();
-			const ::rtl::OUString* pEnd = pBegin + aColNames.getLength();
-			Reference< XPropertySet> xColumn;
-			for(sal_Int32 i=1;pBegin != pEnd;++pBegin,++i)
-			{
-				if(match(columnNamePattern,*pBegin,'\0'))
-				{
-					aRow[4] = new ORowSetValueDecorator(*pBegin);
-
-					::cppu::extractInterface(xColumn,xColumns->getByName(*pBegin));
-					OSL_ENSURE(xColumn.is(),"Columns contains a column who isn't a fastpropertyset!");
-					aRow[5] = new ORowSetValueDecorator(getINT32(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))));
-					aRow[6] = new ORowSetValueDecorator(getString(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))));
-					aRow[7] = new ORowSetValueDecorator(getINT32(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))));
-					aRow[9] = new ORowSetValueDecorator(getINT32(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))));
-					aRow[11] = new ORowSetValueDecorator(getINT32(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))));
-					aRow[13] = new ORowSetValueDecorator(getString(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))));
-
-					switch((sal_Int32)aRow[5]->getValue())
-					{
-					case DataType::CHAR:
-					case DataType::VARCHAR:
-						aRow[16] = new ORowSetValueDecorator((sal_Int32)254);
-						break;
-					case DataType::LONGVARCHAR:
-						aRow[16] = new ORowSetValueDecorator((sal_Int32)65535);
-						break;
-					default:
-						aRow[16] = new ORowSetValueDecorator((sal_Int32)0);
-					}
-					aRow[17] = new ORowSetValueDecorator(i);
-					switch(sal_Int32(aRow[11]->getValue()))
-					{
-					case ColumnValue::NO_NULLS:
-						aRow[18]  = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("NO"));
-						break;
-					case ColumnValue::NULLABLE:
-						aRow[18]  = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("YES"));
-						break;
-					default:
-						aRow[18]  = new ORowSetValueDecorator(::rtl::OUString());