import java.util.*; String event = arg("workerEvent"); if ( event == "init" || event == "done") { return; } WindowContext context = argObj("windowContext"); Worker worker = argObj("worker"); String dbName = arg("dbName"); Toolbar tb = context.get("/mainTabs/Database/toolbar"); Text banner = context.get("/mainTabs/Database/toolbar/banner"); Table table = context.get("/mainTabs/Database/table"); Panel tab = context.get("/mainTabs/Database"); boolean setRefresh = false; if (event == "longRunningTask" || event == "alreadyRunning" ) { if ( worker.isDone() && event == "longRunningTask" ) return; if ( dbName.equals((String)context.get("currentDB"))) { banner.setText("Database " + dbName + ": (loading)"); banner = context.get("/mainTabs/Query/toolbar/banner"); banner.setText("SQL query on database: " + dbName); table.clear(); tb.updateUI(); } } else if (event == "cancelled") { DB db = worker.getProperty("db"); if ( db != null ) db.cancel(); if (dbName.equals((String)context.get("currentDB")) ) { banner.setText("Database " + dbName + ": (load canceled)"); setRefresh = true; } } else if (event == "backgroundTask") { DB db = new SQLLoggingDB((SQLLoggingDB)context.get("db")); worker.setProperty("db", db); worker.setProperty("waitOperation", "show table status from `" + dbName + "`"); DB.Result databases = db.execute("show table status from `" + dbName + "`"); /*try { Thread.sleep(10000); } catch (Exception e) {}*/ publish(databases); } else if (event == "update") { DB.Result databases = (DB.Result)((List)argObj("taskResult")).get(0); if ( dbName.equals((String)context.get("currentDB"))) { banner.setText("Database " + dbName + ": " + databases.size() + " table(s)"); TableUtils.populate(table, databases); setRefresh = true; } } if ( setRefresh ) { tab.setProperty("refreshScript", "showTableStatusMySQLWorker"); tab.setProperty("refreshArgs", args()); }