From 43bede85f046374e2a6f3d6192bce6076b14644f Mon Sep 17 00:00:00 2001 From: servertood Date: Mon, 29 Dec 2008 20:35:33 +0000 Subject: [PATCH] make oracle and mysql specific --- extra/jheidi/loadTableDataMySQLWorker.ajl | 121 +++++++++++++++++++++ extra/jheidi/loadTableDataOracleWorker.ajl | 121 +++++++++++++++++++++ extra/jheidi/schemaTreeEventsMySQL.ajl | 6 +- extra/jheidi/schemaTreeEventsOracle.ajl | 4 +- 4 files changed, 247 insertions(+), 5 deletions(-) create mode 100644 extra/jheidi/loadTableDataMySQLWorker.ajl create mode 100644 extra/jheidi/loadTableDataOracleWorker.ajl diff --git a/extra/jheidi/loadTableDataMySQLWorker.ajl b/extra/jheidi/loadTableDataMySQLWorker.ajl new file mode 100644 index 00000000..8172618f --- /dev/null +++ b/extra/jheidi/loadTableDataMySQLWorker.ajl @@ -0,0 +1,121 @@ + import java.util.*; + + String event = arg("workerEvent"); + + if ( event == "init" || event == "done") + { + return; + } + + WindowContext context = argObj("windowContext"); + Text banner = context.get("/mainTabs/Data/toolbar/banner"); + Panel tab = context.get("/mainTabs/Data"); + Worker worker = argObj("worker"); + Table table = context.get("/mainTabs/Data/table"); + Toolbar tb = context.get("/mainTabs/Data/toolbar"); + final String tableName = arg("tableName"); + final String dbName = arg("dbName"); + boolean setRefresh = false; + + + if ( event == "longRunningTask" || event == "alreadyRunning") + { + if ( worker.isDone() && event=="longRunningTask" ) + return; + + if ( tableName.equals((String)context.get("currentTable")) && + dbName.equals((String)context.get("currentDB"))) + { + banner.setText(dbName + "." + tableName + " (loading)"); + table.clear(); + tb.updateUI(); + } + } + else if ( event == "cancelled" ) + { + DB db = worker.getProperty("db"); + + if ( db != null ) + db.cancel(); + + if ( tableName.equals((String)context.get("currentTable")) && + dbName.equals((String)context.get("currentDB"))) + { + banner.setText(dbName + "." + tableName + " (load canceled)"); + setRefresh = true; + } + + } + else if ( event == "backgroundTask" ) + { + final DB db = new SQLLoggingDB((SQLLoggingDB)context.get("db")); + worker.setProperty("db", db); + worker.setProperty("waitOperation", "select count(*) from " + dbName + "." + tableName +"; select * from " + dbName + "." + tableName); + + DB.AutoCleanupTX tx = new DB.AutoCleanupTX() { + public void execute() { + DB.Result count = db.execute("select count(*) from `" + dbName + "`.`" + tableName + "`"); + DB.Result data = db.execute("select * from `" + dbName + "`.`" + tableName + "` limit 50"); + HashObject ho = new HashObject(); + ho.put("count", count); + ho.put("data", data); + + /*try + { + Thread.sleep(5000); + } catch (Exception e) {}*/ + + publish(ho); + } + }; + + db.execute(tx); + } + else if ( event == "update") + { + HashObject resultSets = (HashObject)((java.util.List)argObj("taskResult")).get(0); + + DB.Result data = resultSets.getObject("data"); + DB.Result count = resultSets.getObject("count"); + + if ( tableName.equals((String)context.get("currentTable")) && + dbName.equals((String)context.get("currentDB"))) + { + banner.setText(dbName + "." + tableName + ": " + count.first().get(0) + " total rows"); + TableUtils.populate(table, data); + setRefresh = true; + } + + } + + if ( setRefresh ) + { + tab.setProperty("refreshScript", "loadTableDataMySQLWorker"); + tab.setProperty("refreshArgs", args()); + } + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extra/jheidi/loadTableDataOracleWorker.ajl b/extra/jheidi/loadTableDataOracleWorker.ajl new file mode 100644 index 00000000..ba4d583b --- /dev/null +++ b/extra/jheidi/loadTableDataOracleWorker.ajl @@ -0,0 +1,121 @@ + import java.util.*; + + String event = arg("workerEvent"); + + if ( event == "init" || event == "done") + { + return; + } + + WindowContext context = argObj("windowContext"); + Text banner = context.get("/mainTabs/Data/toolbar/banner"); + Panel tab = context.get("/mainTabs/Data"); + Worker worker = argObj("worker"); + Table table = context.get("/mainTabs/Data/table"); + Toolbar tb = context.get("/mainTabs/Data/toolbar"); + final String tableName = arg("tableName"); + final String dbName = arg("dbName"); + boolean setRefresh = false; + + + if ( event == "longRunningTask" || event == "alreadyRunning") + { + if ( worker.isDone() && event=="longRunningTask" ) + return; + + if ( tableName.equals((String)context.get("currentTable")) && + dbName.equals((String)context.get("currentDB"))) + { + banner.setText(dbName + "." + tableName + " (loading)"); + table.clear(); + tb.updateUI(); + } + } + else if ( event == "cancelled" ) + { + DB db = worker.getProperty("db"); + + if ( db != null ) + db.cancel(); + + if ( tableName.equals((String)context.get("currentTable")) && + dbName.equals((String)context.get("currentDB"))) + { + banner.setText(dbName + "." + tableName + " (load canceled)"); + setRefresh = true; + } + + } + else if ( event == "backgroundTask" ) + { + final DB db = new SQLLoggingDB((SQLLoggingDB)context.get("db")); + worker.setProperty("db", db); + worker.setProperty("waitOperation", "select count(*) from " + dbName + "." + tableName +"; select * from " + dbName + "." + tableName); + + DB.AutoCleanupTX tx = new DB.AutoCleanupTX() { + public void execute() { + DB.Result count = db.execute("select count(*) from " + dbName + "." + tableName); + DB.Result data = db.execute("select * from " + dbName + "." + tableName + " where rownum < 50"); + HashObject ho = new HashObject(); + ho.put("count", count); + ho.put("data", data); + + /*try + { + Thread.sleep(5000); + } catch (Exception e) {}*/ + + publish(ho); + } + }; + + db.execute(tx); + } + else if ( event == "update") + { + HashObject resultSets = (HashObject)((java.util.List)argObj("taskResult")).get(0); + + DB.Result data = resultSets.getObject("data"); + DB.Result count = resultSets.getObject("count"); + + if ( tableName.equals((String)context.get("currentTable")) && + dbName.equals((String)context.get("currentDB"))) + { + banner.setText(dbName + "." + tableName + ": " + count.first().get(0) + " total rows"); + TableUtils.populate(table, data); + setRefresh = true; + } + + } + + if ( setRefresh ) + { + tab.setProperty("refreshScript", "loadTableDataOracleWorker"); + tab.setProperty("refreshArgs", args()); + } + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extra/jheidi/schemaTreeEventsMySQL.ajl b/extra/jheidi/schemaTreeEventsMySQL.ajl index ede83389..3f8e436c 100644 --- a/extra/jheidi/schemaTreeEventsMySQL.ajl +++ b/extra/jheidi/schemaTreeEventsMySQL.ajl @@ -99,11 +99,11 @@ Thread.sleep(25); } catch (Exception e) {} - args().put("workerKey", "loadTableData" + dbName + tableName); - w = worker("loadTableDataWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING); + args().put("workerKey", "loadTableDataMySQLWorker" + dbName + tableName); + w = worker("loadTableDataMySQLWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING); if ( !w.isCancelled() ) - LongRunningTask.detect("loadTableData" + dbName+tableName, "progressWaiter", args(), w , 250); + LongRunningTask.detect("loadTableDataMySQLWorker" + dbName+tableName, "progressWaiter", args(), w , 250); } diff --git a/extra/jheidi/schemaTreeEventsOracle.ajl b/extra/jheidi/schemaTreeEventsOracle.ajl index 75ad4aca..11e080df 100644 --- a/extra/jheidi/schemaTreeEventsOracle.ajl +++ b/extra/jheidi/schemaTreeEventsOracle.ajl @@ -99,11 +99,11 @@ Thread.sleep(25); } catch (Exception e) {} - args().put("workerKey", "loadTableDataOracle" + dbName + tableName); + args().put("workerKey", "loadTableDataOracleWorker" + dbName + tableName); w = worker("loadTableDataOracleWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING); if ( !w.isCancelled() ) - LongRunningTask.detect("loadTableDataOracle" + dbName+tableName, "progressWaiter", args(), w , 250); + LongRunningTask.detect("loadTableDataOracleWorker" + dbName+tableName, "progressWaiter", args(), w , 250); }