+ openRealized : function(logData){\r
+ \r
+ // DEBUG PURPOSE\r
+ var CHECK_HOST = false;\r
+ \r
+ var uuid = logData[2];\r
+ var host = logData[1];\r
+ \r
+ \r
+ // 1. Check that both associated views are here\r
+ var batchView;\r
+ var flowsView;\r
+ try{\r
+ batchView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("batch").getContent();\r
+ flowsView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("selector").getContent();\r
+ }catch(e){\r
+ this.debug("Cannot find either bath or flows IView!");\r
+ }\r
+ if(!batchView || !flowsView) return; \r
+ \r
+ // 2. Check that at least a host with the same name exists.\r
+ var agentsMap = flowsView.getAgentsMap(); \r
+ var currentBatchId = batchView.getBatchAgentId();\r
+ if(currentBatchId != null){\r
+ var currentHost = agentsMap[currentBatchId];\r
+ if(currentHost != host){\r
+ this.error("Cannot re-open these flows on a different host. Please clear the batch first.");\r
+ return;\r
+ }\r
+ } \r
+ if(!qx.lang.Object.contains(agentsMap, host)){\r
+ this.error("Cannot find any agent running on '"+host+"'! Please start an agent on this host.");\r
+ return;\r
+ }\r
+ //console.log(currentBatchId);\r
+ if(currentBatchId == null){\r
+ var defaultId = qx.lang.Object.getKeyFromValue(agentsMap, host);\r
+ batchView.setBatchAgentId(defaultId);\r
+ }\r
+ \r
+ // 3. Call service to load execution message\r
+ var req = org.argeo.slc.ria.SlcApi.getSlcExecutionService(uuid);\r
+ var handler = function(xmlDoc){ \r
+ var realizedFlows = org.argeo.ria.util.Element.selectNodes(xmlDoc, "slc:slc-execution/slc:realized-flows/slc:realized-flow");\r
+ for(var i=0;i<realizedFlows.length;i++){ \r
+ var newEntrySpec = new org.argeo.slc.ria.execution.BatchEntrySpec(null, null, realizedFlows[i]);\r
+ batchView.appendBatchEntrySpec(newEntrySpec);\r
+ } \r
+ };\r
+ req.addListener("completed", function(response){ \r
+ handler(response.getContent());\r
+ });\r
+ // STUB CASE\r
+ req.addListener("failed", function(){\r
+ if(!window.xmlExecStub || !window.xmlExecStub[uuid]){ \r
+ return;\r
+ }\r
+ var xmlDoc = window.xmlExecStub[uuid];\r
+ handler(xmlDoc);\r
+ }); \r
+ req.send();\r
+ },\r
+ \r
+ openDetail : function(logData){\r
+ \r
+ var uuid = logData[2];\r
+ var window = new qx.ui.window.Window("Logs Detail", "org.argeo.slc.ria/mime-xls.png");\r
+ window.setLayout(new qx.ui.layout.VBox(0));\r
+ window.setContentPadding(0); \r
+ window.open();\r
+ org.argeo.ria.components.ViewsManager.getInstance().getApplicationRoot().add(window, {\r
+ top : '20%',\r
+ left : '20%',\r
+ width: '60%',\r
+ height: '60%'\r
+ });\r
+ \r
+ var tBar = new qx.ui.toolbar.ToolBar();\r
+ window.add(tBar);\r
+ var menuButton = new qx.ui.toolbar.Button("Close", "org.argeo.slc.ria/window-close.png");\r
+ tBar.add(menuButton);\r
+ menuButton.addListener("execute", function(e){\r
+ window.close();\r
+ });\r
+ \r
+ var tableModel = new qx.ui.table.model.Simple();\r
+ var table = new org.argeo.ria.components.ui.Table(tableModel, {\r
+ "date":{NAME : "Date", WIDTH:180}, \r
+ "type":{NAME : "Type", WIDTH:90, ALIGN:"CENTER"}, \r
+ "log":"Log"\r
+ });\r
+ table.setStatusBarVisible(true);\r
+ window.add(table, {flex:1});\r
+ window.setAllowMinimize(false);\r
+ \r
+ // Call service to load execution message\r
+ var req = org.argeo.slc.ria.SlcApi.getSlcExecutionService(uuid);\r
+ req.addListener("completed", function(response){ \r
+ var xmlDoc = response.getContent();\r
+ var tableLines = [];\r
+ var parser = org.argeo.ria.util.Element;\r
+ var slcSteps = parser.selectNodes(xmlDoc, "slc:slc-execution/slc:steps/slc:slc-execution-step");\r
+ for(var i=0;i<slcSteps.length;i++){ \r
+ var step = slcSteps[i];\r
+ var date = parser.getSingleNodeText(step, "slc:begin");\r
+ var type = parser.getSingleNodeText(step, "slc:type");\r
+ var logLines = parser.selectNodes(step, "slc:log-lines/slc:log-line");\r
+ if(logLines.length > 0){\r
+ tableLines.push([date, type, parser.getSingleNodeText(logLines[0], ".")]);\r
+ if(logLines.length>1){\r
+ for(var j=1;j<logLines.length;j++){\r
+ tableLines.push(["", "", parser.getSingleNodeText(logLines[j], ".")]); \r
+ }\r
+ }\r
+ }else{\r
+ tableLines.push([date, type, ""]);\r
+ }\r
+ }\r
+ tableModel.setData(tableLines);\r
+ });\r
+ req.send();\r
+ \r
+ }, \r
+ \r