Added a menu item for executing applications, restored previous workflow 
launching menu action, made composing workflows for executing single 
applciations optional


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/4056bb91
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/4056bb91
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/4056bb91

Branch: refs/heads/master
Commit: 4056bb916e4de9acafbf3a8740c28152ea9b5ef4
Parents: 6b519e2
Author: Nadeem Anjum <[email protected]>
Authored: Wed Aug 20 02:57:48 2014 +0530
Committer: Nadeem Anjum <[email protected]>
Committed: Wed Aug 20 02:57:48 2014 +0530

----------------------------------------------------------------------
 .../ui/experiment/LaunchApplicationWindow.java  | 136 ++++++++++++-------
 .../xbaya/ui/menues/ApplicationMenuItem.java    |  59 ++++++++
 .../airavata/xbaya/ui/menues/RunMenuItem.java   |   9 +-
 .../airavata/xbaya/ui/menues/XBayaMenu.java     |   5 +-
 4 files changed, 150 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/4056bb91/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/experiment/LaunchApplicationWindow.java
----------------------------------------------------------------------
diff --git 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/experiment/LaunchApplicationWindow.java
 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/experiment/LaunchApplicationWindow.java
index 18daea0..e99a6f3 100644
--- 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/experiment/LaunchApplicationWindow.java
+++ 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/experiment/LaunchApplicationWindow.java
@@ -51,6 +51,7 @@ import 
org.apache.airavata.model.workspace.experiment.DataObjectType;
 import org.apache.airavata.model.workspace.experiment.DataType;
 import org.apache.airavata.model.workspace.experiment.Experiment;
 import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
+import org.apache.airavata.workflow.model.graph.DataPort;
 import org.apache.airavata.workflow.model.graph.impl.NodeImpl;
 import org.apache.airavata.workflow.model.graph.system.InputNode;
 import org.apache.airavata.workflow.model.graph.system.OutputNode;
@@ -127,33 +128,30 @@ public class LaunchApplicationWindow {
         }
 
         // Create input fields
-        Collection<InputNode> inputNodes = 
GraphUtil.getInputNodes(this.workflow.getGraph());
-        for (InputNode node : inputNodes) {
-            String id = node.getID();
-            QName parameterType = node.getParameterType();
-            JLabel nameLabel = new JLabel(id);
+        List<NodeImpl> nodes = workflow.getGraph().getNodes();
+        NodeImpl node = null;
+       for(int i=0; i<nodes.size(); i++){
+               node = nodes.get(i);
+               String html = node.getComponent().toHTML();                     
+               String nodeType =html.substring(html.indexOf("<h1>")+4, 
html.indexOf(":")).trim();              
+               if(nodeType.equals("Application")){                     
+                       break;                          
+               }
+       }
+       List<DataPort> inputPorts = node.getInputPorts();
+       for(DataPort port : inputPorts){
+               String id = port.getName();
+               QName parameterType = port.getType();
+               JLabel nameLabel = new JLabel(id);
             JLabel typeField = new JLabel(parameterType.getLocalPart());
-            XBayaTextField paramField = new XBayaTextField();
-            Object value = node.getDefaultValue();
-
-            String valueString;
-            if (value == null) {
-                valueString = "";
-            } else {
-                if (value instanceof XmlElement) {
-                    XmlElement valueElement = (XmlElement) value;
-                    valueString = XMLUtil.xmlElementToString(valueElement);
-                } else {
-                    // Only string comes here for now.
-                    valueString = value.toString();
-                }
-            }
-            paramField.setText(valueString);            
+            XBayaTextField paramField = new XBayaTextField();            
+            paramField.setText("");
             this.parameterPanel.add(nameLabel);
             this.parameterPanel.add(typeField);
             this.parameterPanel.add(paramField);
             this.parameterTextFields.add(paramField);
-        }
+       }
+       
         
                Map<String, String> hosts = null;
                        
@@ -268,13 +266,14 @@ public class LaunchApplicationWindow {
     private void execute() throws AiravataClientConnectException, 
InvalidRequestException, AiravataClientException, AiravataSystemException, 
TException {
        List<NodeImpl> nodes = workflow.getGraph().getNodes();
        String appId = null;
+       NodeImpl node = null;
        for(int i=0; i<nodes.size(); i++){
-               NodeImpl node = nodes.get(i);
-               String html = node.getComponent().toHTML();
+               node = nodes.get(i);
+               String html = node.getComponent().toHTML();                     
                String nodeType =html.substring(html.indexOf("<h1>")+4, 
html.indexOf(":")).trim();              
                if(nodeType.equals("Application")){
                        appId=html.substring(html.indexOf("</h2>")+6, 
html.indexOf("<br")).trim();
-                       break;
+                       break;                          
                }
        }
        
@@ -301,7 +300,7 @@ public class LaunchApplicationWindow {
         if(owner.equals(""))owner="NotKnown";              
         project.setOwner(owner);
         project.setProjectID(airavataClient.createProject(project));
-        final List<InputNode> inputNodes = 
GraphUtil.getInputNodes(this.workflow.getGraph());
+        final List<DataPort> inputPorts = node.getInputPorts();
         final Experiment experiment = new Experiment();
         experiment.setApplicationId(appId);
         ComputationalResourceScheduling scheduling = new 
ComputationalResourceScheduling();
@@ -325,24 +324,57 @@ public class LaunchApplicationWindow {
         experiment.setName(instanceName);
         experiment.setProjectID(project.getProjectID());
         experiment.setUserName(thriftClientData.getUsername());
-        for (int i = 0; i < inputNodes.size(); i++) {
-            InputNode inputNode = inputNodes.get(i);
-            XBayaTextField parameterTextField = 
this.parameterTextFields.get(i);
-            inputNode.getID();
+        for (int i = 0; i < inputPorts.size(); i++) {
+            DataPort inputPort = inputPorts.get(i);
+            XBayaTextField parameterTextField = 
this.parameterTextFields.get(i);           
             String value = parameterTextField.getText();
             DataObjectType elem = new DataObjectType();
-            elem.setKey(inputNode.getID());
-            elem.setType(DataType.STRING);
+            elem.setKey(inputPort.getName());
+            String type = inputPort.getType().getLocalPart().trim();
+            DataType inpType = DataType.STRING;
+            if(type.equalsIgnoreCase("string")){
+               inpType=DataType.STRING;
+            }
+            else if(type.equalsIgnoreCase("integer")){
+               inpType=DataType.INTEGER;
+            }
+            else if(type.equalsIgnoreCase("uri")){
+               inpType=DataType.URI;
+            }
+            else if(type.equalsIgnoreCase("stdour")){
+               inpType=DataType.STDOUT;
+            }
+            else if(type.equalsIgnoreCase("stderr")){
+               inpType=DataType.STDERR;
+            }
+            elem.setType(inpType);
             elem.setValue(value);
                        experiment.addToExperimentInputs(elem );
         }
-        final List<OutputNode> outputNodes = 
GraphUtil.getOutputNodes(this.workflow.getGraph());
+        final List<DataPort> outputPorts = node.getOutputPorts();
         
-        for (int i = 0; i < outputNodes.size(); i++) {
-            OutputNode outputNode = outputNodes.get(i);
+        for (int i = 0; i < outputPorts.size(); i++) {
+            DataPort outputPort = outputPorts.get(i);
             DataObjectType elem = new DataObjectType();
-            elem.setKey(outputNode.getID());
-            elem.setType(DataType.STRING);
+            elem.setKey(outputPort.getName());
+            String type = outputPort.getType().getLocalPart().trim();
+            DataType outType = DataType.STRING;
+            if(type.equalsIgnoreCase("string")){
+               outType=DataType.STRING;
+            }
+            else if(type.equalsIgnoreCase("integer")){
+               outType=DataType.INTEGER;
+            }
+            else if(type.equalsIgnoreCase("uri")){
+               outType=DataType.URI;
+            }
+            else if(type.equalsIgnoreCase("stdour")){
+               outType=DataType.STDOUT;
+            }
+            else if(type.equalsIgnoreCase("stderr")){
+               outType=DataType.STDERR;
+            }
+            elem.setType(outType);
             elem.setValue("");
                        experiment.addToExperimentOutputs(elem );
         }
@@ -368,25 +400,26 @@ public class LaunchApplicationWindow {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
-        String output = "";
-        while(output.equals("")){
-               String fullOutput = "Experiment Completed Successfully. 
Output(s) are shown below:\n";
-               if(status.equals("COMPLETED")){
+        
+        if(status.equals("COMPLETED")){
+               String output="";;
+               String fullOutput="";
+               while(output.equals("")){
+                       output = "";
+                       fullOutput = "Experiment Completed Successfully. 
Output(s) are shown below:\n";
                List<DataObjectType> outputs = 
airavataClient.getExperimentOutputs(experiment.getExperimentID());
                for(int i1=0; i1<outputs.size(); i1++){
                        output = outputs.get(i1).getValue();
                        fullOutput+= outputs.get(i1).getKey()+": "+output+"\n";
                        
-               }
-               JOptionPane.showMessageDialog(null, fullOutput);
-            }
-            else{
-               JOptionPane.showMessageDialog(null, "Experiment Failed");
-               return;
-            }
+               }               
+            } 
+               JOptionPane.showMessageDialog(null, fullOutput);
+        }
+        else{
+               JOptionPane.showMessageDialog(null, "Experiment Failed");
+               return;
         }
-
-
         new Thread() {
             @Override
             public void run() {
@@ -395,6 +428,5 @@ public class LaunchApplicationWindow {
         }.start();
 
         hide();
-    } 
-       
+    }       
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/4056bb91/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/ApplicationMenuItem.java
----------------------------------------------------------------------
diff --git 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/ApplicationMenuItem.java
 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/ApplicationMenuItem.java
new file mode 100644
index 0000000..1787c06
--- /dev/null
+++ 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/ApplicationMenuItem.java
@@ -0,0 +1,59 @@
+package org.apache.airavata.xbaya.ui.menues;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+
+import org.apache.airavata.xbaya.XBayaEngine;
+import org.apache.airavata.xbaya.ui.experiment.LaunchApplicationWindow;
+
+public class ApplicationMenuItem {
+       
+       private JMenu applicationMenu;
+
+    private JMenuItem executeApplicationItem;
+    
+       private XBayaEngine engine;
+
+       public ApplicationMenuItem(XBayaEngine engine) {
+               this.engine = engine;
+
+        createApplicationMenu();
+       }
+
+       private void createApplicationMenu() {
+               createExecuteApplicationItem();
+               this.applicationMenu = new JMenu("Run Applications");
+               this.applicationMenu.add(this.executeApplicationItem);
+               this.applicationMenu.addSeparator();
+       }
+
+       private void createExecuteApplicationItem() {
+               this.executeApplicationItem = new JMenuItem("Execute 
Application");
+               this.executeApplicationItem.addActionListener(new 
AbstractAction() {
+                       private LaunchApplicationWindow window;
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                if (this.window == null) {
+                    this.window = new 
LaunchApplicationWindow(ApplicationMenuItem.this.engine);
+                }
+                try {
+                    this.window.show();
+                } catch (Exception e1) {
+                    
ApplicationMenuItem.this.engine.getGUI().getErrorWindow().error(e1);
+                }
+            }
+        });
+               
+       }
+
+       public JMenu getMenu() {
+               return this.applicationMenu;
+       }
+
+       
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4056bb91/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java
----------------------------------------------------------------------
diff --git 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java
 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java
index 6cfde9f..0320e06 100644
--- 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java
+++ 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/RunMenuItem.java
@@ -45,8 +45,7 @@ import 
org.apache.airavata.xbaya.XBayaConfiguration.XBayaExecutionMode;
 import org.apache.airavata.xbaya.XBayaEngine;
 import org.apache.airavata.xbaya.core.ide.XBayaExecutionModeListener;
 import org.apache.airavata.xbaya.ui.dialogs.monitor.MonitorConfigurationWindow;
-import org.apache.airavata.xbaya.ui.experiment.LaunchApplicationWindow;
-//import 
org.apache.airavata.xbaya.ui.experiment.WorkflowInterpreterLaunchWindow;
+import org.apache.airavata.xbaya.ui.experiment.WorkflowInterpreterLaunchWindow;
 import org.apache.airavata.xbaya.ui.monitor.MonitorStarter;
 import org.apache.airavata.xbaya.ui.utils.ErrorMessages;
 import org.apache.airavata.xbaya.ui.widgets.ToolbarButton;
@@ -268,8 +267,7 @@ public class RunMenuItem  implements EventListener, 
XBayaExecutionModeListener{
     private void createLaunchXBayaInterpreterItem() {
         this.launchXBayaInterpreterItem = new JMenuItem("Run on Interpreter 
Server...", MenuIcons.RUN_ICON);
         AbstractAction action = new AbstractAction() {
-               //private WorkflowInterpreterLaunchWindow window;
-            private LaunchApplicationWindow window;
+               private WorkflowInterpreterLaunchWindow window;            
             public void actionPerformed(ActionEvent e) {
                 
if(!engine.getMonitor().hasCurrentExecutionTerminatedNotificationReceived() && 
engine.getMonitor().isMonitoring()){
                     if (JOptionPane.showConfirmDialog(null,
@@ -279,8 +277,7 @@ public class RunMenuItem  implements EventListener, 
XBayaExecutionModeListener{
                     }
                 }
 //                if (this.window == null) {
-                //this.window = new WorkflowInterpreterLaunchWindow(engine);
-                this.window = new LaunchApplicationWindow(engine);
+                this.window = new WorkflowInterpreterLaunchWindow(engine);
 //                }
                 try {
                     this.window.show();

http://git-wip-us.apache.org/repos/asf/airavata/blob/4056bb91/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/XBayaMenu.java
----------------------------------------------------------------------
diff --git 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/XBayaMenu.java
 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/XBayaMenu.java
index 5b472ed..3eb385a 100644
--- 
a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/XBayaMenu.java
+++ 
b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/menues/XBayaMenu.java
@@ -53,6 +53,8 @@ public class XBayaMenu implements 
XBayaComponent,XBayaExecutionModeListener{
        private RegistryMenuItem registryMenuItem;
 
     private AmazonEC2MenuItem amazonEC2MenuItem;
+    
+    private ApplicationMenuItem applicationMenuItem;
 
 //     private ToolsMenuItem toolsMenuItem;
 
@@ -80,7 +82,7 @@ public class XBayaMenu implements 
XBayaComponent,XBayaExecutionModeListener{
                runMenuItem = new RunMenuItem(getEngine(), getToolBar());
                registryMenuItem = new 
RegistryMenuItem(getEngine(),getToolBar());
 //             toolsMenuItem = new ToolsMenuItem(getEngine());
-
+               applicationMenuItem = new ApplicationMenuItem(getEngine());
                createMenuBar();
                executionModeChanged(getEngine().getConfiguration());
        }
@@ -106,6 +108,7 @@ public class XBayaMenu implements 
XBayaComponent,XBayaExecutionModeListener{
 //        menuBar.add(toolsMenuItem.getMenu());
         menuBar.add(registryMenuItem.getMenu());
         menuBar.add(amazonEC2MenuItem.getMenu());
+        menuBar.add(applicationMenuItem.getMenu());
         // Space before Help
         this.menuBar.add(Box.createHorizontalGlue());
 

Reply via email to