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(); } } }