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