xref: /AOO41X/main/connectivity/source/drivers/evoab2/NDatabaseMetaData.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir  /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_connectivity.hxx"
30*cdf0e10cSrcweir #include "NDatabaseMetaData.hxx"
31*cdf0e10cSrcweir #include <com/sun/star/sdbc/DataType.hpp>
32*cdf0e10cSrcweir #include <com/sun/star/sdbc/ResultSetType.hpp>
33*cdf0e10cSrcweir #include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
34*cdf0e10cSrcweir #include <com/sun/star/sdbc/TransactionIsolation.hpp>
35*cdf0e10cSrcweir #include <connectivity/dbexception.hxx>
36*cdf0e10cSrcweir #include <connectivity/FValue.hxx>
37*cdf0e10cSrcweir #include <com/sun/star/sdbc/ColumnValue.hpp>
38*cdf0e10cSrcweir #include <com/sun/star/sdbc/ColumnSearch.hpp>
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir #include <vector>
41*cdf0e10cSrcweir #include <string.h>
42*cdf0e10cSrcweir #include "EApi.h"
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 0
45*cdf0e10cSrcweir # define OUtoCStr( x ) ( ::rtl::OUStringToOString ( (x), RTL_TEXTENCODING_ASCII_US).getStr())
46*cdf0e10cSrcweir #else /* OSL_DEBUG_LEVEL */
47*cdf0e10cSrcweir # define OUtoCStr( x ) ("dummy")
48*cdf0e10cSrcweir #endif /* OSL_DEBUG_LEVEL */
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir using namespace connectivity::evoab;
51*cdf0e10cSrcweir using namespace connectivity;
52*cdf0e10cSrcweir using namespace com::sun::star::uno;
53*cdf0e10cSrcweir using namespace com::sun::star::lang;
54*cdf0e10cSrcweir using namespace com::sun::star::beans;
55*cdf0e10cSrcweir using namespace com::sun::star::sdbc;
56*cdf0e10cSrcweir using namespace com::sun::star::sdbcx;
57*cdf0e10cSrcweir 
58*cdf0e10cSrcweir 
59*cdf0e10cSrcweir namespace connectivity
60*cdf0e10cSrcweir {
61*cdf0e10cSrcweir 	namespace evoab
62*cdf0e10cSrcweir 	{
63*cdf0e10cSrcweir 		static sal_Int32    const s_nCOLUMN_SIZE = 256;
64*cdf0e10cSrcweir 		static sal_Int32    const s_nDECIMAL_DIGITS = 0;
65*cdf0e10cSrcweir 		static sal_Int32    const s_nNULLABLE = 1;
66*cdf0e10cSrcweir 		static sal_Int32 const s_nCHAR_OCTET_LENGTH = 65535;
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir 		static ColumnProperty **pFields=NULL;
69*cdf0e10cSrcweir 		static guint        nFields = 0;
70*cdf0e10cSrcweir 
71*cdf0e10cSrcweir         static const char *pBlackList[] =
72*cdf0e10cSrcweir         {
73*cdf0e10cSrcweir             "id",
74*cdf0e10cSrcweir             "list-show-addresses",
75*cdf0e10cSrcweir             "address-label-home",
76*cdf0e10cSrcweir             "address-label-work",
77*cdf0e10cSrcweir             "address-label-other"
78*cdf0e10cSrcweir         };
79*cdf0e10cSrcweir 
80*cdf0e10cSrcweir     const SplitEvoColumns* get_evo_addr()
81*cdf0e10cSrcweir     {
82*cdf0e10cSrcweir 	    static const SplitEvoColumns evo_addr[] = {
83*cdf0e10cSrcweir 		    {"addr-line1",DEFAULT_ADDR_LINE1},{"addr-line2",DEFAULT_ADDR_LINE2},{"city",DEFAULT_CITY},{"state",DEFAULT_STATE},{"country",DEFAULT_COUNTRY},{"zip",DEFAULT_ZIP},
84*cdf0e10cSrcweir 		    {"work-addr-line1",WORK_ADDR_LINE1},{"work-addr-line2",WORK_ADDR_LINE2},{"work-city",WORK_CITY},{"work-state",WORK_STATE},{"work-country",WORK_COUNTRY},{"work-zip",WORK_ZIP},
85*cdf0e10cSrcweir 		    {"home-addr-line1",HOME_ADDR_LINE1},{"home-addr-line2",HOME_ADDR_LINE2},{"home-addr-City",HOME_CITY},{"home-state",HOME_STATE},{"home-country",HOME_COUNTRY},{"home-zip",HOME_ZIP},
86*cdf0e10cSrcweir 		    {"other-addr-line1",OTHER_ADDR_LINE1},{"other-addr-line2",OTHER_ADDR_LINE2},{"other-addr-city",OTHER_CITY},{"other-addr-state",OTHER_STATE},{"other-addr-country",OTHER_COUNTRY},{"other-addr-zip",OTHER_ZIP}
87*cdf0e10cSrcweir 	    };
88*cdf0e10cSrcweir         return evo_addr;
89*cdf0e10cSrcweir     }
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir     static void
92*cdf0e10cSrcweir     splitColumn (ColumnProperty **pToBeFields)
93*cdf0e10cSrcweir     {
94*cdf0e10cSrcweir         const SplitEvoColumns* evo_addr( get_evo_addr() );
95*cdf0e10cSrcweir         for (int i = 0; i < OTHER_ZIP; i++)
96*cdf0e10cSrcweir         {
97*cdf0e10cSrcweir             pToBeFields[nFields] = g_new0(ColumnProperty,1);
98*cdf0e10cSrcweir             pToBeFields[nFields]->bIsSplittedValue = true;
99*cdf0e10cSrcweir             pToBeFields[nFields]->pField = g_param_spec_ref(g_param_spec_string (evo_addr[i].pColumnName,evo_addr[i].pColumnName,"",NULL,G_PARAM_WRITABLE));
100*cdf0e10cSrcweir             nFields++;
101*cdf0e10cSrcweir         }
102*cdf0e10cSrcweir     }
103*cdf0e10cSrcweir 
104*cdf0e10cSrcweir     static void
105*cdf0e10cSrcweir     initFields()
106*cdf0e10cSrcweir     {
107*cdf0e10cSrcweir         if( !pFields )
108*cdf0e10cSrcweir         {
109*cdf0e10cSrcweir             ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
110*cdf0e10cSrcweir             if( !pFields )
111*cdf0e10cSrcweir             {
112*cdf0e10cSrcweir                 guint        nProps;
113*cdf0e10cSrcweir                 ColumnProperty **pToBeFields;
114*cdf0e10cSrcweir                 GParamSpec **pProps;
115*cdf0e10cSrcweir                 nFields = 0;
116*cdf0e10cSrcweir                 pProps = g_object_class_list_properties
117*cdf0e10cSrcweir                     ( (GObjectClass *) g_type_class_ref( E_TYPE_CONTACT ),
118*cdf0e10cSrcweir                          &nProps );
119*cdf0e10cSrcweir                 pToBeFields = g_new0(ColumnProperty  *, (nProps + OTHER_ZIP)/* new column(s)*/ );
120*cdf0e10cSrcweir                 for ( guint i = 0; i < nProps; i++ )
121*cdf0e10cSrcweir                 {
122*cdf0e10cSrcweir                     switch (pProps[i]->value_type)
123*cdf0e10cSrcweir                     {
124*cdf0e10cSrcweir                         case G_TYPE_STRING:
125*cdf0e10cSrcweir                         case G_TYPE_BOOLEAN:
126*cdf0e10cSrcweir                         {
127*cdf0e10cSrcweir                             bool bAdd = true;
128*cdf0e10cSrcweir                             const char *pName = g_param_spec_get_name( pProps[i] );
129*cdf0e10cSrcweir                             for (unsigned int j = 0; j < G_N_ELEMENTS( pBlackList ); j++ )
130*cdf0e10cSrcweir                             {
131*cdf0e10cSrcweir                                 if( !strcmp( pBlackList[j], pName ) )
132*cdf0e10cSrcweir                                 {
133*cdf0e10cSrcweir                                     bAdd = false;
134*cdf0e10cSrcweir                                     break;
135*cdf0e10cSrcweir                                 }
136*cdf0e10cSrcweir                             }
137*cdf0e10cSrcweir                             if( bAdd )
138*cdf0e10cSrcweir                             {
139*cdf0e10cSrcweir                                 pToBeFields[nFields]= g_new0(ColumnProperty,1);
140*cdf0e10cSrcweir                                 pToBeFields[nFields]->bIsSplittedValue=false;
141*cdf0e10cSrcweir                                 pToBeFields[ nFields++ ]->pField = g_param_spec_ref( pProps[i] );
142*cdf0e10cSrcweir                             }
143*cdf0e10cSrcweir                             break;
144*cdf0e10cSrcweir                         }
145*cdf0e10cSrcweir                         default:
146*cdf0e10cSrcweir                             break;
147*cdf0e10cSrcweir                     }
148*cdf0e10cSrcweir                 }
149*cdf0e10cSrcweir 
150*cdf0e10cSrcweir                 splitColumn(pToBeFields);
151*cdf0e10cSrcweir                 pFields = pToBeFields;
152*cdf0e10cSrcweir             }
153*cdf0e10cSrcweir         }
154*cdf0e10cSrcweir     }
155*cdf0e10cSrcweir 
156*cdf0e10cSrcweir 
157*cdf0e10cSrcweir     guint
158*cdf0e10cSrcweir     getFieldCount()
159*cdf0e10cSrcweir     {
160*cdf0e10cSrcweir         initFields();
161*cdf0e10cSrcweir         return nFields;
162*cdf0e10cSrcweir     }
163*cdf0e10cSrcweir 
164*cdf0e10cSrcweir     const ColumnProperty *
165*cdf0e10cSrcweir     getField(guint n)
166*cdf0e10cSrcweir     {
167*cdf0e10cSrcweir         initFields();
168*cdf0e10cSrcweir         if( n < nFields )
169*cdf0e10cSrcweir             return pFields[n];
170*cdf0e10cSrcweir     	else
171*cdf0e10cSrcweir             return NULL;
172*cdf0e10cSrcweir     }
173*cdf0e10cSrcweir 
174*cdf0e10cSrcweir     GType
175*cdf0e10cSrcweir     getGFieldType( guint nCol )
176*cdf0e10cSrcweir     {
177*cdf0e10cSrcweir         initFields();
178*cdf0e10cSrcweir 
179*cdf0e10cSrcweir         sal_Int32 nType = G_TYPE_STRING;
180*cdf0e10cSrcweir         if ( nCol < nFields )
181*cdf0e10cSrcweir             return ((GParamSpec *)pFields[nCol]->pField)->value_type;
182*cdf0e10cSrcweir         return nType;
183*cdf0e10cSrcweir     }
184*cdf0e10cSrcweir 
185*cdf0e10cSrcweir     sal_Int32
186*cdf0e10cSrcweir     getFieldType( guint nCol )
187*cdf0e10cSrcweir     {
188*cdf0e10cSrcweir         sal_Int32 nType = getGFieldType( nCol );
189*cdf0e10cSrcweir         return nType == G_TYPE_STRING ? DataType::VARCHAR : DataType::BIT;
190*cdf0e10cSrcweir     }
191*cdf0e10cSrcweir 
192*cdf0e10cSrcweir     guint findEvoabField(const rtl::OUString& aColName)
193*cdf0e10cSrcweir     {
194*cdf0e10cSrcweir         guint nRet = (guint)-1;
195*cdf0e10cSrcweir         sal_Bool bFound = sal_False;
196*cdf0e10cSrcweir         initFields();
197*cdf0e10cSrcweir         for (guint i=0;(i < nFields) && !bFound;i++)
198*cdf0e10cSrcweir         {
199*cdf0e10cSrcweir             rtl::OUString aName = getFieldName(i);
200*cdf0e10cSrcweir             if (aName == aColName)
201*cdf0e10cSrcweir             {
202*cdf0e10cSrcweir                 nRet = i;
203*cdf0e10cSrcweir                 bFound = sal_True;
204*cdf0e10cSrcweir             }
205*cdf0e10cSrcweir         }
206*cdf0e10cSrcweir         return nRet;
207*cdf0e10cSrcweir     }
208*cdf0e10cSrcweir 
209*cdf0e10cSrcweir     rtl::OUString
210*cdf0e10cSrcweir     getFieldTypeName( guint nCol )
211*cdf0e10cSrcweir     {
212*cdf0e10cSrcweir         switch( getFieldType( nCol ) )
213*cdf0e10cSrcweir         {
214*cdf0e10cSrcweir             case DataType::BIT:
215*cdf0e10cSrcweir                 return ::rtl::OUString::createFromAscii( "BIT" );
216*cdf0e10cSrcweir             case DataType::VARCHAR:
217*cdf0e10cSrcweir                 return ::rtl::OUString::createFromAscii( "VARCHAR" );
218*cdf0e10cSrcweir             default:
219*cdf0e10cSrcweir                 break;
220*cdf0e10cSrcweir         }
221*cdf0e10cSrcweir         return ::rtl::OUString();
222*cdf0e10cSrcweir     }
223*cdf0e10cSrcweir 
224*cdf0e10cSrcweir     rtl::OUString
225*cdf0e10cSrcweir     getFieldName( guint nCol )
226*cdf0e10cSrcweir     {
227*cdf0e10cSrcweir         const GParamSpec *pSpec = getField( nCol )->pField;
228*cdf0e10cSrcweir         rtl::OUString aName;
229*cdf0e10cSrcweir         initFields();
230*cdf0e10cSrcweir 
231*cdf0e10cSrcweir         if( pSpec )
232*cdf0e10cSrcweir             aName = rtl::OStringToOUString( g_param_spec_get_name( ( GParamSpec * )pSpec ),
233*cdf0e10cSrcweir 											RTL_TEXTENCODING_UTF8 );
234*cdf0e10cSrcweir             aName = aName.replace( '-', '_' );
235*cdf0e10cSrcweir         return aName;
236*cdf0e10cSrcweir     }
237*cdf0e10cSrcweir 
238*cdf0e10cSrcweir     void
239*cdf0e10cSrcweir     free_column_resources()
240*cdf0e10cSrcweir     {
241*cdf0e10cSrcweir         for (int i=nFields-1;i > 0;i--)
242*cdf0e10cSrcweir         {
243*cdf0e10cSrcweir             if (pFields && pFields[i] )
244*cdf0e10cSrcweir             {
245*cdf0e10cSrcweir                 if (pFields[i]->pField)
246*cdf0e10cSrcweir                     g_param_spec_unref(pFields[i]->pField);
247*cdf0e10cSrcweir                 g_free(pFields[i]);
248*cdf0e10cSrcweir             }
249*cdf0e10cSrcweir         }
250*cdf0e10cSrcweir        if(pFields)
251*cdf0e10cSrcweir         {
252*cdf0e10cSrcweir             g_free(pFields);
253*cdf0e10cSrcweir             pFields=NULL;
254*cdf0e10cSrcweir         }
255*cdf0e10cSrcweir 
256*cdf0e10cSrcweir     }
257*cdf0e10cSrcweir 
258*cdf0e10cSrcweir 
259*cdf0e10cSrcweir     }
260*cdf0e10cSrcweir }
261*cdf0e10cSrcweir 
262*cdf0e10cSrcweir 
263*cdf0e10cSrcweir OEvoabDatabaseMetaData::OEvoabDatabaseMetaData(OEvoabConnection* _pCon)
264*cdf0e10cSrcweir 	: ::connectivity::ODatabaseMetaDataBase(_pCon, _pCon->getConnectionInfo())
265*cdf0e10cSrcweir 	,m_pConnection(_pCon)
266*cdf0e10cSrcweir {
267*cdf0e10cSrcweir 	OSL_ENSURE(m_pConnection,"OEvoabDatabaseMetaData::OEvoabDatabaseMetaData: No connection set!");
268*cdf0e10cSrcweir }
269*cdf0e10cSrcweir OEvoabDatabaseMetaData::~OEvoabDatabaseMetaData()
270*cdf0e10cSrcweir {
271*cdf0e10cSrcweir }
272*cdf0e10cSrcweir 
273*cdf0e10cSrcweir // -------------------------------------------------------------------------
274*cdf0e10cSrcweir ODatabaseMetaDataResultSet::ORows& OEvoabDatabaseMetaData::getColumnRows( const ::rtl::OUString& columnNamePattern )
275*cdf0e10cSrcweir {
276*cdf0e10cSrcweir 	static ODatabaseMetaDataResultSet::ORows aRows;
277*cdf0e10cSrcweir 	ODatabaseMetaDataResultSet::ORow  aRow(19);
278*cdf0e10cSrcweir 	aRows.clear();
279*cdf0e10cSrcweir 
280*cdf0e10cSrcweir 	// ****************************************************
281*cdf0e10cSrcweir 	// Some entries in a row never change, so set them now
282*cdf0e10cSrcweir 	// ****************************************************
283*cdf0e10cSrcweir 
284*cdf0e10cSrcweir 	// Catalog
285*cdf0e10cSrcweir 	aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii(""));
286*cdf0e10cSrcweir 	// Schema
287*cdf0e10cSrcweir 	aRow[2] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii(""));
288*cdf0e10cSrcweir 	// COLUMN_SIZE
289*cdf0e10cSrcweir 	aRow[7] = new ORowSetValueDecorator(s_nCOLUMN_SIZE);
290*cdf0e10cSrcweir 	// BUFFER_LENGTH, not used
291*cdf0e10cSrcweir 	aRow[8] = ODatabaseMetaDataResultSet::getEmptyValue();
292*cdf0e10cSrcweir 	// DECIMAL_DIGITS.
293*cdf0e10cSrcweir 	aRow[9] = new ORowSetValueDecorator(s_nDECIMAL_DIGITS);
294*cdf0e10cSrcweir 	// NUM_PREC_RADIX
295*cdf0e10cSrcweir 	aRow[10] = new ORowSetValueDecorator((sal_Int32)10);
296*cdf0e10cSrcweir 	// NULLABLE
297*cdf0e10cSrcweir 	aRow[11] = new ORowSetValueDecorator(s_nNULLABLE);
298*cdf0e10cSrcweir 	// REMARKS
299*cdf0e10cSrcweir 	aRow[12] = ODatabaseMetaDataResultSet::getEmptyValue();
300*cdf0e10cSrcweir 	// COULUMN_DEF, not used
301*cdf0e10cSrcweir 	aRow[13] = ODatabaseMetaDataResultSet::getEmptyValue();
302*cdf0e10cSrcweir 	// SQL_DATA_TYPE, not used
303*cdf0e10cSrcweir 	aRow[14] = ODatabaseMetaDataResultSet::getEmptyValue();
304*cdf0e10cSrcweir 	// SQL_DATETIME_SUB, not used
305*cdf0e10cSrcweir 	aRow[15] = ODatabaseMetaDataResultSet::getEmptyValue();
306*cdf0e10cSrcweir 	// CHAR_OCTET_LENGTH, refer to [5]
307*cdf0e10cSrcweir 	aRow[16] = new ORowSetValueDecorator(s_nCHAR_OCTET_LENGTH);
308*cdf0e10cSrcweir 	// IS_NULLABLE
309*cdf0e10cSrcweir 	aRow[18] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii( "YES" ));
310*cdf0e10cSrcweir 
311*cdf0e10cSrcweir 
312*cdf0e10cSrcweir 	aRow[3] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii( "TABLE" ));
313*cdf0e10cSrcweir 	::osl::MutexGuard aGuard( m_aMutex );
314*cdf0e10cSrcweir 
315*cdf0e10cSrcweir 	initFields();
316*cdf0e10cSrcweir 	for (sal_Int32 i = 0; i < (sal_Int32) nFields; i++)
317*cdf0e10cSrcweir 	{
318*cdf0e10cSrcweir 		if( match( columnNamePattern, getFieldName( i ), '\0' ) )
319*cdf0e10cSrcweir 		{
320*cdf0e10cSrcweir 			aRow[5] = new ORowSetValueDecorator( static_cast<sal_Int16>( getFieldType( i ) ) );
321*cdf0e10cSrcweir 			aRow[6] = new ORowSetValueDecorator( getFieldTypeName( i ) );
322*cdf0e10cSrcweir 
323*cdf0e10cSrcweir 			OSL_TRACE( "ColumnName = '%s'", g_param_spec_get_name( pFields[i]->pField ) );
324*cdf0e10cSrcweir 			// COLUMN_NAME
325*cdf0e10cSrcweir 			aRow[4] = new ORowSetValueDecorator( getFieldName( i ) );
326*cdf0e10cSrcweir 			// ORDINAL_POSITION
327*cdf0e10cSrcweir 			aRow[17] = new ORowSetValueDecorator( i );
328*cdf0e10cSrcweir 			aRows.push_back( aRow );
329*cdf0e10cSrcweir 		}
330*cdf0e10cSrcweir 	}
331*cdf0e10cSrcweir 
332*cdf0e10cSrcweir 	return aRows ;
333*cdf0e10cSrcweir }
334*cdf0e10cSrcweir // -------------------------------------------------------------------------
335*cdf0e10cSrcweir ::rtl::OUString OEvoabDatabaseMetaData::impl_getCatalogSeparator_throw(  )
336*cdf0e10cSrcweir {
337*cdf0e10cSrcweir 	return ::rtl::OUString();
338*cdf0e10cSrcweir }
339*cdf0e10cSrcweir // -------------------------------------------------------------------------
340*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxBinaryLiteralLength(  ) throw(SQLException, RuntimeException)
341*cdf0e10cSrcweir {
342*cdf0e10cSrcweir 	return 0;// 0 means no limit
343*cdf0e10cSrcweir }
344*cdf0e10cSrcweir // -------------------------------------------------------------------------
345*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxRowSize(  ) throw(SQLException, RuntimeException)
346*cdf0e10cSrcweir {
347*cdf0e10cSrcweir 	return 0;// 0 means no limit
348*cdf0e10cSrcweir }
349*cdf0e10cSrcweir // -------------------------------------------------------------------------
350*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxCatalogNameLength(  ) throw(SQLException, RuntimeException)
351*cdf0e10cSrcweir {
352*cdf0e10cSrcweir 	return 0;// 0 means no limit
353*cdf0e10cSrcweir }
354*cdf0e10cSrcweir // -------------------------------------------------------------------------
355*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxCharLiteralLength(  ) throw(SQLException, RuntimeException)
356*cdf0e10cSrcweir {
357*cdf0e10cSrcweir 	return 0;// 0 means no limit
358*cdf0e10cSrcweir }
359*cdf0e10cSrcweir // -------------------------------------------------------------------------
360*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxColumnNameLength(  ) throw(SQLException, RuntimeException)
361*cdf0e10cSrcweir {
362*cdf0e10cSrcweir 	return 0;// 0 means no limit
363*cdf0e10cSrcweir }
364*cdf0e10cSrcweir // -------------------------------------------------------------------------
365*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxColumnsInIndex(  ) throw(SQLException, RuntimeException)
366*cdf0e10cSrcweir {
367*cdf0e10cSrcweir 	return 0;// 0 means no limit
368*cdf0e10cSrcweir }
369*cdf0e10cSrcweir // -------------------------------------------------------------------------
370*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxCursorNameLength(  ) throw(SQLException, RuntimeException)
371*cdf0e10cSrcweir {
372*cdf0e10cSrcweir 	return 0;// 0 means no limit
373*cdf0e10cSrcweir }
374*cdf0e10cSrcweir // -------------------------------------------------------------------------
375*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxConnections(  ) throw(SQLException, RuntimeException)
376*cdf0e10cSrcweir {
377*cdf0e10cSrcweir 	return 0;// 0 means no limit
378*cdf0e10cSrcweir }
379*cdf0e10cSrcweir // -------------------------------------------------------------------------
380*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxColumnsInTable(  ) throw(SQLException, RuntimeException)
381*cdf0e10cSrcweir {
382*cdf0e10cSrcweir 	return 0;// 0 means no limit
383*cdf0e10cSrcweir }
384*cdf0e10cSrcweir // -------------------------------------------------------------------------
385*cdf0e10cSrcweir sal_Int32 OEvoabDatabaseMetaData::impl_getMaxStatements_throw(  )
386*cdf0e10cSrcweir {
387*cdf0e10cSrcweir 	return 0;// 0 means no limit
388*cdf0e10cSrcweir }
389*cdf0e10cSrcweir // -------------------------------------------------------------------------
390*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxTableNameLength(  ) throw(SQLException, RuntimeException)
391*cdf0e10cSrcweir {
392*cdf0e10cSrcweir 	return 0;// 0 means no limit
393*cdf0e10cSrcweir }
394*cdf0e10cSrcweir // -------------------------------------------------------------------------
395*cdf0e10cSrcweir sal_Int32 OEvoabDatabaseMetaData::impl_getMaxTablesInSelect_throw(  )
396*cdf0e10cSrcweir {
397*cdf0e10cSrcweir 	// We only support a single table
398*cdf0e10cSrcweir 	return 1;
399*cdf0e10cSrcweir }
400*cdf0e10cSrcweir // -------------------------------------------------------------------------
401*cdf0e10cSrcweir // -------------------------------------------------------------------------
402*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::doesMaxRowSizeIncludeBlobs(  ) throw(SQLException, RuntimeException)
403*cdf0e10cSrcweir {
404*cdf0e10cSrcweir 	return sal_False;
405*cdf0e10cSrcweir }
406*cdf0e10cSrcweir // -------------------------------------------------------------------------
407*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::storesLowerCaseQuotedIdentifiers(  ) throw(SQLException, RuntimeException)
408*cdf0e10cSrcweir {
409*cdf0e10cSrcweir 	return sal_False;
410*cdf0e10cSrcweir }
411*cdf0e10cSrcweir // -------------------------------------------------------------------------
412*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::storesLowerCaseIdentifiers(  ) throw(SQLException, RuntimeException)
413*cdf0e10cSrcweir {
414*cdf0e10cSrcweir 	return sal_False;
415*cdf0e10cSrcweir }
416*cdf0e10cSrcweir // -------------------------------------------------------------------------
417*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_storesMixedCaseQuotedIdentifiers_throw(  )
418*cdf0e10cSrcweir {
419*cdf0e10cSrcweir 	return sal_False;
420*cdf0e10cSrcweir }
421*cdf0e10cSrcweir // -------------------------------------------------------------------------
422*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::storesMixedCaseIdentifiers(  ) throw(SQLException, RuntimeException)
423*cdf0e10cSrcweir {
424*cdf0e10cSrcweir 	return sal_False;
425*cdf0e10cSrcweir }
426*cdf0e10cSrcweir // -------------------------------------------------------------------------
427*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::storesUpperCaseQuotedIdentifiers(  ) throw(SQLException, RuntimeException)
428*cdf0e10cSrcweir {
429*cdf0e10cSrcweir 	return sal_False;
430*cdf0e10cSrcweir }
431*cdf0e10cSrcweir // -------------------------------------------------------------------------
432*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::storesUpperCaseIdentifiers(  ) throw(SQLException, RuntimeException)
433*cdf0e10cSrcweir {
434*cdf0e10cSrcweir 	return sal_False;
435*cdf0e10cSrcweir }
436*cdf0e10cSrcweir // -------------------------------------------------------------------------
437*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_supportsAlterTableWithAddColumn_throw(  )
438*cdf0e10cSrcweir {
439*cdf0e10cSrcweir 	return sal_False;
440*cdf0e10cSrcweir }
441*cdf0e10cSrcweir // -------------------------------------------------------------------------
442*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_supportsAlterTableWithDropColumn_throw(  )
443*cdf0e10cSrcweir {
444*cdf0e10cSrcweir 	return sal_False;
445*cdf0e10cSrcweir }
446*cdf0e10cSrcweir // -------------------------------------------------------------------------
447*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxIndexLength(  ) throw(SQLException, RuntimeException)
448*cdf0e10cSrcweir {
449*cdf0e10cSrcweir 	return 0;// 0 means no limit
450*cdf0e10cSrcweir }
451*cdf0e10cSrcweir // -------------------------------------------------------------------------
452*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsNonNullableColumns(  ) throw(SQLException, RuntimeException)
453*cdf0e10cSrcweir {
454*cdf0e10cSrcweir 	return sal_False;
455*cdf0e10cSrcweir }
456*cdf0e10cSrcweir // -------------------------------------------------------------------------
457*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getCatalogTerm(  ) throw(SQLException, RuntimeException)
458*cdf0e10cSrcweir {
459*cdf0e10cSrcweir 	::rtl::OUString aVal;
460*cdf0e10cSrcweir 	return aVal;
461*cdf0e10cSrcweir }
462*cdf0e10cSrcweir // -------------------------------------------------------------------------
463*cdf0e10cSrcweir ::rtl::OUString OEvoabDatabaseMetaData::impl_getIdentifierQuoteString_throw(  )
464*cdf0e10cSrcweir {
465*cdf0e10cSrcweir 	// normally this is "
466*cdf0e10cSrcweir 	::rtl::OUString aVal = ::rtl::OUString::createFromAscii("\"");
467*cdf0e10cSrcweir 	return aVal;
468*cdf0e10cSrcweir }
469*cdf0e10cSrcweir // -------------------------------------------------------------------------
470*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getExtraNameCharacters(  ) throw(SQLException, RuntimeException)
471*cdf0e10cSrcweir {
472*cdf0e10cSrcweir 	::rtl::OUString aVal;
473*cdf0e10cSrcweir 	return aVal;
474*cdf0e10cSrcweir }
475*cdf0e10cSrcweir // -------------------------------------------------------------------------
476*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsDifferentTableCorrelationNames(  ) throw(SQLException, RuntimeException)
477*cdf0e10cSrcweir {
478*cdf0e10cSrcweir 	return sal_False;
479*cdf0e10cSrcweir }
480*cdf0e10cSrcweir // -------------------------------------------------------------------------
481*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_isCatalogAtStart_throw(  )
482*cdf0e10cSrcweir {
483*cdf0e10cSrcweir 	sal_Bool bValue = sal_False;
484*cdf0e10cSrcweir 	return bValue;
485*cdf0e10cSrcweir }
486*cdf0e10cSrcweir // -------------------------------------------------------------------------
487*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::dataDefinitionIgnoredInTransactions(  ) throw(SQLException, RuntimeException)
488*cdf0e10cSrcweir {
489*cdf0e10cSrcweir 	return sal_True;
490*cdf0e10cSrcweir }
491*cdf0e10cSrcweir // -------------------------------------------------------------------------
492*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::dataDefinitionCausesTransactionCommit(  ) throw(SQLException, RuntimeException)
493*cdf0e10cSrcweir {
494*cdf0e10cSrcweir 	return sal_True;
495*cdf0e10cSrcweir }
496*cdf0e10cSrcweir // -------------------------------------------------------------------------
497*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsDataManipulationTransactionsOnly(  ) throw(SQLException, RuntimeException)
498*cdf0e10cSrcweir {
499*cdf0e10cSrcweir 	return sal_True;
500*cdf0e10cSrcweir }
501*cdf0e10cSrcweir // -------------------------------------------------------------------------
502*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions(  ) throw(SQLException, RuntimeException)
503*cdf0e10cSrcweir {
504*cdf0e10cSrcweir 	return sal_True;
505*cdf0e10cSrcweir }
506*cdf0e10cSrcweir // -------------------------------------------------------------------------
507*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsPositionedDelete(  ) throw(SQLException, RuntimeException)
508*cdf0e10cSrcweir {
509*cdf0e10cSrcweir 	return sal_False;
510*cdf0e10cSrcweir }
511*cdf0e10cSrcweir // -------------------------------------------------------------------------
512*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsPositionedUpdate(  ) throw(SQLException, RuntimeException)
513*cdf0e10cSrcweir {
514*cdf0e10cSrcweir 	return sal_False;
515*cdf0e10cSrcweir }
516*cdf0e10cSrcweir // -------------------------------------------------------------------------
517*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsOpenStatementsAcrossRollback(  ) throw(SQLException, RuntimeException)
518*cdf0e10cSrcweir {
519*cdf0e10cSrcweir 	return sal_False;
520*cdf0e10cSrcweir }
521*cdf0e10cSrcweir // -------------------------------------------------------------------------
522*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsOpenStatementsAcrossCommit(  ) throw(SQLException, RuntimeException)
523*cdf0e10cSrcweir {
524*cdf0e10cSrcweir 	return sal_False;
525*cdf0e10cSrcweir }
526*cdf0e10cSrcweir // -------------------------------------------------------------------------
527*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsOpenCursorsAcrossCommit(  ) throw(SQLException, RuntimeException)
528*cdf0e10cSrcweir {
529*cdf0e10cSrcweir 	return sal_False;
530*cdf0e10cSrcweir }
531*cdf0e10cSrcweir // -------------------------------------------------------------------------
532*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsOpenCursorsAcrossRollback(  ) throw(SQLException, RuntimeException)
533*cdf0e10cSrcweir {
534*cdf0e10cSrcweir 	return sal_False;
535*cdf0e10cSrcweir }
536*cdf0e10cSrcweir // -------------------------------------------------------------------------
537*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsTransactionIsolationLevel( sal_Int32 /*level*/ ) throw(SQLException, RuntimeException)
538*cdf0e10cSrcweir {
539*cdf0e10cSrcweir 	return sal_False;
540*cdf0e10cSrcweir }
541*cdf0e10cSrcweir // -------------------------------------------------------------------------
542*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_supportsSchemasInDataManipulation_throw(  )
543*cdf0e10cSrcweir {
544*cdf0e10cSrcweir 	return sal_False;
545*cdf0e10cSrcweir }
546*cdf0e10cSrcweir // -------------------------------------------------------------------------
547*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsANSI92FullSQL(  ) throw(SQLException, RuntimeException)
548*cdf0e10cSrcweir {
549*cdf0e10cSrcweir 	return sal_False;
550*cdf0e10cSrcweir }
551*cdf0e10cSrcweir // -------------------------------------------------------------------------
552*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsANSI92EntryLevelSQL(  ) throw(SQLException, RuntimeException)
553*cdf0e10cSrcweir {
554*cdf0e10cSrcweir 	return sal_True; // should be supported at least
555*cdf0e10cSrcweir }
556*cdf0e10cSrcweir // -------------------------------------------------------------------------
557*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsIntegrityEnhancementFacility(  ) throw(SQLException, RuntimeException)
558*cdf0e10cSrcweir {
559*cdf0e10cSrcweir 	return sal_False;
560*cdf0e10cSrcweir }
561*cdf0e10cSrcweir // -------------------------------------------------------------------------
562*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsSchemasInIndexDefinitions(  ) throw(SQLException, RuntimeException)
563*cdf0e10cSrcweir {
564*cdf0e10cSrcweir 	return sal_False;
565*cdf0e10cSrcweir }
566*cdf0e10cSrcweir // -------------------------------------------------------------------------
567*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_supportsSchemasInTableDefinitions_throw(  )
568*cdf0e10cSrcweir {
569*cdf0e10cSrcweir 	return sal_False;
570*cdf0e10cSrcweir }
571*cdf0e10cSrcweir // -------------------------------------------------------------------------
572*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_supportsCatalogsInTableDefinitions_throw(  )
573*cdf0e10cSrcweir {
574*cdf0e10cSrcweir 	return sal_False;
575*cdf0e10cSrcweir }
576*cdf0e10cSrcweir // -------------------------------------------------------------------------
577*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsCatalogsInIndexDefinitions(  ) throw(SQLException, RuntimeException)
578*cdf0e10cSrcweir {
579*cdf0e10cSrcweir 	return sal_False;
580*cdf0e10cSrcweir }
581*cdf0e10cSrcweir // -------------------------------------------------------------------------
582*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_supportsCatalogsInDataManipulation_throw(  )
583*cdf0e10cSrcweir {
584*cdf0e10cSrcweir 	return sal_False;
585*cdf0e10cSrcweir }
586*cdf0e10cSrcweir // -------------------------------------------------------------------------
587*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsOuterJoins(  ) throw(SQLException, RuntimeException)
588*cdf0e10cSrcweir {
589*cdf0e10cSrcweir 	return sal_False;
590*cdf0e10cSrcweir }
591*cdf0e10cSrcweir // -------------------------------------------------------------------------
592*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxStatementLength(  ) throw(SQLException, RuntimeException)
593*cdf0e10cSrcweir {
594*cdf0e10cSrcweir 	return 0;// 0 means no limit
595*cdf0e10cSrcweir }
596*cdf0e10cSrcweir // -------------------------------------------------------------------------
597*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxProcedureNameLength(  ) throw(SQLException, RuntimeException)
598*cdf0e10cSrcweir {
599*cdf0e10cSrcweir 	return 0;// 0 means no limit
600*cdf0e10cSrcweir }
601*cdf0e10cSrcweir // -------------------------------------------------------------------------
602*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxSchemaNameLength(  ) throw(SQLException, RuntimeException)
603*cdf0e10cSrcweir {
604*cdf0e10cSrcweir 	return 0;// 0 means no limit
605*cdf0e10cSrcweir }
606*cdf0e10cSrcweir // -------------------------------------------------------------------------
607*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsTransactions(  ) throw(SQLException, RuntimeException)
608*cdf0e10cSrcweir {
609*cdf0e10cSrcweir 	return sal_False;
610*cdf0e10cSrcweir }
611*cdf0e10cSrcweir // -------------------------------------------------------------------------
612*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::allProceduresAreCallable(  ) throw(SQLException, RuntimeException)
613*cdf0e10cSrcweir {
614*cdf0e10cSrcweir 	return sal_False;
615*cdf0e10cSrcweir }
616*cdf0e10cSrcweir // -------------------------------------------------------------------------
617*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsStoredProcedures(  ) throw(SQLException, RuntimeException)
618*cdf0e10cSrcweir {
619*cdf0e10cSrcweir 	return sal_False;
620*cdf0e10cSrcweir }
621*cdf0e10cSrcweir // -------------------------------------------------------------------------
622*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsSelectForUpdate(  ) throw(SQLException, RuntimeException)
623*cdf0e10cSrcweir {
624*cdf0e10cSrcweir 	return sal_False;
625*cdf0e10cSrcweir }
626*cdf0e10cSrcweir // -------------------------------------------------------------------------
627*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::allTablesAreSelectable(  ) throw(SQLException, RuntimeException)
628*cdf0e10cSrcweir {
629*cdf0e10cSrcweir     // We allow you to select from any table.
630*cdf0e10cSrcweir 	return sal_True;
631*cdf0e10cSrcweir }
632*cdf0e10cSrcweir // -------------------------------------------------------------------------
633*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::isReadOnly(  ) throw(SQLException, RuntimeException)
634*cdf0e10cSrcweir {
635*cdf0e10cSrcweir     // For now definately read-only, no support for update/delete
636*cdf0e10cSrcweir 	return sal_True;
637*cdf0e10cSrcweir }
638*cdf0e10cSrcweir // -------------------------------------------------------------------------
639*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::usesLocalFiles(  ) throw(SQLException, RuntimeException)
640*cdf0e10cSrcweir {
641*cdf0e10cSrcweir 	return sal_False;
642*cdf0e10cSrcweir }
643*cdf0e10cSrcweir // -------------------------------------------------------------------------
644*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::usesLocalFilePerTable(  ) throw(SQLException, RuntimeException)
645*cdf0e10cSrcweir {
646*cdf0e10cSrcweir 	return sal_False;
647*cdf0e10cSrcweir }
648*cdf0e10cSrcweir // -------------------------------------------------------------------------
649*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsTypeConversion(  ) throw(SQLException, RuntimeException)
650*cdf0e10cSrcweir {
651*cdf0e10cSrcweir 	return sal_False;
652*cdf0e10cSrcweir }
653*cdf0e10cSrcweir // -------------------------------------------------------------------------
654*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::nullPlusNonNullIsNull(  ) throw(SQLException, RuntimeException)
655*cdf0e10cSrcweir {
656*cdf0e10cSrcweir 	return sal_False;
657*cdf0e10cSrcweir }
658*cdf0e10cSrcweir // -------------------------------------------------------------------------
659*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsColumnAliasing(  ) throw(SQLException, RuntimeException)
660*cdf0e10cSrcweir {
661*cdf0e10cSrcweir     // todo add Support for this.
662*cdf0e10cSrcweir 	return sal_False;
663*cdf0e10cSrcweir }
664*cdf0e10cSrcweir // -------------------------------------------------------------------------
665*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsTableCorrelationNames(  ) throw(SQLException, RuntimeException)
666*cdf0e10cSrcweir {
667*cdf0e10cSrcweir 	return sal_False;
668*cdf0e10cSrcweir }
669*cdf0e10cSrcweir // -------------------------------------------------------------------------
670*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsConvert( sal_Int32 /*fromType*/, sal_Int32 /*toType*/ ) throw(SQLException, RuntimeException)
671*cdf0e10cSrcweir {
672*cdf0e10cSrcweir 	return sal_False;
673*cdf0e10cSrcweir }
674*cdf0e10cSrcweir // -------------------------------------------------------------------------
675*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsExpressionsInOrderBy(  ) throw(SQLException, RuntimeException)
676*cdf0e10cSrcweir {
677*cdf0e10cSrcweir 	return sal_False;
678*cdf0e10cSrcweir }
679*cdf0e10cSrcweir // -------------------------------------------------------------------------
680*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsGroupBy(  ) throw(SQLException, RuntimeException)
681*cdf0e10cSrcweir {
682*cdf0e10cSrcweir 	return sal_False;
683*cdf0e10cSrcweir }
684*cdf0e10cSrcweir // -------------------------------------------------------------------------
685*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsGroupByBeyondSelect(  ) throw(SQLException, RuntimeException)
686*cdf0e10cSrcweir {
687*cdf0e10cSrcweir 	return sal_False;
688*cdf0e10cSrcweir }
689*cdf0e10cSrcweir // -------------------------------------------------------------------------
690*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsGroupByUnrelated(  ) throw(SQLException, RuntimeException)
691*cdf0e10cSrcweir {
692*cdf0e10cSrcweir 	return sal_False;
693*cdf0e10cSrcweir }
694*cdf0e10cSrcweir // -------------------------------------------------------------------------
695*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsMultipleTransactions(  ) throw(SQLException, RuntimeException)
696*cdf0e10cSrcweir {
697*cdf0e10cSrcweir 	return sal_False;
698*cdf0e10cSrcweir }
699*cdf0e10cSrcweir // -------------------------------------------------------------------------
700*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsMultipleResultSets(  ) throw(SQLException, RuntimeException)
701*cdf0e10cSrcweir {
702*cdf0e10cSrcweir 	return sal_False;
703*cdf0e10cSrcweir }
704*cdf0e10cSrcweir // -------------------------------------------------------------------------
705*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsLikeEscapeClause(  ) throw(SQLException, RuntimeException)
706*cdf0e10cSrcweir {
707*cdf0e10cSrcweir 	return sal_False;
708*cdf0e10cSrcweir }
709*cdf0e10cSrcweir // -------------------------------------------------------------------------
710*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsOrderByUnrelated(  ) throw(SQLException, RuntimeException)
711*cdf0e10cSrcweir {
712*cdf0e10cSrcweir 	return sal_False;
713*cdf0e10cSrcweir }
714*cdf0e10cSrcweir // -------------------------------------------------------------------------
715*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsUnion(  ) throw(SQLException, RuntimeException)
716*cdf0e10cSrcweir {
717*cdf0e10cSrcweir 	return sal_False;
718*cdf0e10cSrcweir }
719*cdf0e10cSrcweir // -------------------------------------------------------------------------
720*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsUnionAll(  ) throw(SQLException, RuntimeException)
721*cdf0e10cSrcweir {
722*cdf0e10cSrcweir 	return sal_False;
723*cdf0e10cSrcweir }
724*cdf0e10cSrcweir // -------------------------------------------------------------------------
725*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsMixedCaseIdentifiers(  ) throw(SQLException, RuntimeException)
726*cdf0e10cSrcweir {
727*cdf0e10cSrcweir 	return sal_False;
728*cdf0e10cSrcweir }
729*cdf0e10cSrcweir // -------------------------------------------------------------------------
730*cdf0e10cSrcweir sal_Bool OEvoabDatabaseMetaData::impl_supportsMixedCaseQuotedIdentifiers_throw(  )
731*cdf0e10cSrcweir {
732*cdf0e10cSrcweir     // Any case may be used
733*cdf0e10cSrcweir 	return sal_True;
734*cdf0e10cSrcweir }
735*cdf0e10cSrcweir // -------------------------------------------------------------------------
736*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::nullsAreSortedAtEnd(  ) throw(SQLException, RuntimeException)
737*cdf0e10cSrcweir {
738*cdf0e10cSrcweir 	return sal_False;
739*cdf0e10cSrcweir }
740*cdf0e10cSrcweir // -------------------------------------------------------------------------
741*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::nullsAreSortedAtStart(  ) throw(SQLException, RuntimeException)
742*cdf0e10cSrcweir {
743*cdf0e10cSrcweir 	return sal_True;
744*cdf0e10cSrcweir }
745*cdf0e10cSrcweir // -------------------------------------------------------------------------
746*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::nullsAreSortedHigh(  ) throw(SQLException, RuntimeException)
747*cdf0e10cSrcweir {
748*cdf0e10cSrcweir 	return sal_False;
749*cdf0e10cSrcweir }
750*cdf0e10cSrcweir // -------------------------------------------------------------------------
751*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::nullsAreSortedLow(  ) throw(SQLException, RuntimeException)
752*cdf0e10cSrcweir {
753*cdf0e10cSrcweir 	return sal_True;
754*cdf0e10cSrcweir }
755*cdf0e10cSrcweir // -------------------------------------------------------------------------
756*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsSchemasInProcedureCalls(  ) throw(SQLException, RuntimeException)
757*cdf0e10cSrcweir {
758*cdf0e10cSrcweir 	return sal_False;
759*cdf0e10cSrcweir }
760*cdf0e10cSrcweir // -------------------------------------------------------------------------
761*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsSchemasInPrivilegeDefinitions(  ) throw(SQLException, RuntimeException)
762*cdf0e10cSrcweir {
763*cdf0e10cSrcweir 	return sal_False;
764*cdf0e10cSrcweir }
765*cdf0e10cSrcweir // -------------------------------------------------------------------------
766*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsCatalogsInProcedureCalls(  ) throw(SQLException, RuntimeException)
767*cdf0e10cSrcweir {
768*cdf0e10cSrcweir 	return sal_False;
769*cdf0e10cSrcweir }
770*cdf0e10cSrcweir // -------------------------------------------------------------------------
771*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsCatalogsInPrivilegeDefinitions(  ) throw(SQLException, RuntimeException)
772*cdf0e10cSrcweir {
773*cdf0e10cSrcweir 	return sal_False;
774*cdf0e10cSrcweir }
775*cdf0e10cSrcweir // -------------------------------------------------------------------------
776*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsCorrelatedSubqueries(  ) throw(SQLException, RuntimeException)
777*cdf0e10cSrcweir {
778*cdf0e10cSrcweir 	return sal_False;
779*cdf0e10cSrcweir }
780*cdf0e10cSrcweir // -------------------------------------------------------------------------
781*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsSubqueriesInComparisons(  ) throw(SQLException, RuntimeException)
782*cdf0e10cSrcweir {
783*cdf0e10cSrcweir 	return sal_False;
784*cdf0e10cSrcweir }
785*cdf0e10cSrcweir // -------------------------------------------------------------------------
786*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsSubqueriesInExists(  ) throw(SQLException, RuntimeException)
787*cdf0e10cSrcweir {
788*cdf0e10cSrcweir 	return sal_False;
789*cdf0e10cSrcweir }
790*cdf0e10cSrcweir // -------------------------------------------------------------------------
791*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsSubqueriesInIns(  ) throw(SQLException, RuntimeException)
792*cdf0e10cSrcweir {
793*cdf0e10cSrcweir 	return sal_False;
794*cdf0e10cSrcweir }
795*cdf0e10cSrcweir // -------------------------------------------------------------------------
796*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsSubqueriesInQuantifieds(  ) throw(SQLException, RuntimeException)
797*cdf0e10cSrcweir {
798*cdf0e10cSrcweir 	return sal_False;
799*cdf0e10cSrcweir }
800*cdf0e10cSrcweir // -------------------------------------------------------------------------
801*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsANSI92IntermediateSQL(  ) throw(SQLException, RuntimeException)
802*cdf0e10cSrcweir {
803*cdf0e10cSrcweir 	return sal_False;
804*cdf0e10cSrcweir }
805*cdf0e10cSrcweir // -------------------------------------------------------------------------
806*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getURL(  ) throw(SQLException, RuntimeException)
807*cdf0e10cSrcweir {
808*cdf0e10cSrcweir     ::osl::MutexGuard aGuard( m_aMutex );
809*cdf0e10cSrcweir 
810*cdf0e10cSrcweir     return m_pConnection->getURL();
811*cdf0e10cSrcweir }
812*cdf0e10cSrcweir // -------------------------------------------------------------------------
813*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getUserName(  ) throw(SQLException, RuntimeException)
814*cdf0e10cSrcweir {
815*cdf0e10cSrcweir 	::rtl::OUString aValue;
816*cdf0e10cSrcweir 	return aValue;
817*cdf0e10cSrcweir }
818*cdf0e10cSrcweir // -------------------------------------------------------------------------
819*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getDriverName(  ) throw(SQLException, RuntimeException)
820*cdf0e10cSrcweir {
821*cdf0e10cSrcweir 	::rtl::OUString aValue;
822*cdf0e10cSrcweir 	return aValue;
823*cdf0e10cSrcweir }
824*cdf0e10cSrcweir // -------------------------------------------------------------------------
825*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getDriverVersion() throw(SQLException, RuntimeException)
826*cdf0e10cSrcweir {
827*cdf0e10cSrcweir 	::rtl::OUString aValue = ::rtl::OUString::valueOf((sal_Int32)1);
828*cdf0e10cSrcweir 	return aValue;
829*cdf0e10cSrcweir }
830*cdf0e10cSrcweir // -------------------------------------------------------------------------
831*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getDatabaseProductVersion(  ) throw(SQLException, RuntimeException)
832*cdf0e10cSrcweir {
833*cdf0e10cSrcweir 	::rtl::OUString aValue = ::rtl::OUString::valueOf((sal_Int32)0);
834*cdf0e10cSrcweir 	return aValue;
835*cdf0e10cSrcweir }
836*cdf0e10cSrcweir // -------------------------------------------------------------------------
837*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getDatabaseProductName(  ) throw(SQLException, RuntimeException)
838*cdf0e10cSrcweir {
839*cdf0e10cSrcweir 	::rtl::OUString aValue;
840*cdf0e10cSrcweir 	return aValue;
841*cdf0e10cSrcweir }
842*cdf0e10cSrcweir // -------------------------------------------------------------------------
843*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getProcedureTerm(  ) throw(SQLException, RuntimeException)
844*cdf0e10cSrcweir {
845*cdf0e10cSrcweir 	::rtl::OUString aValue;
846*cdf0e10cSrcweir 	return aValue;
847*cdf0e10cSrcweir }
848*cdf0e10cSrcweir // -------------------------------------------------------------------------
849*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getSchemaTerm(  ) throw(SQLException, RuntimeException)
850*cdf0e10cSrcweir {
851*cdf0e10cSrcweir 	::rtl::OUString aValue;
852*cdf0e10cSrcweir 	return aValue;
853*cdf0e10cSrcweir }
854*cdf0e10cSrcweir // -------------------------------------------------------------------------
855*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getDriverMajorVersion(  ) throw(RuntimeException)
856*cdf0e10cSrcweir {
857*cdf0e10cSrcweir 	return 1;
858*cdf0e10cSrcweir }
859*cdf0e10cSrcweir // -------------------------------------------------------------------------
860*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getDefaultTransactionIsolation(  ) throw(SQLException, RuntimeException)
861*cdf0e10cSrcweir {
862*cdf0e10cSrcweir 	return TransactionIsolation::NONE;
863*cdf0e10cSrcweir }
864*cdf0e10cSrcweir // -------------------------------------------------------------------------
865*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getDriverMinorVersion(  ) throw(RuntimeException)
866*cdf0e10cSrcweir {
867*cdf0e10cSrcweir 	return 0;
868*cdf0e10cSrcweir }
869*cdf0e10cSrcweir // -------------------------------------------------------------------------
870*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getSQLKeywords(  ) throw(SQLException, RuntimeException)
871*cdf0e10cSrcweir {
872*cdf0e10cSrcweir 	::rtl::OUString aValue;
873*cdf0e10cSrcweir 	return aValue;
874*cdf0e10cSrcweir }
875*cdf0e10cSrcweir // -------------------------------------------------------------------------
876*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getSearchStringEscape(  ) throw(SQLException, RuntimeException)
877*cdf0e10cSrcweir {
878*cdf0e10cSrcweir 	::rtl::OUString aValue;
879*cdf0e10cSrcweir 	return aValue;
880*cdf0e10cSrcweir }
881*cdf0e10cSrcweir // -------------------------------------------------------------------------
882*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getStringFunctions(  ) throw(SQLException, RuntimeException)
883*cdf0e10cSrcweir {
884*cdf0e10cSrcweir 	return ::rtl::OUString();
885*cdf0e10cSrcweir }
886*cdf0e10cSrcweir // -------------------------------------------------------------------------
887*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getTimeDateFunctions(  ) throw(SQLException, RuntimeException)
888*cdf0e10cSrcweir {
889*cdf0e10cSrcweir 	return ::rtl::OUString();
890*cdf0e10cSrcweir }
891*cdf0e10cSrcweir // -------------------------------------------------------------------------
892*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getSystemFunctions(  ) throw(SQLException, RuntimeException)
893*cdf0e10cSrcweir {
894*cdf0e10cSrcweir 	return ::rtl::OUString();
895*cdf0e10cSrcweir }
896*cdf0e10cSrcweir // -------------------------------------------------------------------------
897*cdf0e10cSrcweir ::rtl::OUString SAL_CALL OEvoabDatabaseMetaData::getNumericFunctions(  ) throw(SQLException, RuntimeException)
898*cdf0e10cSrcweir {
899*cdf0e10cSrcweir 	return ::rtl::OUString();
900*cdf0e10cSrcweir }
901*cdf0e10cSrcweir // -------------------------------------------------------------------------
902*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsExtendedSQLGrammar(  ) throw(SQLException, RuntimeException)
903*cdf0e10cSrcweir {
904*cdf0e10cSrcweir 	return sal_False;
905*cdf0e10cSrcweir }
906*cdf0e10cSrcweir // -------------------------------------------------------------------------
907*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsCoreSQLGrammar(  ) throw(SQLException, RuntimeException)
908*cdf0e10cSrcweir {
909*cdf0e10cSrcweir 	return sal_False;
910*cdf0e10cSrcweir }
911*cdf0e10cSrcweir // -------------------------------------------------------------------------
912*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsMinimumSQLGrammar(  ) throw(SQLException, RuntimeException)
913*cdf0e10cSrcweir {
914*cdf0e10cSrcweir 	return sal_True;
915*cdf0e10cSrcweir }
916*cdf0e10cSrcweir // -------------------------------------------------------------------------
917*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsFullOuterJoins(  ) throw(SQLException, RuntimeException)
918*cdf0e10cSrcweir {
919*cdf0e10cSrcweir 	return sal_False;
920*cdf0e10cSrcweir }
921*cdf0e10cSrcweir // -------------------------------------------------------------------------
922*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsLimitedOuterJoins(  ) throw(SQLException, RuntimeException)
923*cdf0e10cSrcweir {
924*cdf0e10cSrcweir 	return sal_False;
925*cdf0e10cSrcweir }
926*cdf0e10cSrcweir // -------------------------------------------------------------------------
927*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxColumnsInGroupBy(  ) throw(SQLException, RuntimeException)
928*cdf0e10cSrcweir {
929*cdf0e10cSrcweir 	return 0;// 0 means no limit
930*cdf0e10cSrcweir }
931*cdf0e10cSrcweir // -------------------------------------------------------------------------
932*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxColumnsInOrderBy(  ) throw(SQLException, RuntimeException)
933*cdf0e10cSrcweir {
934*cdf0e10cSrcweir 	return 0;// 0 means no limit
935*cdf0e10cSrcweir }
936*cdf0e10cSrcweir // -------------------------------------------------------------------------
937*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxColumnsInSelect(  ) throw(SQLException, RuntimeException)
938*cdf0e10cSrcweir {
939*cdf0e10cSrcweir 	return 0;// 0 means no limit
940*cdf0e10cSrcweir }
941*cdf0e10cSrcweir // -------------------------------------------------------------------------
942*cdf0e10cSrcweir sal_Int32 SAL_CALL OEvoabDatabaseMetaData::getMaxUserNameLength(  ) throw(SQLException, RuntimeException)
943*cdf0e10cSrcweir {
944*cdf0e10cSrcweir 	return 0;// 0 means no limit
945*cdf0e10cSrcweir }
946*cdf0e10cSrcweir // -------------------------------------------------------------------------
947*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsResultSetType( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
948*cdf0e10cSrcweir {
949*cdf0e10cSrcweir 	return sal_False;
950*cdf0e10cSrcweir }
951*cdf0e10cSrcweir // -------------------------------------------------------------------------
952*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsResultSetConcurrency( sal_Int32 /*setType*/, sal_Int32 /*concurrency*/ ) throw(SQLException, RuntimeException)
953*cdf0e10cSrcweir {
954*cdf0e10cSrcweir 	return sal_False;
955*cdf0e10cSrcweir }
956*cdf0e10cSrcweir // -------------------------------------------------------------------------
957*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::ownUpdatesAreVisible( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
958*cdf0e10cSrcweir {
959*cdf0e10cSrcweir 	return sal_False;
960*cdf0e10cSrcweir }
961*cdf0e10cSrcweir // -------------------------------------------------------------------------
962*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::ownDeletesAreVisible( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
963*cdf0e10cSrcweir {
964*cdf0e10cSrcweir 	return sal_False;
965*cdf0e10cSrcweir }
966*cdf0e10cSrcweir // -------------------------------------------------------------------------
967*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::ownInsertsAreVisible( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
968*cdf0e10cSrcweir {
969*cdf0e10cSrcweir 	return sal_False;
970*cdf0e10cSrcweir }
971*cdf0e10cSrcweir // -------------------------------------------------------------------------
972*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::othersUpdatesAreVisible( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
973*cdf0e10cSrcweir {
974*cdf0e10cSrcweir 	return sal_False;
975*cdf0e10cSrcweir }
976*cdf0e10cSrcweir // -------------------------------------------------------------------------
977*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::othersDeletesAreVisible( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
978*cdf0e10cSrcweir {
979*cdf0e10cSrcweir 	return sal_False;
980*cdf0e10cSrcweir }
981*cdf0e10cSrcweir // -------------------------------------------------------------------------
982*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::othersInsertsAreVisible( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
983*cdf0e10cSrcweir {
984*cdf0e10cSrcweir 	return sal_False;
985*cdf0e10cSrcweir }
986*cdf0e10cSrcweir // -------------------------------------------------------------------------
987*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::updatesAreDetected( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
988*cdf0e10cSrcweir {
989*cdf0e10cSrcweir 	return sal_False;
990*cdf0e10cSrcweir }
991*cdf0e10cSrcweir // -------------------------------------------------------------------------
992*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::deletesAreDetected( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
993*cdf0e10cSrcweir {
994*cdf0e10cSrcweir 	return sal_False;
995*cdf0e10cSrcweir }
996*cdf0e10cSrcweir // -------------------------------------------------------------------------
997*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::insertsAreDetected( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
998*cdf0e10cSrcweir {
999*cdf0e10cSrcweir 	return sal_False;
1000*cdf0e10cSrcweir }
1001*cdf0e10cSrcweir // -------------------------------------------------------------------------
1002*cdf0e10cSrcweir sal_Bool SAL_CALL OEvoabDatabaseMetaData::supportsBatchUpdates(  ) throw(SQLException, RuntimeException)
1003*cdf0e10cSrcweir {
1004*cdf0e10cSrcweir 	return sal_False;
1005*cdf0e10cSrcweir }
1006*cdf0e10cSrcweir // -------------------------------------------------------------------------
1007*cdf0e10cSrcweir // here follow all methods which return a resultset
1008*cdf0e10cSrcweir // the first methods is an example implementation how to use this resultset
1009*cdf0e10cSrcweir // of course you could implement it on your and you should do this because
1010*cdf0e10cSrcweir // the general way is more memory expensive
1011*cdf0e10cSrcweir // -------------------------------------------------------------------------
1012*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL OEvoabDatabaseMetaData::getTableTypes(  ) throw(SQLException, RuntimeException)
1013*cdf0e10cSrcweir {
1014*cdf0e10cSrcweir 	/* Dont need to change as evoab driver supports only table */
1015*cdf0e10cSrcweir 
1016*cdf0e10cSrcweir 	// there exists no possibility to get table types so we have to check
1017*cdf0e10cSrcweir 	static ::rtl::OUString sTableTypes[] =
1018*cdf0e10cSrcweir 	{
1019*cdf0e10cSrcweir 		::rtl::OUString::createFromAscii("TABLE"),
1020*cdf0e10cSrcweir         // Currently we only support a 'TABLE' nothing more complex
1021*cdf0e10cSrcweir 	};
1022*cdf0e10cSrcweir     ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTableTypes);
1023*cdf0e10cSrcweir 	Reference< XResultSet > xRef = pResult;
1024*cdf0e10cSrcweir 
1025*cdf0e10cSrcweir 	// here we fill the rows which should be visible when ask for data from the resultset returned here
1026*cdf0e10cSrcweir 	sal_Int32  nSize = sizeof(sTableTypes) / sizeof(::rtl::OUString);
1027*cdf0e10cSrcweir 	ODatabaseMetaDataResultSet::ORows aRows;
1028*cdf0e10cSrcweir 	for(sal_Int32 i=0;i < nSize;++i)
1029*cdf0e10cSrcweir 	{
1030*cdf0e10cSrcweir 		ODatabaseMetaDataResultSet::ORow aRow;
1031*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
1032*cdf0e10cSrcweir 		aRow.push_back(new ORowSetValueDecorator(sTableTypes[i]));
1033*cdf0e10cSrcweir 
1034*cdf0e10cSrcweir 		// bound row
1035*cdf0e10cSrcweir 		aRows.push_back(aRow);
1036*cdf0e10cSrcweir 	}
1037*cdf0e10cSrcweir 	// here we set the rows at the resultset
1038*cdf0e10cSrcweir 	pResult->setRows(aRows);
1039*cdf0e10cSrcweir 	return xRef;
1040*cdf0e10cSrcweir }
1041*cdf0e10cSrcweir // -------------------------------------------------------------------------
1042*cdf0e10cSrcweir Reference< XResultSet > OEvoabDatabaseMetaData::impl_getTypeInfo_throw(  )
1043*cdf0e10cSrcweir {
1044*cdf0e10cSrcweir 	/*
1045*cdf0e10cSrcweir 	 * Return the proper type information required by evo driver
1046*cdf0e10cSrcweir 	 */
1047*cdf0e10cSrcweir 
1048*cdf0e10cSrcweir 	ODatabaseMetaDataResultSet* pResultSet = new ODatabaseMetaDataResultSet(ODatabaseMetaDataResultSet::eTypeInfo);
1049*cdf0e10cSrcweir 
1050*cdf0e10cSrcweir 	Reference< XResultSet > xResultSet = pResultSet;
1051*cdf0e10cSrcweir 	static ODatabaseMetaDataResultSet::ORows aRows;
1052*cdf0e10cSrcweir 
1053*cdf0e10cSrcweir 	if(aRows.empty())
1054*cdf0e10cSrcweir 	{
1055*cdf0e10cSrcweir 		ODatabaseMetaDataResultSet::ORow aRow;
1056*cdf0e10cSrcweir 		aRow.reserve(19);
1057*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
1058*cdf0e10cSrcweir 		aRow.push_back(new ORowSetValueDecorator(::rtl::OUString::createFromAscii("VARCHAR")));
1059*cdf0e10cSrcweir 		aRow.push_back(new ORowSetValueDecorator(DataType::VARCHAR));
1060*cdf0e10cSrcweir 		aRow.push_back(new ORowSetValueDecorator((sal_Int32)s_nCHAR_OCTET_LENGTH));
1061*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::getQuoteValue());
1062*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::getQuoteValue());
1063*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
1064*cdf0e10cSrcweir 		// aRow.push_back(new ORowSetValueDecorator((sal_Int32)ColumnValue::NULLABLE));
1065*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::get1Value());
1066*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::get1Value());
1067*cdf0e10cSrcweir 		aRow.push_back(new ORowSetValueDecorator((sal_Int32)ColumnSearch::FULL));
1068*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::get1Value());
1069*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::get0Value());
1070*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::get0Value());
1071*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
1072*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::get0Value());
1073*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::get0Value());
1074*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
1075*cdf0e10cSrcweir 		aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
1076*cdf0e10cSrcweir 		aRow.push_back(new ORowSetValueDecorator((sal_Int32)10));
1077*cdf0e10cSrcweir 
1078*cdf0e10cSrcweir 		aRows.push_back(aRow);
1079*cdf0e10cSrcweir 
1080*cdf0e10cSrcweir 		aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("VARCHAR"));
1081*cdf0e10cSrcweir 		aRow[2] = new ORowSetValueDecorator(DataType::VARCHAR);
1082*cdf0e10cSrcweir 		aRow[3] = new ORowSetValueDecorator((sal_Int32)65535);
1083*cdf0e10cSrcweir 		aRows.push_back(aRow);
1084*cdf0e10cSrcweir 	}
1085*cdf0e10cSrcweir 	pResultSet->setRows(aRows);
1086*cdf0e10cSrcweir 	return xResultSet;
1087*cdf0e10cSrcweir }
1088*cdf0e10cSrcweir // -------------------------------------------------------------------------
1089*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL OEvoabDatabaseMetaData::getColumns(
1090*cdf0e10cSrcweir 	const Any& /*catalog*/, const ::rtl::OUString& /*schemaPattern*/, const ::rtl::OUString& /*tableNamePattern*/,
1091*cdf0e10cSrcweir 	const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException)
1092*cdf0e10cSrcweir {
1093*cdf0e10cSrcweir 	// this returns an empty resultset where the column-names are already set
1094*cdf0e10cSrcweir 	// in special the metadata of the resultset already returns the right columns
1095*cdf0e10cSrcweir     ODatabaseMetaDataResultSet* pResultSet = new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eColumns );
1096*cdf0e10cSrcweir 	Reference< XResultSet > xResultSet = pResultSet;
1097*cdf0e10cSrcweir 	pResultSet->setRows( getColumnRows( columnNamePattern ) );
1098*cdf0e10cSrcweir 	return xResultSet;
1099*cdf0e10cSrcweir }
1100*cdf0e10cSrcweir // -------------------------------------------------------------------------
1101*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL OEvoabDatabaseMetaData::getTables(
1102*cdf0e10cSrcweir 	const Any& /*catalog*/, const ::rtl::OUString& /*schemaPattern*/,
1103*cdf0e10cSrcweir 	const ::rtl::OUString& /*tableNamePattern*/, const Sequence< ::rtl::OUString >& types ) throw(SQLException, RuntimeException)
1104*cdf0e10cSrcweir {
1105*cdf0e10cSrcweir 	::osl::MutexGuard aGuard( m_aMutex );
1106*cdf0e10cSrcweir 
1107*cdf0e10cSrcweir 	ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(ODatabaseMetaDataResultSet::eTableTypes);
1108*cdf0e10cSrcweir 	Reference< XResultSet > xRef = pResult;
1109*cdf0e10cSrcweir 
1110*cdf0e10cSrcweir 	// check if any type is given
1111*cdf0e10cSrcweir 	// when no types are given then we have to return all tables e.g. TABLE
1112*cdf0e10cSrcweir 
1113*cdf0e10cSrcweir 	const ::rtl::OUString aTable(::rtl::OUString::createFromAscii("TABLE"));
1114*cdf0e10cSrcweir 
1115*cdf0e10cSrcweir 	sal_Bool bTableFound = sal_True;
1116*cdf0e10cSrcweir 	sal_Int32 nLength = types.getLength();
1117*cdf0e10cSrcweir 	if(nLength)
1118*cdf0e10cSrcweir 		{
1119*cdf0e10cSrcweir 			bTableFound = sal_False;
1120*cdf0e10cSrcweir 
1121*cdf0e10cSrcweir 			const ::rtl::OUString* pBegin = types.getConstArray();
1122*cdf0e10cSrcweir 			const ::rtl::OUString* pEnd	= pBegin + nLength;
1123*cdf0e10cSrcweir 			for(;pBegin != pEnd;++pBegin)
1124*cdf0e10cSrcweir 				{
1125*cdf0e10cSrcweir 					if(*pBegin == aTable)
1126*cdf0e10cSrcweir 						{
1127*cdf0e10cSrcweir 							bTableFound = sal_True;
1128*cdf0e10cSrcweir 							break;
1129*cdf0e10cSrcweir 						}
1130*cdf0e10cSrcweir 				}
1131*cdf0e10cSrcweir 		}
1132*cdf0e10cSrcweir 	if(!bTableFound)
1133*cdf0e10cSrcweir 		return xRef;
1134*cdf0e10cSrcweir 
1135*cdf0e10cSrcweir 	ODatabaseMetaDataResultSet::ORows aRows;
1136*cdf0e10cSrcweir 
1137*cdf0e10cSrcweir 	ESourceList *pSourceList;
1138*cdf0e10cSrcweir 	if( !e_book_get_addressbooks (&pSourceList, NULL) )
1139*cdf0e10cSrcweir 			pSourceList = NULL;
1140*cdf0e10cSrcweir 
1141*cdf0e10cSrcweir 	GSList *g;
1142*cdf0e10cSrcweir 	for( g = e_source_list_peek_groups( pSourceList ); g; g = g->next)
1143*cdf0e10cSrcweir 	{
1144*cdf0e10cSrcweir 		GSList *s;
1145*cdf0e10cSrcweir 		const char *p = e_source_group_peek_base_uri(E_SOURCE_GROUP(g->data));
1146*cdf0e10cSrcweir 
1147*cdf0e10cSrcweir 		switch (m_pConnection->getSDBCAddressType()) {
1148*cdf0e10cSrcweir 		case SDBCAddress::EVO_GWISE:
1149*cdf0e10cSrcweir 					if (0==strncmp( "groupwise://", p, 11 ))
1150*cdf0e10cSrcweir 						break;
1151*cdf0e10cSrcweir 					else
1152*cdf0e10cSrcweir 						continue;
1153*cdf0e10cSrcweir 		case SDBCAddress::EVO_LOCAL:
1154*cdf0e10cSrcweir 					if (0==strncmp( "file://", p, 6 ))
1155*cdf0e10cSrcweir 						break;
1156*cdf0e10cSrcweir 					else
1157*cdf0e10cSrcweir 						continue;
1158*cdf0e10cSrcweir 		case SDBCAddress::EVO_LDAP:
1159*cdf0e10cSrcweir 					if (0==strncmp( "ldap://", p, 6 ))
1160*cdf0e10cSrcweir 						break;
1161*cdf0e10cSrcweir 					else
1162*cdf0e10cSrcweir 						continue;
1163*cdf0e10cSrcweir         case SDBCAddress::Unknown:
1164*cdf0e10cSrcweir             break;
1165*cdf0e10cSrcweir 		}
1166*cdf0e10cSrcweir 		for (s = e_source_group_peek_sources (E_SOURCE_GROUP (g->data)); s; s = s->next)
1167*cdf0e10cSrcweir 		{
1168*cdf0e10cSrcweir 			ESource *pSource = E_SOURCE (s->data);
1169*cdf0e10cSrcweir 
1170*cdf0e10cSrcweir 			rtl::OUString aName = rtl::OStringToOUString( e_source_peek_name( pSource ),
1171*cdf0e10cSrcweir 														  RTL_TEXTENCODING_UTF8 );
1172*cdf0e10cSrcweir 
1173*cdf0e10cSrcweir 			ODatabaseMetaDataResultSet::ORow aRow(3);
1174*cdf0e10cSrcweir 			aRow.reserve(6);
1175*cdf0e10cSrcweir 			aRow.push_back(new ORowSetValueDecorator(aName));
1176*cdf0e10cSrcweir 			aRow.push_back(new ORowSetValueDecorator(aTable));
1177*cdf0e10cSrcweir 			aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue());
1178*cdf0e10cSrcweir 			aRows.push_back(aRow);
1179*cdf0e10cSrcweir 		}
1180*cdf0e10cSrcweir 	}
1181*cdf0e10cSrcweir 
1182*cdf0e10cSrcweir 	pResult->setRows(aRows);
1183*cdf0e10cSrcweir 
1184*cdf0e10cSrcweir 	return xRef;
1185*cdf0e10cSrcweir }
1186*cdf0e10cSrcweir // -------------------------------------------------------------------------
1187*cdf0e10cSrcweir Reference< XResultSet > SAL_CALL OEvoabDatabaseMetaData::getUDTs( const Any& /*catalog*/, const ::rtl::OUString& /*schemaPattern*/, const ::rtl::OUString& /*typeNamePattern*/, const Sequence< sal_Int32 >& /*types*/ ) throw(SQLException, RuntimeException)
1188*cdf0e10cSrcweir {
1189*cdf0e10cSrcweir     ::dbtools::throwFeatureNotImplementedException( "XDatabaseMetaDaza::getUDTs", *this );
1190*cdf0e10cSrcweir     return NULL;
1191*cdf0e10cSrcweir }
1192*cdf0e10cSrcweir // -----------------------------------------------------------------------------
1193