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