blob: 74ddc6e14c0856353d96f67d45d3247c53960c35 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
/*
* Class.java
*
* Created on June 23, 2003, 3:19 PM
*/
/**
*
* @author oj93728
*/
package complex.connectivity.hsqldb;
import complex.connectivity.HsqlDriverTest;
import java.sql.*;
import java.lang.reflect.Method;
public class DatabaseMetaData {
private java.sql.DatabaseMetaData m_xMD;
private HsqlDriverTest m_TestCase;
/** Creates a new instance of DatabaseMetaData */
public DatabaseMetaData(HsqlDriverTest _testCase,java.sql.DatabaseMetaData _xmd) {
m_TestCase = _testCase;
m_xMD = _xmd;
}
protected void assure(String _sText,boolean btest){
m_TestCase.assurePublic(_sText,btest);
}
protected void testMethod(String sName,Class[] params,Object[] objParams,int nCount){
try {
System.out.println("test method " + sName);
Method aGet = ((Object)m_xMD).getClass().getDeclaredMethod(sName, params);
if ( aGet != null ){
ResultSet rs = (ResultSet)aGet.invoke(m_xMD, objParams);
ResultSetMetaData rsMD = rs.getMetaData();
assure( sName + " returns wrong column count" , rsMD.getColumnCount() == nCount);
}
else
assure( sName + " returns wrong column count" , false);
} catch( java.lang.NoSuchMethodException ex ) {
assure("Method " + sName + " could not be found!",false);
} catch( java.lang.IllegalAccessException ex ) {
assure("IllegalAccessException!",false);
} catch( SQLException ex ) {
assure("SQLException occured: " + ex.getMessage() ,false);
} catch( java.lang.reflect.InvocationTargetException ex ) {
assure("IllegalAccessException!",false);
} finally {
}
}
public void test(){
// try {
try{
ResultSet rs = m_xMD.getTables(null,null,"TESTCASE",null);
while ( rs.next() )
{
String catalog = rs.getString( 1 );
if ( rs.wasNull() )
catalog = null;
String schema = rs.getString( 2 );
if ( rs.wasNull() )
schema = null;
String table = rs.getString( 3 );
String type = rs.getString( 4 );
System.out.println("Catalog: " + catalog + " Schema: " + schema + " Table: " + table + " Type: " + type);
System.out.println("------------------ Columns ------------------");
ResultSet rsColumns = m_xMD.getColumns(catalog,schema,table,"%");
while ( rsColumns.next() )
{
System.out.println("Column: " + rsColumns.getString( 4 ) + " Type: " + rsColumns.getInt( 5 ) + " TypeName: " + rsColumns.getString( 6 ) );
}
}
} catch(Exception e){
}
//testMethod("getTypeInfo", zclass,empty,17);
/*
Class[] zclass = new Class[]{};
Object[] empty = new Object[]{};
testMethod("getCatalogs", zclass,empty,1);
testMethod("getSchemas", zclass,empty,2);
testMethod("getTableTypes", zclass,empty,1);
Class[] a4 = new Class[4];
Object[] o4 = new Object[4];
a4[0] = Class.forName("java.lang.Object");
a4[1] = Class.forName("java.lang.String");
a4[2] = Class.forName("java.lang.String");
a4[3] = Class.forName("java.lang.String");
o4[0] = null;
o4[1] = null;
o4[2] = null;
o4[3] = "%";
testMethod("getColumnPrivileges", a4,o4,7);
testMethod("getColumns", a4,o4,18);
testMethod("getProcedureColumns", a4,o4,13);
testMethod("getColumns", a4,o4,18);
Class[] a3 = new Class[3];
Object[] o3 = new Object[3];
a3[0] = Class.forName("java.lang.Object");
a3[1] = Class.forName("java.lang.String");
a3[2] = Class.forName("java.lang.String");
o3[0] = null;
o3[1] = null;
o3[2] = "%";
testMethod("getExportedKeys", a3,o3,14);
testMethod("getImportedKeys", a3,o3,14);
testMethod("getPrimaryKeys", a3,o3,14);
testMethod("getProcedures", a3,o3,5);
testMethod("getTablePrivileges", a3,o3,6);
testMethod("getVersionColumns", a3,o3,7);
// testMethod("getCrossReference", a3,o3,14);
} catch( java.lang.ClassNotFoundException ex) {
assure("ClassNotFoundException: " + ex.getMessage() ,false);
}
*/
}
/*
public com.sun.star.sdbc.XResultSet getCrossReference(Object obj, String str, String str2, Object obj3, String str4, String str5) {
}
public com.sun.star.sdbc.XResultSet getIndexInfo(Object obj, String str, String str2, boolean param, boolean param4) {
}
public com.sun.star.sdbc.XResultSet getTables(Object obj, String str, String str2, String[] str3) {
}
public com.sun.star.sdbc.XResultSet getUDTs(Object obj, String str, String str2, int[] values) {
}
public com.sun.star.sdbc.XResultSet getBestRowIdentifier(Object obj, String str, String str2, int param, boolean param4) throws com.sun.star.sdbc.SQLException {
}
*/
}