package com.smtscript.lib.jdbc;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import org.mozilla.javascript.NativeArray;
import org.mozilla.javascript.NativeObject;
import com.smtscript.lib.JSComment;
import com.smtscript.utils.SMTStatic;
public class ScriptJDBCMetaData
{
private Connection _conn;
private DatabaseMetaData _metaData;
public ScriptJDBCMetaData(Connection conn) throws Exception
{
_conn = conn;
_metaData = _conn.getMetaData();
}
public NativeObject getDatabaseInfo() throws Exception
{
NativeObject nvRet = new NativeObject();
SMTStatic.putJSNotNullValue(nvRet, "major_version", _metaData.getDatabaseMajorVersion());
SMTStatic.putJSNotNullValue(nvRet, "minor_version", _metaData.getDatabaseMinorVersion());
SMTStatic.putJSNotNullValue(nvRet, "proc_name", _metaData.getDatabaseProductName());
SMTStatic.putJSNotNullValue(nvRet, "proc_version", _metaData.getDatabaseProductVersion());
SMTStatic.putJSNotNullValue(nvRet, "driver_name", _metaData.getDriverName());
SMTStatic.putJSNotNullValue(nvRet, "driver_version", _metaData.getDriverVersion());
return nvRet;
}
public NativeArray queryCatalogs() throws Exception
{
ResultSet rs = _metaData.getCatalogs();
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
public NativeArray querySchemas() throws Exception
{
ResultSet rs = _metaData.getSchemas();
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
@JSComment(
"\n" +
"@param nvConfig \n" +
" catalog - String : catalog pattern\n" +
" schema - String : schema pattern\n" +
" table - String : table name pattern\n" +
"")
public NativeArray queryTables(NativeObject nvConfig) throws Exception
{
String catalog = (String) SMTStatic.getJSValue(nvConfig, "catalog", "");
String schema = (String) SMTStatic.getJSValue(nvConfig, "schema", "%");
String table = (String) SMTStatic.getJSValue(nvConfig, "table", "%");
ResultSet rs = _metaData.getTables(catalog, schema, table, null);
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
@JSComment(
"\n" +
"@param nvConfig \n" +
" catalog - String : catalog pattern\n" +
" schema - String : schema pattern\n" +
" table - String : table name pattern\n" +
" column - String : column name pattern\n" +
"")
public NativeArray queryColumns(NativeObject nvConfig) throws Exception
{
String catalog = (String) SMTStatic.getJSValue(nvConfig, "catalog", "");
String schema = (String) SMTStatic.getJSValue(nvConfig, "schema", "%");
String table = (String) SMTStatic.getJSValue(nvConfig, "table", "%");
String column = (String) SMTStatic.getJSValue(nvConfig, "column", "%");
ResultSet rs = _metaData.getColumns(catalog, schema, table, column);
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
@JSComment(
"\n" +
"@param nvConfig \n" +
" catalog - String : catalog pattern\n" +
" schema - String : schema pattern\n" +
" procedure- String : procedure name pattern\n" +
"")
public NativeArray queryProcedure(NativeObject nvConfig) throws Exception
{
String catalog = (String) SMTStatic.getJSValue(nvConfig, "catalog", "");
String schema = (String) SMTStatic.getJSValue(nvConfig, "schema", "%");
String procedure = (String) SMTStatic.getJSValue(nvConfig, "procedure", "%");
ResultSet rs = _metaData.getProcedures(catalog, schema, procedure);
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
@JSComment(
"\n" +
"@param nvConfig \n" +
" catalog - String : catalog pattern\n" +
" schema - String : schema pattern\n" +
" procedure- String : procedure name pattern\n" +
" column - String : column name pattern\n" +
"")
public NativeArray queryProcedureColumns(NativeObject nvConfig) throws Exception
{
String catalog = (String) SMTStatic.getJSValue(nvConfig, "catalog", "");
String schema = (String) SMTStatic.getJSValue(nvConfig, "schema", "%");
String procedure = (String) SMTStatic.getJSValue(nvConfig, "procedure", "%");
String column = (String) SMTStatic.getJSValue(nvConfig, "column", "%");
ResultSet rs = _metaData.getProcedureColumns(catalog, schema, procedure, column);
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
@JSComment(
"\n" +
"@param nvConfig \n" +
" catalog - String : catalog pattern\n" +
" schema - String : schema pattern\n" +
" function - String : function name pattern\n" +
"")
public NativeArray queryFunctions(NativeObject nvConfig) throws Exception
{
String catalog = (String) SMTStatic.getJSValue(nvConfig, "catalog", "");
String schema = (String) SMTStatic.getJSValue(nvConfig, "schema", "%");
String function = (String) SMTStatic.getJSValue(nvConfig, "function", "%");
ResultSet rs = _metaData.getFunctions(catalog, schema, function);
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
@JSComment(
"\n" +
"@param nvConfig \n" +
" catalog - String : catalog pattern\n" +
" schema - String : schema pattern\n" +
" function - String : function name pattern\n" +
" column - String : column name pattern\n" +
"")
public NativeArray queryFunctionColumns(NativeObject nvConfig) throws Exception
{
String catalog = (String) SMTStatic.getJSValue(nvConfig, "catalog", "");
String schema = (String) SMTStatic.getJSValue(nvConfig, "schema", "%");
String function = (String) SMTStatic.getJSValue(nvConfig, "function", "%");
String column = (String) SMTStatic.getJSValue(nvConfig, "column", "%");
ResultSet rs = _metaData.getFunctionColumns(catalog, schema, function, column);
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
@JSComment(
"\n" +
"@param nvConfig \n" +
" catalog - String : catalog pattern\n" +
" schema - String : schema pattern\n" +
" table - String : table name pattern\n" +
"")
public NativeArray queryPrimaryKeys(NativeObject nvConfig) throws Exception
{
String catalog = (String) SMTStatic.getJSValue(nvConfig, "catalog", "");
String schema = (String) SMTStatic.getJSValue(nvConfig, "schema", "%");
String table = (String) SMTStatic.getJSValue(nvConfig, "table", "%");
ResultSet rs = _metaData.getPrimaryKeys(catalog, schema, table);
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
@JSComment(
"\n" +
"@param nvConfig \n" +
" catalog - String : catalog pattern\n" +
" schema - String : schema pattern\n" +
" table - String : table name pattern\n" +
"")
public NativeArray queryTableIndexs(NativeObject nvConfig) throws Exception
{
String catalog = (String) SMTStatic.getJSValue(nvConfig, "catalog", "");
String schema = (String) SMTStatic.getJSValue(nvConfig, "schema");
String table = (String) SMTStatic.getJSValue(nvConfig, "table");
ResultSet rs = _metaData.getIndexInfo(catalog, schema, table, false, true);
try
{
return ScriptJDBC.__queryRSToVALUEJS__(rs);
}
finally
{
rs.close();
}
}
}