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