diff --git a/extra/jheidi/loadTableData.ajl b/extra/jheidi/loadTableData.ajl deleted file mode 100644 index 4a9deec6..00000000 --- a/extra/jheidi/loadTableData.ajl +++ /dev/null @@ -1,43 +0,0 @@ - - WindowContext context = argObj("windowContext"); - - DB db = context.get("db"); - - Table table = context.get("/mainTabs/Data/table"); - - db.begin(); - db.execute("use `" + arg("dbName") + "`"); - DB.Result count = db.query("select count(*) from `" + arg("tableName") + "`"); - DB.Result data = db.query("select * from `" + arg("tableName") + "` limit 50"); - db.end(); - - Text banner = context.get("/mainTabs/Data/toolbar/banner"); - banner.setText(arg("dbName") + "." + arg("tableName") + ": " + count.first().get(0) + " total rows"); - - TableUtils.populate(table, data); - - //let the refresh button know what to do - Panel tab = context.get("/mainTabs/Data"); - tab.setProperty("refreshScript", "loadTableData"); - tab.setProperty("refreshArgs", args()); - - - - - - - - - - - - - - - - - - - - - diff --git a/extra/jheidi/loadTableDataWorker.ajl b/extra/jheidi/loadTableDataWorker.ajl new file mode 100644 index 00000000..3cd02716 --- /dev/null +++ b/extra/jheidi/loadTableDataWorker.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", "loadTableDataWorker"); + tab.setProperty("refreshArgs", args()); + } + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extra/jheidi/schemaTreeEvents.ajl b/extra/jheidi/schemaTreeEvents.ajl index 6686b0cd..07c7b0dd 100644 --- a/extra/jheidi/schemaTreeEvents.ajl +++ b/extra/jheidi/schemaTreeEvents.ajl @@ -58,7 +58,6 @@ args().put("selectedTab", "Database"); thread("resetTabs", args(), true); args().put("dbName", dbName); - args().put("waitOperation", "show table status from `" + dbName + "`"); args().put("workerKey", dbName); Worker w = worker("showTableStatusWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING); @@ -76,7 +75,6 @@ args().put("dbName", dbName); args().put("tableName", tableName); - args().put("waitOperation", "show full columns from `" + dbName + "`.`" + tableName + "`"); args().put("workerKey", dbName+tableName); Worker w = worker("loadTableInfoWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING); @@ -84,7 +82,12 @@ if ( !w.isCancelled() ) LongRunningTask.detect(dbName+tableName, "progressWaiter", args(), w , 250); - thread("loadTableData", args(), true); + args().put("workerKey", "loadTableData" + dbName + tableName); + w = worker("loadTableDataWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING); + + if ( !w.isCancelled() ) + LongRunningTask.detect("loadTableData" + dbName+tableName, "progressWaiter", args(), w , 250); + }