String event = arg("workerEvent"); if ( event == "init" || event == "done") return; WindowContext context = argObj("windowContext"); Worker worker = argObj("worker"); boolean setRefresh = false; if ( event == "longRunningTask" || event == "alreadyRunning") { if ( worker.isDone() && event=="longRunningTask" ) return; Text banner = context.get("/mainTabs/Host/toolbar/banner"); banner.setText("MySQL (loading)"); } else if ( event == "backgroundTask" ) { final DB db = new SQLLoggingDB((SQLLoggingDB)context.get("db")); worker.setProperty("db", db); worker.setProperty("waitOperation","host information"); db.useCache(false); DB.AutoCleanupTX tx = new DB.AutoCleanupTX() { public void execute() throws Exception { DB.Result version = db.execute("select version()"); DB.Result vars = db.execute("show variables"); DB.Result processes = db.execute("show full processlist"); DB.Result status = db.execute("show /*!50002 global*/ status"); HashObject ho = new HashObject(); ho.put("version", version); ho.put("vars", vars); ho.put("processes", processes); ho.put("status", status); /*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 version = resultSets.getObject("version"); DB.Result vars = resultSets.getObject("vars"); DB.Result processes = resultSets.getObject("processes"); DB.Result status = resultSets.getObject("status"); Text banner = context.get("/mainTabs/Host/toolbar/banner"); banner.setText("MySQL " + version.first().get(0)); Table varTable = context.get("/mainTabs/Host/tabs/Variables/table"); TableUtils.populate(varTable, vars); Table processTable = context.get("/mainTabs/Host/tabs/Processes/table"); TableUtils.populate(processTable, processes); Table statusTable = context.get("/mainTabs/Host/tabs/Status/table"); TableUtils.populate(statusTable, status); setRefresh = true; } else if ( event == "cancelled" ) { DB db = worker.getProperty("db"); if ( db != null ) db.cancel(); Text banner = context.get("/mainTabs/Host/toolbar/banner"); banner.setText("MySQL (load canceled)"); setRefresh = true; } if ( setRefresh ) { //let the refresh button know what to do Panel tab = context.get("/mainTabs/Host"); tab.setProperty("refreshScript", "loadHostInfoMySQLWorker"); tab.setProperty("refreshArgs", args()); }