You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2014/06/30 21:00:20 UTC

git commit: app catalog cpi impl for application interface - AIRAVATA-1228

Repository: airavata
Updated Branches:
  refs/heads/master 2fe5d9e3d -> 3a2c052c7


app catalog cpi impl for application interface - AIRAVATA-1228


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

Branch: refs/heads/master
Commit: 3a2c052c76dbf0df4c7a8500abb7a1cf4df5e063
Parents: 2fe5d9e
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Mon Jun 30 15:00:14 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Mon Jun 30 15:00:14 2014 -0400

----------------------------------------------------------------------
 .../appcatalog/cpi/ComputeResource.java         |  13 ++
 .../data/impl/ApplicationDeploymentImpl.java    |   3 +
 .../data/impl/ApplicationInterfaceImpl.java     | 173 ++++++++++++++++++-
 .../catalog/data/impl/ComputeResourceImpl.java  |  45 ++++-
 .../catalog/data/model/ApplicationInput.java    |  34 ++--
 .../catalog/data/model/ApplicationOutput.java   |  10 --
 .../data/resources/AbstractResource.java        |   5 +-
 .../resources/ApplicationInputResource.java     |  41 +++--
 .../resources/ApplicationOutputResource.java    |  11 --
 .../data/resources/SSHSubmissionResource.java   |  26 +--
 .../catalog/data/util/AppCatalogJPAUtils.java   |   6 +-
 .../data/util/AppCatalogThriftConversion.java   | 112 ++++++++++++
 .../src/main/resources/appcatalog-derby.sql     |   6 +-
 .../src/main/resources/appcatalog-mysql.sql     |   5 +-
 14 files changed, 393 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java
index 38b5ef3..6e3c933 100644
--- a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java
+++ b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java
@@ -126,6 +126,19 @@ public interface ComputeResource {
     List<GlobusJobSubmission> getGlobusJobSubmissionList (Map<String, String> filters) throws AppCatalogException;
 
     /**
+     * This method will retrieve GSISSHJobSubmission object
+     * @param submissionId unique submission id
+     * @return GSISSHSubmission object
+     */
+    SSHJobSubmission getSSHJobSubmission (String submissionId) throws AppCatalogException;
+
+    /**
+     * This method will return a list of GSISSHSubmission objects according to given search criteria
+     * @param filters map should be provided as the field name and it's value
+     * @return list of GSISSHSubmission objects
+     */
+    List<SSHJobSubmission> getSSHJobSubmissionList (Map<String, String> filters) throws AppCatalogException;
+    /**
      * This method will retrieve SCP Data movement object
      * @param dataMoveId unique data move id
      * @return SCPDataMovement object

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java
index 6dbb6b9..85343a2 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java
@@ -24,11 +24,14 @@ package org.apache.aiaravata.application.catalog.data.impl;
 import org.airavata.appcatalog.cpi.AppCatalogException;
 import org.airavata.appcatalog.cpi.ApplicationDeployment;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
 import java.util.Map;
 
 public class ApplicationDeploymentImpl implements ApplicationDeployment {
+    private final static Logger logger = LoggerFactory.getLogger(ApplicationDeploymentImpl.class);
 
     @Override
     public String addApplicationDeployment(ApplicationDeploymentDescription deploymentDescription) throws AppCatalogException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
index deb50f6..4bc63d3 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
@@ -23,66 +23,221 @@ package org.apache.aiaravata.application.catalog.data.impl;
 
 import org.airavata.appcatalog.cpi.AppCatalogException;
 import org.airavata.appcatalog.cpi.ApplicationInterface;
+import org.apache.aiaravata.application.catalog.data.resources.*;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogThriftConversion;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogUtils;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
 import java.util.Map;
 
 public class ApplicationInterfaceImpl implements ApplicationInterface {
+    private final static Logger logger = LoggerFactory.getLogger(ApplicationInterfaceImpl.class);
 
     @Override
     public String addApplicationModule(ApplicationModule applicationModule) throws AppCatalogException {
-        return null;
+        try {
+            AppModuleResource moduleResource = new AppModuleResource();
+            moduleResource.setModuleName(applicationModule.getAppModuleName());
+            moduleResource.setModuleId(AppCatalogUtils.getID(applicationModule.getAppModuleName()));
+            moduleResource.setModuleDesc(applicationModule.getAppModuleDescription());
+            moduleResource.setModuleVersion(applicationModule.getAppModuleVersion());
+            moduleResource.save();
+            applicationModule.setAppModuleId(moduleResource.getModuleId());
+            return moduleResource.getModuleId();
+        }catch (Exception e) {
+            logger.error("Error while saving application module...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public String addApplicationInterface(ApplicationInterfaceDescription applicationInterfaceDescription) throws AppCatalogException {
-        return null;
+        try {
+            AppInterfaceResource resource = new AppInterfaceResource();
+            resource.setAppName(applicationInterfaceDescription.getApplicationName());
+            resource.setInterfaceId(AppCatalogUtils.getID(applicationInterfaceDescription.getApplicationName()));
+            resource.save();
+            applicationInterfaceDescription.setApplicationInterfaceId(resource.getInterfaceId());
+
+            List<String> applicationModules = applicationInterfaceDescription.getApplicationModules();
+            if (applicationModules != null && !applicationModules.isEmpty()){
+                for (String moduleId : applicationModules){
+                    AppModuleResource appModuleResource = new AppModuleResource();
+                    AppModuleMappingResource moduleMappingResource = new AppModuleMappingResource();
+                    moduleMappingResource.setInterfaceId(resource.getInterfaceId());
+                    moduleMappingResource.setModuleId(moduleId);
+                    moduleMappingResource.setModuleResource((AppModuleResource)appModuleResource.get(moduleId));
+                    moduleMappingResource.setAppInterfaceResource(resource);
+                    moduleMappingResource.save();
+                }
+            }
+
+            List<InputDataObjectType> applicationInputs = applicationInterfaceDescription.getApplicationInputs();
+            if (applicationInputs != null && !applicationInputs.isEmpty()){
+                for (InputDataObjectType input : applicationInputs){
+                    ApplicationInputResource inputResource = new ApplicationInputResource();
+                    inputResource.setAppInterfaceResource(resource);
+                    inputResource.setInterfaceID(resource.getInterfaceId());
+                    inputResource.setUserFriendlyDesc(input.getUserFriendlyDescription());
+                    inputResource.setInputKey(input.getName());
+                    inputResource.setInputVal(input.getValue());
+                    inputResource.setDataType(input.getType().toString());
+                    inputResource.setMetadata(input.getMetaData());
+                    inputResource.setStandareInput(input.isStandardInput());
+                    inputResource.setAppArgument(input.getApplicationArguement());
+                    inputResource.save();
+                }
+            }
+
+            List<OutputDataObjectType> applicationOutputs = applicationInterfaceDescription.getApplicationOutputs();
+            if (applicationOutputs != null && !applicationOutputs.isEmpty()){
+                for (OutputDataObjectType output : applicationOutputs){
+                    ApplicationOutputResource outputResource = new ApplicationOutputResource();
+                    outputResource.setInterfaceID(resource.getInterfaceId());
+                    outputResource.setAppInterfaceResource(resource);
+                    outputResource.setOutputKey(output.getName());
+                    outputResource.setOutputVal(output.getValue());
+                    outputResource.setDataType(output.getType().toString());
+                    outputResource.save();
+                }
+            }
+            return resource.getInterfaceId();
+        }catch (Exception e) {
+            logger.error("Error while saving application interface...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public void addApplicationModuleMapping(String moduleId, String interfaceId) throws AppCatalogException {
-
+        try {
+            AppModuleResource appModuleResource = new AppModuleResource();
+            AppInterfaceResource interfaceResource = new AppInterfaceResource();
+            AppModuleMappingResource moduleMappingResource = new AppModuleMappingResource();
+            moduleMappingResource.setInterfaceId(interfaceId);
+            moduleMappingResource.setModuleId(moduleId);
+            moduleMappingResource.setModuleResource((AppModuleResource)appModuleResource.get(moduleId));
+            moduleMappingResource.setAppInterfaceResource((AppInterfaceResource)interfaceResource.get(interfaceId));
+            moduleMappingResource.save();
+        }catch (Exception e) {
+            logger.error("Error while saving application module mapping...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public ApplicationModule getApplicationModule(String moduleId) throws AppCatalogException {
-        return null;
+        try {
+            AppModuleResource appModuleResource = new AppModuleResource();
+            return AppCatalogThriftConversion.getApplicationModuleDesc((AppModuleResource) appModuleResource.get(moduleId));
+        }catch (Exception e) {
+            logger.error("Error while retrieving application module...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public ApplicationInterfaceDescription getApplicationInterface(String interfaceId) throws AppCatalogException {
-        return null;
+        try {
+            AppInterfaceResource interfaceResource = new AppInterfaceResource();
+            return AppCatalogThriftConversion.getApplicationInterfaceDescription((AppInterfaceResource)interfaceResource.get(interfaceId));
+        }catch (Exception e) {
+            logger.error("Error while retrieving application interface...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public List<ApplicationModule> getApplicationModules(Map<String, String> filters) throws AppCatalogException {
+        try {
+            AppModuleResource resource = new AppModuleResource();
+            for (String fieldName : filters.keySet() ){
+                if (fieldName.equals(AbstractResource.ApplicationModuleConstants.MODULE_NAME)){
+                    List<Resource> resources = resource.get(AbstractResource.ApplicationModuleConstants.MODULE_NAME, filters.get(fieldName));
+                    if (resources != null && !resources.isEmpty()){
+                        return AppCatalogThriftConversion.getAppModules(resources);
+                    }
+                }else {
+                    logger.error("Unsupported field name for app module.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Unsupported field name for app module.");
+                }
+            }
+        }catch (Exception e){
+            logger.error("Error while retrieving app module list...", e);
+            throw new AppCatalogException(e);
+        }
         return null;
     }
 
     @Override
     public List<ApplicationInterfaceDescription> getApplicationInterfaces(Map<String, String> filters) throws AppCatalogException {
+        try {
+            AppInterfaceResource resource = new AppInterfaceResource();
+            for (String fieldName : filters.keySet() ){
+                if (fieldName.equals(AbstractResource.ApplicationInterfaceConstants.APPLICATION_NAME)){
+                    List<Resource> resources = resource.get(AbstractResource.ApplicationInterfaceConstants.APPLICATION_NAME, filters.get(fieldName));
+                    if (resources != null && !resources.isEmpty()){
+                        return AppCatalogThriftConversion.getAppInterfaceDescList(resources);
+                    }
+                }else {
+                    logger.error("Unsupported field name for app interface.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Unsupported field name for app interface.");
+                }
+            }
+        }catch (Exception e){
+            logger.error("Error while retrieving app interface list...", e);
+            throw new AppCatalogException(e);
+        }
         return null;
     }
 
     @Override
     public void removeApplicationInterface(String interfaceId) throws AppCatalogException {
-
+        try {
+            AppInterfaceResource resource = new AppInterfaceResource();
+            resource.remove(interfaceId);
+        }catch (Exception e){
+            logger.error("Error while removing app interface...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public void removeApplicationModule(String moduleId) throws AppCatalogException {
-
+        try {
+            AppModuleResource resource = new AppModuleResource();
+            resource.remove(moduleId);
+        }catch (Exception e){
+            logger.error("Error while removing app module...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public boolean isApplicationInterfaceExists(String interfaceId) throws AppCatalogException {
-        return false;
+        try {
+            AppInterfaceResource resource = new AppInterfaceResource();
+            return resource.isExists(interfaceId);
+        }catch (Exception e){
+            logger.error("Error while retrieving app interface...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public boolean isApplicationModuleExists(String moduleId) throws AppCatalogException {
-        return false;
+        try {
+            AppModuleResource resource = new AppModuleResource();
+            return resource.isExists(moduleId);
+        }catch (Exception e){
+            logger.error("Error while retrieving app module...", e);
+            throw new AppCatalogException(e);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
index 275705b..03c61d0 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
@@ -21,7 +21,6 @@
 
 package org.apache.aiaravata.application.catalog.data.impl;
 
-import org.airavata.appcatalog.cpi.AppCatalog;
 import org.airavata.appcatalog.cpi.AppCatalogException;
 import org.airavata.appcatalog.cpi.ComputeResource;
 import org.apache.aiaravata.application.catalog.data.resources.*;
@@ -36,7 +35,7 @@ import java.util.Map;
 import java.util.Set;
 
 public class ComputeResourceImpl implements ComputeResource {
-    private final static Logger logger = LoggerFactory.getLogger(ComputeResource.class);
+    private final static Logger logger = LoggerFactory.getLogger(ComputeResourceImpl.class);
 
     @Override
     public String addComputeResource(ComputeResourceDescription description) throws AppCatalogException {
@@ -467,6 +466,45 @@ public class ComputeResourceImpl implements ComputeResource {
     }
 
     @Override
+    public SSHJobSubmission getSSHJobSubmission(String submissionId) throws AppCatalogException {
+        try {
+            SSHSubmissionResource resource = new SSHSubmissionResource();
+            SSHSubmissionResource submissionResource = (SSHSubmissionResource)resource.get(submissionId);
+            return AppCatalogThriftConversion.getSSHJobSubmissionDescription(submissionResource);
+        }catch (Exception e){
+            logger.error("Error while retrieving SSH Job Submission...", e);
+            throw new AppCatalogException(e);
+        }
+    }
+
+    @Override
+    public List<SSHJobSubmission> getSSHJobSubmissionList(Map<String, String> filters) throws AppCatalogException {
+        try {
+            SSHSubmissionResource resource = new SSHSubmissionResource();
+            for (String fieldName : filters.keySet() ){
+                if (fieldName.equals(AbstractResource.SSHSubmissionConstants.RESOURCE_ID)){
+                    List<Resource> resources = resource.get(AbstractResource.SSHSubmissionConstants.RESOURCE_ID, filters.get(fieldName));
+                    if (resources != null && !resources.isEmpty()){
+                        return AppCatalogThriftConversion.getSSHSubmissionList(resources);
+                    }
+                }else if (fieldName.equals(AbstractResource.SSHSubmissionConstants.RESOURCE_JOB_MANAGER)){
+                    List<Resource> resources = resource.get(AbstractResource.SSHSubmissionConstants.RESOURCE_JOB_MANAGER, filters.get(fieldName));
+                    if (resources != null && !resources.isEmpty()){
+                        return AppCatalogThriftConversion.getSSHSubmissionList(resources);
+                    }
+                }else {
+                    logger.error("Unsupported field name for SSH Submission.", new IllegalArgumentException());
+                    throw new IllegalArgumentException("Unsupported field name for SSH Submission.");
+                }
+            }
+        }catch (Exception e){
+            logger.error("Error while retrieving SSH Submission list...", e);
+            throw new AppCatalogException(e);
+        }
+        return null;
+    }
+
+    @Override
     public SCPDataMovement getSCPDataMovement(String dataMoveId) throws AppCatalogException {
         try {
             SCPDataMovementResource resource = new SCPDataMovementResource();
@@ -548,8 +586,7 @@ public class ComputeResourceImpl implements ComputeResource {
     public boolean isComputeResourceExists(String resourceId) throws AppCatalogException {
         try {
             ComputeHostResource resource = new ComputeHostResource();
-            ComputeHostResource computeResource = (ComputeHostResource)resource.get(resourceId);
-            return computeResource != null;
+            return resource.isExists(resourceId);
         }catch (Exception e){
             logger.error("Error while retrieving compute resource...", e);
             throw new AppCatalogException(e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
index f7e45ab..689f24e 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInput.java
@@ -41,10 +41,12 @@ public class ApplicationInput implements Serializable {
     private String dataType;
     @Column(name = "METADATA")
     private String metadata;
-    @Column(name = "APP_PARAMETER")
-    private String appParameter;
-    @Column(name = "APP_UI_DESCRIPTION")
-    private String appUIDesc;
+    @Column(name = "APP_ARGUMENT")
+    private String appArgument;
+    @Column(name = "USER_FRIENDLY_DESC")
+    private String userFriendlyDesc;
+    @Column(name = "STANDARD_INPUT")
+    private boolean standardInput;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "INTERFACE_ID")
@@ -90,20 +92,20 @@ public class ApplicationInput implements Serializable {
         this.metadata = metadata;
     }
 
-    public String getAppParameter() {
-        return appParameter;
+    public String getAppArgument() {
+        return appArgument;
     }
 
-    public void setAppParameter(String appParameter) {
-        this.appParameter = appParameter;
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
     }
 
-    public String getAppUIDesc() {
-        return appUIDesc;
+    public String getUserFriendlyDesc() {
+        return userFriendlyDesc;
     }
 
-    public void setAppUIDesc(String appUIDesc) {
-        this.appUIDesc = appUIDesc;
+    public void setUserFriendlyDesc(String userFriendlyDesc) {
+        this.userFriendlyDesc = userFriendlyDesc;
     }
 
     public ApplicationInterface getApplicationInterface() {
@@ -113,4 +115,12 @@ public class ApplicationInput implements Serializable {
     public void setApplicationInterface(ApplicationInterface applicationInterface) {
         this.applicationInterface = applicationInterface;
     }
+
+    public boolean isStandardInput() {
+        return standardInput;
+    }
+
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
index ba55e09..6e418af 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationOutput.java
@@ -39,8 +39,6 @@ public class ApplicationOutput implements Serializable {
     private String outputVal;
     @Column(name = "DATA_TYPE")
     private String dataType;
-    @Column(name = "METADATA")
-    private String metadata;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "INTERFACE_ID")
@@ -62,14 +60,6 @@ public class ApplicationOutput implements Serializable {
         this.dataType = dataType;
     }
 
-    public String getMetadata() {
-        return metadata;
-    }
-
-    public void setMetadata(String metadata) {
-        this.metadata = metadata;
-    }
-
     public ApplicationInterface getApplicationInterface() {
         return applicationInterface;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
index 90cc4d0..d6534ba 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
@@ -201,8 +201,9 @@ public abstract class AbstractResource implements Resource {
         public static final String INPUT_VALUE = "inputVal";
         public static final String DATA_TYPE = "dataType";
         public static final String METADATA = "metadata";
-        public static final String APP_PARAMETER = "appParameter";
-        public static final String APP_UI_DESCRIPTION = "appUIDesc";
+        public static final String APP_ARGUMENT = "appArgument";
+        public static final String USER_FRIENDLY_DESC = "userFriendlyDesc";
+        public static final String STANDARD_INPUT = "standardInput";
     }
 
     public final class AppOutputConstants {

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
index 1f187c5..84f6889 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
@@ -27,8 +27,9 @@ public class ApplicationInputResource extends AbstractResource {
     private String dataType;
     private String inputVal;
     private String metadata;
-    private String appParameter;
-    private String appUIDesc;
+    private String appArgument;
+    private String userFriendlyDesc;
+    private boolean standareInput;
 
     private AppInterfaceResource appInterfaceResource;
 
@@ -250,9 +251,9 @@ public class ApplicationInputResource extends AbstractResource {
                 existingApplicationInput.setInputKey(inputKey);
                 existingApplicationInput.setInputVal(inputVal);
                 existingApplicationInput.setMetadata(metadata);
-                existingApplicationInput.setAppParameter(appParameter);
-                existingApplicationInput.setAppUIDesc(appUIDesc);
-
+                existingApplicationInput.setAppArgument(appArgument);
+                existingApplicationInput.setUserFriendlyDesc(userFriendlyDesc);
+                existingApplicationInput.setStandardInput(standareInput);
                 em.merge(existingApplicationInput);
             } else {
                 ApplicationInput applicationInput = new ApplicationInput();
@@ -263,9 +264,9 @@ public class ApplicationInputResource extends AbstractResource {
                 applicationInput.setInputKey(inputKey);
                 applicationInput.setInputVal(inputVal);
                 applicationInput.setMetadata(metadata);
-                applicationInput.setAppParameter(appParameter);
-                applicationInput.setAppUIDesc(appUIDesc);
-
+                applicationInput.setAppArgument(appArgument);
+                applicationInput.setUserFriendlyDesc(userFriendlyDesc);
+                applicationInput.setStandardInput(standareInput);
                 em.persist(applicationInput);
             }
             em.getTransaction().commit();
@@ -354,20 +355,20 @@ public class ApplicationInputResource extends AbstractResource {
         this.metadata = metadata;
     }
 
-    public String getAppParameter() {
-        return appParameter;
+    public String getAppArgument() {
+        return appArgument;
     }
 
-    public void setAppParameter(String appParameter) {
-        this.appParameter = appParameter;
+    public void setAppArgument(String appArgument) {
+        this.appArgument = appArgument;
     }
 
-    public String getAppUIDesc() {
-        return appUIDesc;
+    public String getUserFriendlyDesc() {
+        return userFriendlyDesc;
     }
 
-    public void setAppUIDesc(String appUIDesc) {
-        this.appUIDesc = appUIDesc;
+    public void setUserFriendlyDesc(String userFriendlyDesc) {
+        this.userFriendlyDesc = userFriendlyDesc;
     }
 
     public AppInterfaceResource getAppInterfaceResource() {
@@ -377,4 +378,12 @@ public class ApplicationInputResource extends AbstractResource {
     public void setAppInterfaceResource(AppInterfaceResource appInterfaceResource) {
         this.appInterfaceResource = appInterfaceResource;
     }
+
+    public boolean isStandareInput() {
+        return standareInput;
+    }
+
+    public void setStandareInput(boolean standareInput) {
+        this.standareInput = standareInput;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
index 7046fd7..4389cd7 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
@@ -25,7 +25,6 @@ public class ApplicationOutputResource extends AbstractResource {
     private String outputKey;
     private String outputVal;
     private String dataType;
-    private String metadata;
 
     private AppInterfaceResource appInterfaceResource;
 
@@ -248,7 +247,6 @@ public class ApplicationOutputResource extends AbstractResource {
                 existingApplicationOutput.setDataType(dataType);
                 existingApplicationOutput.setOutputKey(outputKey);
                 existingApplicationOutput.setOutputVal(outputVal);
-                existingApplicationOutput.setMetadata(metadata);
 
                 em.merge(existingApplicationOutput);
             } else {
@@ -259,7 +257,6 @@ public class ApplicationOutputResource extends AbstractResource {
                 applicationOutput.setDataType(dataType);
                 applicationOutput.setOutputKey(outputKey);
                 applicationOutput.setOutputVal(outputVal);
-                applicationOutput.setMetadata(metadata);
 
                 em.persist(applicationOutput);
             }
@@ -341,14 +338,6 @@ public class ApplicationOutputResource extends AbstractResource {
         this.dataType = dataType;
     }
 
-    public String getMetadata() {
-        return metadata;
-    }
-
-    public void setMetadata(String metadata) {
-        this.metadata = metadata;
-    }
-
     public AppInterfaceResource getAppInterfaceResource() {
         return appInterfaceResource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SSHSubmissionResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SSHSubmissionResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SSHSubmissionResource.java
index 9330fa0..02100dc 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SSHSubmissionResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SSHSubmissionResource.java
@@ -85,19 +85,7 @@ public class SSHSubmissionResource extends AbstractResource {
             Query q;
             AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SSH_SUBMISSION);
             List results;
-            if (fieldName.equals(SSHSubmissionConstants.SUBMISSION_ID)) {
-                generator.setParameter(SSHSubmissionConstants.SUBMISSION_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        SSHSubmission sshSubmission = (SSHSubmission) result;
-                        SSHSubmissionResource sshSubmissionResource =
-                                (SSHSubmissionResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SSH_SUBMISSION, sshSubmission);
-                        sshSubmissionResourceList.add(sshSubmissionResource);
-                    }
-                }
-            } else if (fieldName.equals(SSHSubmissionConstants.RESOURCE_ID)) {
+            if (fieldName.equals(SSHSubmissionConstants.RESOURCE_ID)) {
                 generator.setParameter(SSHSubmissionConstants.RESOURCE_ID, value);
                 q = generator.selectQuery(em);
                 results = q.getResultList();
@@ -109,18 +97,6 @@ public class SSHSubmissionResource extends AbstractResource {
                         sshSubmissionResourceList.add(sshSubmissionResource);
                     }
                 }
-            } else if (fieldName.equals(SSHSubmissionConstants.SSH_PORT)) {
-                generator.setParameter(SSHSubmissionConstants.SSH_PORT, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        SSHSubmission sshSubmission = (SSHSubmission) result;
-                        SSHSubmissionResource sshSubmissionResource =
-                                (SSHSubmissionResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SSH_SUBMISSION, sshSubmission);
-                        sshSubmissionResourceList.add(sshSubmissionResource);
-                    }
-                }
             } else if (fieldName.equals(SSHSubmissionConstants.RESOURCE_JOB_MANAGER)) {
                 generator.setParameter(SSHSubmissionConstants.RESOURCE_JOB_MANAGER, value);
                 q = generator.selectQuery(em);

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
index 599c956..2eb78b8 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
@@ -457,8 +457,9 @@ public class AppCatalogJPAUtils {
         resource.setInputVal(o.getInputVal());
         resource.setDataType(o.getDataType());
         resource.setMetadata(o.getMetadata());
-        resource.setAppParameter(o.getAppParameter());
-        resource.setAppUIDesc(o.getAppUIDesc());
+        resource.setAppArgument(o.getAppArgument());
+        resource.setUserFriendlyDesc(o.getUserFriendlyDesc());
+        resource.setStandareInput(o.isStandardInput());
         resource.setAppInterfaceResource((AppInterfaceResource)createAppInterfaceResource(o.getApplicationInterface()));
         return resource;
     }
@@ -469,7 +470,6 @@ public class AppCatalogJPAUtils {
         resource.setOutputKey(o.getOutputKey());
         resource.setOutputVal(o.getOutputVal());
         resource.setDataType(o.getDataType());
-        resource.setMetadata(o.getMetadata());
         resource.setAppInterfaceResource((AppInterfaceResource)createAppInterfaceResource(o.getApplicationInterface()));
         return resource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
index 8feb1a4..977d524 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
@@ -23,6 +23,11 @@ package org.apache.aiaravata.application.catalog.data.util;
 
 import org.airavata.appcatalog.cpi.AppCatalogException;
 import org.apache.aiaravata.application.catalog.data.resources.*;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
+import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
 import org.apache.airavata.model.computehost.*;
 
 import java.util.*;
@@ -167,6 +172,14 @@ public class AppCatalogThriftConversion {
         return globusJobSubmission;
     }
 
+    public static SSHJobSubmission getSSHJobSubmissionDescription (SSHSubmissionResource submission) throws AppCatalogException {
+        SSHJobSubmission sshJobSubmission = new SSHJobSubmission();
+        sshJobSubmission.setJobSubmissionDataID(submission.getSubmissionID());
+        sshJobSubmission.setResourceJobManager(ResourceJobManager.valueOf(submission.getResourceJobManager()));
+        sshJobSubmission.setSshPort(submission.getSshPort());
+        return sshJobSubmission;
+    }
+
     public static SCPDataMovement getSCPDataMovementDescription (SCPDataMovementResource dataMovementResource) throws AppCatalogException {
         SCPDataMovement dataMovement = new SCPDataMovement();
         dataMovement.setDataMovementDataID(dataMovementResource.getDataMoveID());
@@ -219,6 +232,14 @@ public class AppCatalogThriftConversion {
         return list;
     }
 
+    public static List<SSHJobSubmission> getSSHSubmissionList (List<Resource> resources) throws AppCatalogException {
+        List<SSHJobSubmission> list = new ArrayList<SSHJobSubmission>();
+        for (Resource resource : resources){
+            list.add(getSSHJobSubmissionDescription((SSHSubmissionResource)resource));
+        }
+        return list;
+    }
+
     public static List<GridFTPDataMovement> getGridFTPDataMovementList (List<Resource> resources) throws AppCatalogException {
         List<GridFTPDataMovement> list = new ArrayList<GridFTPDataMovement>();
         for (Resource resource : resources){
@@ -278,6 +299,97 @@ public class AppCatalogThriftConversion {
         return resource;
     }
 
+    public static ApplicationModule getApplicationModuleDesc (AppModuleResource resource){
+        ApplicationModule module = new ApplicationModule();
+        module.setAppModuleId(resource.getModuleId());
+        module.setAppModuleDescription(resource.getModuleDesc());
+        module.setAppModuleName(resource.getModuleName());
+        module.setAppModuleVersion(resource.getModuleVersion());
+        return module;
+    }
+
+    public static ApplicationInterfaceDescription getApplicationInterfaceDescription (AppInterfaceResource resource) throws AppCatalogException {
+        ApplicationInterfaceDescription description = new ApplicationInterfaceDescription();
+        description.setApplicationInterfaceId(resource.getInterfaceId());
+        description.setApplicationName(resource.getAppName());
+
+        AppModuleResource appModuleResource = new AppModuleResource();
+        List<Resource> appModules = appModuleResource.get(AbstractResource.AppModuleMappingConstants.INTERFACE_ID, resource.getInterfaceId());
+        if (appModules != null && !appModules.isEmpty()){
+            description.setApplicationModules(getAppModuleIds(appModules));
+        }
+
+        ApplicationInputResource inputResource = new ApplicationInputResource();
+        List<Resource> appInputs = inputResource.get(AbstractResource.AppInputConstants.INTERFACE_ID, resource.getInterfaceId());
+        if (appInputs != null && !appInputs.isEmpty()){
+            description.setApplicationInputs(getAppInputs(appInputs));
+        }
+
+        ApplicationOutputResource outputResource = new ApplicationOutputResource();
+        List<Resource> appOutputs = outputResource.get(AbstractResource.AppOutputConstants.INTERFACE_ID, resource.getInterfaceId());
+        if (appOutputs != null && !appOutputs.isEmpty()){
+            description.setApplicationOutputs(getAppOutputs(appOutputs));
+        }
+        return description;
+    }
+
+    public static List<String> getAppModuleIds (List<Resource> appModules){
+        List<String> modules = new ArrayList<String>();
+        for (Resource resource : appModules){
+            modules.add(((AppModuleResource)resource).getModuleId());
+        }
+        return modules;
+    }
+
+    public static List<ApplicationModule> getAppModules (List<Resource> appModules){
+        List<ApplicationModule> modules = new ArrayList<ApplicationModule>();
+        for (Resource resource : appModules){
+            modules.add(getApplicationModuleDesc((AppModuleResource) resource));
+        }
+        return modules;
+    }
+
+    public static List<ApplicationInterfaceDescription> getAppInterfaceDescList (List<Resource> appInterfaces) throws AppCatalogException {
+        List<ApplicationInterfaceDescription> interfaceDescriptions = new ArrayList<ApplicationInterfaceDescription>();
+        for (Resource resource : appInterfaces){
+            interfaceDescriptions.add(getApplicationInterfaceDescription((AppInterfaceResource) resource));
+        }
+        return interfaceDescriptions;
+    }
+
+    public static List<InputDataObjectType> getAppInputs (List<Resource> resources){
+        List<InputDataObjectType> inputs = new ArrayList<InputDataObjectType>();
+        for (Resource resource : resources){
+            inputs.add(getInputDataObjType((ApplicationInputResource) resource));
+        }
+        return inputs;
+    } 
+    public static InputDataObjectType getInputDataObjType (ApplicationInputResource input){
+        InputDataObjectType inputDataObjectType = new InputDataObjectType();
+        inputDataObjectType.setName(input.getInputKey());
+        inputDataObjectType.setValue(input.getInputVal());
+        inputDataObjectType.setApplicationArguement(input.getAppArgument());
+        inputDataObjectType.setMetaData(input.getMetadata());
+        inputDataObjectType.setType(DataType.valueOf(input.getDataType()));
+        inputDataObjectType.setStandardInput(input.isStandareInput());
+        inputDataObjectType.setUserFriendlyDescription(input.getUserFriendlyDesc());
+        return inputDataObjectType;
+    }
+
+    public static List<OutputDataObjectType> getAppOutputs (List<Resource> resources){
+        List<OutputDataObjectType> outputs = new ArrayList<OutputDataObjectType>();
+        for (Resource resource : resources){
+            outputs.add(getOutputDataObjType((ApplicationOutputResource) resource));
+        }
+        return outputs;
+    }
+    public static OutputDataObjectType getOutputDataObjType (ApplicationOutputResource output){
+        OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
+        outputDataObjectType.setName(output.getOutputKey());
+        outputDataObjectType.setValue(output.getOutputVal());
+        outputDataObjectType.setType(DataType.valueOf(output.getDataType()));
+        return outputDataObjectType;
+    }
 
 
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
index a151bbb..535c372 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
@@ -225,8 +225,9 @@ CREATE TABLE APPLICATION_INPUT
          INPUT_VALUE VARCHAR(255),
          DATA_TYPE VARCHAR(255),
          METADATA VARCHAR(255),
-         APP_PARAMETER VARCHAR(255),
-         APP_UI_DESCRIPTION VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         STANDARD_INPUT SMALLINT,
+         USER_FRIENDLY_DESC VARCHAR(255),
          PRIMARY KEY(INTERFACE_ID,INPUT_KEY),
          FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
 );
@@ -237,7 +238,6 @@ CREATE TABLE APPLICATION_OUTPUT
          OUTPUT_KEY VARCHAR(255),
          OUTPUT_VALUE VARCHAR(255),
          DATA_TYPE VARCHAR(255),
-         METADATA VARCHAR(255),
          PRIMARY KEY(INTERFACE_ID,OUTPUT_KEY),
          FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
 );

http://git-wip-us.apache.org/repos/asf/airavata/blob/3a2c052c/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
index 19e5b02..c0b6c5e 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
@@ -226,8 +226,9 @@ CREATE TABLE APPLICATION_INPUT
          INPUT_VALUE VARCHAR(255),
          DATA_TYPE VARCHAR(255),
          METADATA VARCHAR(255),
-         APP_PARAMETER VARCHAR(255),
-         APP_UI_DESCRIPTION VARCHAR(255),
+         APP_ARGUMENT VARCHAR(255),
+         STANDARD_INPUT SMALLINT,
+         USER_FRIENDLY_DESC VARCHAR(255),
          PRIMARY KEY(INTERFACE_ID,INPUT_KEY),
          FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
 );