Author: samindaw
Date: Tue Oct  8 23:32:17 2013
New Revision: 1530460

URL: http://svn.apache.org/r1530460
Log:
updating xbaya to suppose gsissh and ssh

Modified:
    
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
    
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionDialog.java
    
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionHostAdvancedOptionDialog.java
    
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/HostDescriptionDialog.java

Modified: 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java?rev=1530460&r1=1530459&r2=1530460&view=diff
==============================================================================
--- 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
 (original)
+++ 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
 Tue Oct  8 23:32:17 2013
@@ -101,14 +101,14 @@ public class StringUtil {
         * @param s
         * @return
         */
-       public static String[] getElementsFromString(String s) {
+       public static String[] getElementsFromString(String s, String 
delimeter, String quote) {
                List<String> list=new ArrayList<String>();
                String currentItem="";
                String previousChar=null;
                boolean insideQuote=false;
                for(int i=0;i<s.length();i++){
                        String c=s.substring(i,i+1);
-                       if (c.equals(DELIMETER)){
+                       if (c.equals(delimeter)){
                                //if not inside a quoted string ignore the 
delimiter character
                                if (insideQuote) {
                                        currentItem+=c;
@@ -116,10 +116,10 @@ public class StringUtil {
                                        list.add(currentItem);
                                        currentItem = "";
                                }
-                       }else if (c.equals(QUOTE)){
-                               if (QUOTE.equals(previousChar)){
+                       }else if (c.equals(quote)){
+                               if (quote.equals(previousChar)){
                                        //which means previousChar was an 
escape character, not a quote for the string
-                                       currentItem+=QUOTE;
+                                       currentItem+=quote;
                                        if (insideQuote){
                                                //mistakenly thought previous 
char was opening quote char, thus need to make this false
                                                insideQuote=false;
@@ -144,6 +144,15 @@ public class StringUtil {
                list.add(currentItem);
                return list.toArray(new String[]{});
        }
+       
+       /**
+        * Parse the delimitered string and return elements as a string array 
+        * @param s
+        * @return
+        */
+       public static String[] getElementsFromString(String s) {
+               return getElementsFromString(s, DELIMETER, QUOTE);
+       }
 
     /**
      * Converts object to String without worrying about null check.

Modified: 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionDialog.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionDialog.java?rev=1530460&r1=1530459&r2=1530460&view=diff
==============================================================================
--- 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionDialog.java
 (original)
+++ 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionDialog.java
 Tue Oct  8 23:32:17 2013
@@ -56,7 +56,9 @@ import org.apache.airavata.commons.gfac.
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
 import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
 import org.apache.airavata.schemas.gfac.GlobusHostType;
+import org.apache.airavata.schemas.gfac.GsisshHostType;
 import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
+import org.apache.airavata.schemas.gfac.SSHHostType;
 import org.apache.airavata.xbaya.XBayaEngine;
 import org.apache.airavata.xbaya.ui.menues.MenuIcons;
 import org.apache.airavata.xbaya.ui.widgets.GridPanel;
@@ -707,11 +709,17 @@ public class ApplicationDescriptionDialo
                                if (hostDescription.getType() instanceof 
GlobusHostType) {
                                        
getShellApplicationDescription().getType().changeType(
                                                
HpcApplicationDeploymentType.type);
+                               } else if (hostDescription.getType() instanceof 
GsisshHostType) {
+                                               
getShellApplicationDescription().getType().changeType(
+                                                       
HpcApplicationDeploymentType.type);
+                               } else if (hostDescription.getType() instanceof 
SSHHostType && ((SSHHostType)hostDescription.getType()).getHpcResource()) {
+                                       
getShellApplicationDescription().getType().changeType(
+                                               
HpcApplicationDeploymentType.type);
                                } else {
                                        
getShellApplicationDescription().getType().changeType(
                                                        
ApplicationDeploymentDescriptionType.type);
                                }
-                               
btnHostAdvanceOptions.setVisible(hostDescription.getType() instanceof 
GlobusHostType);
+                               
btnHostAdvanceOptions.setVisible(getShellApplicationDescription().getType() 
instanceof HpcApplicationDeploymentType);
                                String hostAddress = 
hostDescription.getType().getHostAddress();
                                boolean isLocal = isLocalAddress(hostAddress);
                                btnExecBrowse.setVisible(isLocal);

Modified: 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionHostAdvancedOptionDialog.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionHostAdvancedOptionDialog.java?rev=1530460&r1=1530459&r2=1530460&view=diff
==============================================================================
--- 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionHostAdvancedOptionDialog.java
 (original)
+++ 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/ApplicationDescriptionHostAdvancedOptionDialog.java
 Tue Oct  8 23:32:17 2013
@@ -66,6 +66,8 @@ public class ApplicationDescriptionHostA
        private XBayaLabel lblCpuCount;
        private XBayaLabel lblProcessorPerNode;
     private XBayaLabel lbNodeCount;
+       private XBayaTextField txtjobSubmitterCommand;
+       private XBayaTextField txtinstalledParentPath;
 
     /**
      * Create the dialog.
@@ -132,6 +134,9 @@ public class ApplicationDescriptionHostA
         txtCpuCount = new XBayaTextField();
         txtProcessorsPerNode = new XBayaTextField();
         txtNodeCount = new XBayaTextField();
+        txtjobSubmitterCommand = new XBayaTextField();
+        txtinstalledParentPath = new XBayaTextField();
+        
 
         DefaultComboBoxModel cmbModelJobType = new 
DefaultComboBoxModel(getJobTypesAsStrings());
                cmbJobType = new XBayaComboBox(cmbModelJobType);
@@ -158,7 +163,9 @@ public class ApplicationDescriptionHostA
                XBayaLabel lblMinMemory = new XBayaLabel("Min 
Memory",txtMinMemory);
                XBayaLabel lblMaxMemory = new XBayaLabel("Max 
Memory",txtMaxMemory);
         lbNodeCount = new XBayaLabel("Node Count", txtNodeCount);
-
+        XBayaLabel lbljobSubmitterCommand = new XBayaLabel("Job Submitter 
Command",txtjobSubmitterCommand);
+        XBayaLabel lblinstalledParentPath = new XBayaLabel("Installed Parent 
Path",txtinstalledParentPath);
+        
                panel.add(lbljobType);
                panel.add(cmbJobType);
                panel.add(lblProjectAccountNumber);
@@ -179,10 +186,14 @@ public class ApplicationDescriptionHostA
                panel.add(txtMinMemory);
         panel.add(lblMaxMemory);
         panel.add(txtMaxMemory);
+        panel.add(lbljobSubmitterCommand);
+        panel.add(txtjobSubmitterCommand);
+        panel.add(lblinstalledParentPath);
+        panel.add(txtinstalledParentPath);
                
panel.getSwingComponent().setBorder(BorderFactory.createEtchedBorder());
         
buttonPane.getSwingComponent().setBorder(BorderFactory.createEtchedBorder());
 
-        SwingUtil.layoutToGrid(panel.getSwingComponent(), 10, 2, 
SwingUtil.WEIGHT_NONE, 1);
+        SwingUtil.layoutToGrid(panel.getSwingComponent(), 12, 2, 
SwingUtil.WEIGHT_NONE, 1);
         
         buttonPane.add(okButton);
         buttonPane.add(cancelButton);
@@ -302,6 +313,28 @@ public class ApplicationDescriptionHostA
                        showError("Maximum memory must be a number", "Invalid 
value");
                        return false;
                }
+           try {
+                       if (isValueNotEmpty(txtjobSubmitterCommand.getText())) {
+                           
getHPCApplicationDescriptionType().setJobSubmitterCommand(
+                               txtjobSubmitterCommand.getText());
+                   }else{
+                       
getHPCApplicationDescriptionType().setJobSubmitterCommand(null);
+                   }
+               } catch (NumberFormatException e) {
+                       showError("Maximum memory must be a number", "Invalid 
value");
+                       return false;
+               }
+           try {
+                       if (isValueNotEmpty(txtinstalledParentPath.getText())) {
+                           
getHPCApplicationDescriptionType().setInstalledParentPath(
+                                       txtinstalledParentPath.getText());
+                   }else{
+                       
getHPCApplicationDescriptionType().setInstalledParentPath(null);
+                   }
+               } catch (NumberFormatException e) {
+                       showError("Maximum memory must be a number", "Invalid 
value");
+                       return false;
+               }           
                ProjectAccountType projectAccount = getProjectAccountType();
                if (isValueNotEmpty(txtProjectAccountNumber.getText())) {
                        
projectAccount.setProjectAccountNumber(txtProjectAccountNumber
@@ -354,6 +387,8 @@ public class ApplicationDescriptionHostA
         txtMinMemory.setText(getPropValue(hpcAppType.getMinMemory()));
         txtMaxMemory.setText(getPropValue(hpcAppType.getMaxMemory()));
         txtNodeCount.setText(getPropValue(hpcAppType.getNodeCount()));
+        
txtjobSubmitterCommand.setText(hpcAppType.getJobSubmitterCommand()==null?"":hpcAppType.getJobSubmitterCommand());
+        
txtinstalledParentPath.setText(hpcAppType.getInstalledParentPath()==null?"":hpcAppType.getInstalledParentPath());
                ProjectAccountType projectAccount = getProjectAccountType();
 
                
txtProjectAccountNumber.setText(projectAccount.getProjectAccountNumber()==null? 
"":projectAccount.getProjectAccountNumber());

Modified: 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/HostDescriptionDialog.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/HostDescriptionDialog.java?rev=1530460&r1=1530459&r2=1530460&view=diff
==============================================================================
--- 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/HostDescriptionDialog.java
 (original)
+++ 
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/descriptors/HostDescriptionDialog.java
 Tue Oct  8 23:32:17 2013
@@ -29,9 +29,12 @@ import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
+import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JDialog;
 import javax.swing.JFrame;
@@ -45,7 +48,10 @@ import org.apache.airavata.common.utils.
 import org.apache.airavata.common.utils.SwingUtil;
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.schemas.gfac.Ec2HostType;
+import org.apache.airavata.schemas.gfac.ExportProperties;
+import org.apache.airavata.schemas.gfac.ExportProperties.Name;
 import org.apache.airavata.schemas.gfac.GlobusHostType;
+import org.apache.airavata.schemas.gfac.GsisshHostType;
 import org.apache.airavata.schemas.gfac.HostDescriptionType;
 import org.apache.airavata.schemas.gfac.SSHHostType;
 import org.apache.airavata.schemas.gfac.UnicoreHostType;
@@ -91,12 +97,31 @@ public class HostDescriptionDialog exten
 
        private GridPanel infoPanel2;
 
+       private XBayaTextField exportsTextField;
+
+       private XBayaTextField preJobCommandsTextField;
+
+       private XBayaTextField postJobCommandsTextField;
+
+       private XBayaLabel postJobCommandsTextFieldLabel;
+
+       private XBayaLabel preJobCommandsLabel;
+
+       private XBayaLabel exportsLabel;
+
+       private XBayaTextField fileEndPointPrefixTextField;
+
+       private XBayaLabel fileEndPointPrefixLabel;
+
+       private JCheckBox hpcResourceCheckBoxField;
+
        private static final String REMOTE_PROTOCOL_STR_LOCAL="Local";
        private static final String REMOTE_PROTOCOL_STR_SSH="SSH";
        private static final String REMOTE_PROTOCOL_STR_GLOBUS="Globus";
        private static final String REMOTE_PROTOCOL_STR_UNICORE="Unicore";
        private static final String REMOTE_PROTOCOL_STR_AMAZON_EC2="Amazon EC2";
        private static final String REMOTE_PROTOCOL_STR_HADOOP="Hadoop";
+       private static final String REMOTE_PROTOCOL_GSI_SSH="GSI-SSH";
 
 
     public HostDescriptionDialog(AiravataAPI registry, JFrame parent) {
@@ -162,6 +187,30 @@ public class HostDescriptionDialog exten
         }else if (host instanceof UnicoreHostType){
                
((UnicoreHostType)hostDescription.getType()).addUnicoreBESEndPoint(this.gateKeeperTextField.getText());
             
((UnicoreHostType)hostDescription.getType()).addGridFTPEndPoint(this.gridFTPTextField.getText());
+        }else if (host instanceof SSHHostType){
+               
while(((SSHHostType)hostDescription.getType()).getFileEndPointPrefixArray().length>0){
+                       
((SSHHostType)hostDescription.getType()).removeFileEndPointPrefix(0);
+               }
+               String[] prefixes = 
StringUtil.getElementsFromString(this.fileEndPointPrefixTextField.getText());
+               for (String prefix : prefixes) {
+                       
((SSHHostType)hostDescription.getType()).addNewFileEndPointPrefix().setStringValue(prefix);
+                       }
+            
((SSHHostType)hostDescription.getType()).setHpcResource(hpcResourceCheckBoxField.isSelected());
+        }else if (host instanceof GsisshHostType){
+               String[] exports = 
StringUtil.getElementsFromString(exportsTextField.getText());
+               ExportProperties exportsElement = 
((GsisshHostType)hostDescription.getType()).addNewExports();
+               for (String export : exports) {
+                       String[] nameVal = 
StringUtil.getElementsFromString(export,"=",StringUtil.QUOTE);
+                       if (nameVal.length>0){
+                       Name name = exportsElement.addNewName();
+                               name.setStringValue(nameVal[0]);
+                               if (nameVal.length>1){
+                                       name.setValue(nameVal[1]);
+                               }
+                       }
+                       }
+            
((GsisshHostType)hostDescription.getType()).addNewPreJobCommands().setCommandArray(StringUtil.getElementsFromString(this.preJobCommandsTextField.getText()));
+            
((GsisshHostType)hostDescription.getType()).addNewPostJobCommands().setCommandArray(StringUtil.getElementsFromString(this.postJobCommandsTextField.getText()));
         }
         saveHostDescription();
         close();
@@ -193,7 +242,7 @@ public class HostDescriptionDialog exten
 
         XBayaLabel hostIdLabel = new XBayaLabel("Host ID", 
this.hostIdTextField);
         XBayaLabel hostAddressLabel = new XBayaLabel("Host Address", 
this.hostAddressTextField);
-        cmbResourceProtocol = new JComboBox(new 
String[]{REMOTE_PROTOCOL_STR_LOCAL,REMOTE_PROTOCOL_STR_SSH,REMOTE_PROTOCOL_STR_GLOBUS,REMOTE_PROTOCOL_STR_UNICORE,REMOTE_PROTOCOL_STR_AMAZON_EC2,
 REMOTE_PROTOCOL_STR_HADOOP});
+        cmbResourceProtocol = new JComboBox(new 
String[]{REMOTE_PROTOCOL_STR_LOCAL,REMOTE_PROTOCOL_STR_SSH,REMOTE_PROTOCOL_STR_GLOBUS,REMOTE_PROTOCOL_STR_UNICORE,REMOTE_PROTOCOL_STR_AMAZON_EC2,
 REMOTE_PROTOCOL_STR_HADOOP, REMOTE_PROTOCOL_GSI_SSH});
         JLabel lblResourceProtocol = new JLabel("Resource Protocol");
         GridPanel pnlResourceProtocolSelection=new GridPanel();
         pnlResourceProtocolSelection.add(lblResourceProtocol);
@@ -295,6 +344,40 @@ public class HostDescriptionDialog exten
         SwingUtil.layoutToGrid(globusPanel.getSwingComponent(), 2, 2, 
SwingUtil.WEIGHT_NONE, 1);
         return globusPanel;
        }
+       
+       private GridPanel createSSHRemoteProtocolPanel() {
+               GridPanel globusPanel = new GridPanel();
+        if (exportsTextField==null) {
+                       this.fileEndPointPrefixTextField = new XBayaTextField();
+                       this.hpcResourceCheckBoxField = new JCheckBox("HPC 
Resource");
+                       fileEndPointPrefixLabel = new XBayaLabel("File Endpoint 
Prefix", this.exportsTextField);
+               }
+        globusPanel.add(fileEndPointPrefixLabel);
+        globusPanel.add(fileEndPointPrefixTextField);
+        globusPanel.add(hpcResourceCheckBoxField);
+        SwingUtil.layoutToGrid(globusPanel.getSwingComponent(), 2, 2, 
SwingUtil.WEIGHT_NONE, 1);
+        return globusPanel;
+       }
+       
+       private GridPanel createGSISSHRemoteProtocolPanel() {
+               GridPanel globusPanel = new GridPanel();
+        if (exportsTextField==null) {
+                       this.exportsTextField = new XBayaTextField();
+                       this.preJobCommandsTextField = new XBayaTextField();
+                       this.postJobCommandsTextField = new XBayaTextField();
+                       exportsLabel = new XBayaLabel("Exports", 
this.exportsTextField);
+                       preJobCommandsLabel = new XBayaLabel("Pre-job 
Commands", this.preJobCommandsTextField);
+                       postJobCommandsTextFieldLabel = new 
XBayaLabel("Post-job Commands", this.postJobCommandsTextField);
+               }
+        globusPanel.add(exportsLabel);
+        globusPanel.add(exportsTextField);
+        globusPanel.add(preJobCommandsLabel);
+        globusPanel.add(preJobCommandsTextField);
+        globusPanel.add(postJobCommandsTextFieldLabel);
+        globusPanel.add(postJobCommandsTextField);
+        SwingUtil.layoutToGrid(globusPanel.getSwingComponent(), 3, 2, 
SwingUtil.WEIGHT_NONE, 1);
+        return globusPanel;
+       }
 
        private GridPanel createUnicoreRemoteProtocolPanel() {
                GridPanel globusPanel = new GridPanel();
@@ -321,12 +404,24 @@ public class HostDescriptionDialog exten
                        
gridFTPTextField.setText(StringUtil.createDelimiteredString(((GlobusHostType) 
t).getGridFTPEndPointArray()));
                }else if (t instanceof SSHHostType){
                        
cmbResourceProtocol.setSelectedItem(REMOTE_PROTOCOL_STR_SSH);
+                       
fileEndPointPrefixTextField.setText(StringUtil.createDelimiteredString(((SSHHostType)t).getFileEndPointPrefixArray()));
+                       
hpcResourceCheckBoxField.setSelected(((SSHHostType)t).getHpcResource());
                }else if (t instanceof UnicoreHostType){
                        
cmbResourceProtocol.setSelectedItem(REMOTE_PROTOCOL_STR_UNICORE);
                        
gateKeeperTextField.setText(StringUtil.createDelimiteredString(((UnicoreHostType)
 t).getUnicoreBESEndPointArray()));
                        
gridFTPTextField.setText(StringUtil.createDelimiteredString(((UnicoreHostType) 
t).getGridFTPEndPointArray()));
                }else if (t instanceof Ec2HostType){
                        
cmbResourceProtocol.setSelectedItem(REMOTE_PROTOCOL_STR_AMAZON_EC2);
+               }else if (t instanceof GsisshHostType){
+                       
cmbResourceProtocol.setSelectedItem(REMOTE_PROTOCOL_GSI_SSH);
+                       Name[] nameArray = ((GsisshHostType) 
t).getExports().getNameArray();
+                       List<String> arr=new ArrayList<String>();
+                       for (Name name : nameArray) {
+                               
arr.add(name.getStringValue()+"="+StringUtil.quoteString(name.getValue(),"="));
+                       }
+                       
exportsTextField.setText(StringUtil.createDelimiteredString(arr.toArray(new 
String[]{})));
+                       
preJobCommandsTextField.setText(StringUtil.createDelimiteredString(((GsisshHostType)
 t).getPreJobCommands().getCommandArray()));
+                       
postJobCommandsTextField.setText(StringUtil.createDelimiteredString(((GsisshHostType)
 t).getPostJobCommands().getCommandArray()));
                }
                hostIdTextField.setEditable(isNewHost());
                updateRemoteProtocolTypeAndControls();
@@ -441,7 +536,7 @@ public class HostDescriptionDialog exten
                                infoPanel2.add(createPanelWithMessage("No 
configurations needed."));
                        }else if 
(selectedProtocol.equals(REMOTE_PROTOCOL_STR_SSH)){
                                
getHostDescription().getType().changeType(SSHHostType.type);
-                               infoPanel2.add(createPanelWithMessage("No 
configurations needed."));
+                               infoPanel2.add(createSSHRemoteProtocolPanel());
                        }else if 
(selectedProtocol.equals(REMOTE_PROTOCOL_STR_GLOBUS)){
                                
getHostDescription().getType().changeType(GlobusHostType.type);
                                
infoPanel2.add(createGlobusRemoteProtocolPanel());
@@ -451,6 +546,9 @@ public class HostDescriptionDialog exten
                        }else if 
(selectedProtocol.equals(REMOTE_PROTOCOL_STR_AMAZON_EC2)){
                                
getHostDescription().getType().changeType(Ec2HostType.type);
                                infoPanel2.add(createPanelWithMessage("No 
configurations needed."));
+                       }else if 
(selectedProtocol.equals(REMOTE_PROTOCOL_GSI_SSH)){
+                               
getHostDescription().getType().changeType(GsisshHostType.type);
+                               
infoPanel2.add(createGSISSHRemoteProtocolPanel());
                        }else{
                                infoPanel2.add(createPanelWithMessage("Not 
supported."));
                        }


Reply via email to