Repository: airavata
Updated Branches:
  refs/heads/master f03e6ec54 -> a2a27146a


implementing AiravataServerHandler to call app catalog cpi - AIRAVATA-1228


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

Branch: refs/heads/master
Commit: a2a27146aa46829c34899cedb43864467d0834d2
Parents: f03e6ec
Author: Chathuri Wimalasena <[email protected]>
Authored: Tue Jul 1 11:47:50 2014 -0400
Committer: Chathuri Wimalasena <[email protected]>
Committed: Tue Jul 1 11:47:50 2014 -0400

----------------------------------------------------------------------
 airavata-api/airavata-api-server/pom.xml        |  10 +
 .../airavata/api/server/AiravataAPIServer.java  |   4 +-
 .../server/handler/AiravataServerHandler.java   | 181 +++++++++++++++++--
 .../appcatalog/cpi/ApplicationDeployment.java   |   7 +
 .../appcatalog/cpi/ApplicationInterface.java    |  38 +++-
 .../appcatalog/cpi/ComputeResource.java         |   6 +
 .../catalog/data/impl/AppCatalogFactory.java    |  46 +++++
 .../data/impl/ApplicationDeploymentImpl.java    |   5 +
 .../data/impl/ApplicationInterfaceImpl.java     | 114 +++++++++++-
 .../catalog/data/impl/ComputeResourceImpl.java  |  79 ++++++++
 10 files changed, 470 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/airavata-api/airavata-api-server/pom.xml
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/pom.xml 
b/airavata-api/airavata-api-server/pom.xml
index 1a89fcc..c585408 100644
--- a/airavata-api/airavata-api-server/pom.xml
+++ b/airavata-api/airavata-api-server/pom.xml
@@ -53,6 +53,16 @@
         </dependency>
         <dependency>
             <groupId>org.apache.airavata</groupId>
+            <artifactId>app-catalog-cpi</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>app-catalog-data</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
             <artifactId>airavata-orchestrator-service</artifactId>
             <version>${project.version}</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
 
b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
index 599de49..361408d 100644
--- 
a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
+++ 
b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
@@ -25,6 +25,7 @@ import java.net.InetSocketAddress;
 
 import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.server.handler.AiravataServerHandler;
+import org.apache.airavata.api.server.util.AppCatalogInitUtil;
 import org.apache.airavata.api.server.util.Constants;
 import org.apache.airavata.api.server.util.RegistryInitUtil;
 import org.apache.airavata.common.utils.AiravataUtils;
@@ -58,7 +59,8 @@ public class AiravataAPIServer implements IServer{
     public void StartAiravataServer(Airavata.Processor<Airavata.Iface> 
airavataAPIServer) throws AiravataSystemException {
         try {
             AiravataUtils.setExecutionAsServer();
-            //RegistryInitUtil.initializeDB();
+            RegistryInitUtil.initializeDB();
+            AppCatalogInitUtil.initializeDB();
             final int serverPort = 
Integer.parseInt(ServerSettings.getSetting(Constants.API_SERVER_PORT,"8930"));
             final String serverHost = 
ServerSettings.getSetting(Constants.API_SERVER_HOST, null);
             

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
 
b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 91835b8..be6f4bb 100644
--- 
a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ 
b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -30,6 +30,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.Random;
 
+import org.airavata.appcatalog.cpi.AppCatalog;
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory;
+import 
org.apache.aiaravata.application.catalog.data.resources.AbstractResource;
 import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.airavataAPIConstants;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
@@ -85,6 +89,7 @@ import org.slf4j.LoggerFactory;
 public class AiravataServerHandler implements Airavata.Iface, Watcher {
     private static final Logger logger = 
LoggerFactory.getLogger(AiravataServerHandler.class);
     private Registry registry;
+    private AppCatalog appCatalog;
 
     private ZooKeeper zk;
 
@@ -1164,7 +1169,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public String registerApplicationModule(ApplicationModule 
applicationModule) throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationInterface().addApplicationModule(applicationModule);
+        } catch (AppCatalogException e) {
+            logger.error("Error while adding application module...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while adding application module. More 
info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1176,7 +1190,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public ApplicationModule getApplicationModule(String appModuleId) throws 
InvalidRequestException, AiravataClientException, AiravataSystemException, 
TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationInterface().getApplicationModule(appModuleId);
+        } catch (AppCatalogException e) {
+            logger.error("Error while retrieving application module...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving the adding 
application module. More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1189,7 +1212,17 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public boolean updateApplicationModule(String appModuleId, 
ApplicationModule applicationModule) throws InvalidRequestException, 
AiravataClientException, AiravataSystemException, TException {
-        return false;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            
appCatalog.getApplicationInterface().updateApplicationModule(appModuleId, 
applicationModule);
+            return true;
+        } catch (AppCatalogException e) {
+            logger.error("Error while updating application module...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while updating application module. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1201,7 +1234,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public boolean deleteApplicationModule(String appModuleId) throws 
InvalidRequestException, AiravataClientException, AiravataSystemException, 
TException {
-        return false;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationInterface().removeApplicationModule(appModuleId);
+        } catch (AppCatalogException e) {
+            logger.error("Error while deleting application module...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while deleting the application module. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1212,7 +1254,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public String 
registerApplicationDeployment(ApplicationDeploymentDescription 
applicationDeployment) throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationDeployment().addApplicationDeployment(applicationDeployment);
+        } catch (AppCatalogException e) {
+            logger.error("Error while adding application deployment...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while adding application deployment. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1224,7 +1275,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public ApplicationDeploymentDescription getApplicationDeployment(String 
appDeploymentId) throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationDeployment().getApplicationDeployement(appDeploymentId);
+        } catch (AppCatalogException e) {
+            logger.error("Error while retrieving application deployment...", 
e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving application 
deployment. More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1237,7 +1297,17 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public boolean updateApplicationDeployment(String appDeploymentId, 
ApplicationDeploymentDescription applicationDeployment) throws 
InvalidRequestException, AiravataClientException, AiravataSystemException, 
TException {
-        return false;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            
appCatalog.getApplicationDeployment().updateApplicationDeployment(appDeploymentId,
 applicationDeployment);
+            return true;
+        } catch (AppCatalogException e) {
+            logger.error("Error while updating application deployment...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while updating application deployment. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1249,7 +1319,17 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public boolean deleteApplicationDeployment(String appDeploymentId) throws 
InvalidRequestException, AiravataClientException, AiravataSystemException, 
TException {
-        return false;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            
appCatalog.getApplicationDeployment().removeAppDeployment(appDeploymentId);
+            return true;
+        } catch (AppCatalogException e) {
+            logger.error("Error while deleting application deployment...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while deleting application deployment. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1261,7 +1341,23 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public List<String> getAppModuleDeployedResources(String appModuleId) 
throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        return null;
+        try {
+            List<String> appDeployments = new ArrayList<String>();
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            Map<String, String> filters = new HashMap<String, String>();
+            
filters.put(AbstractResource.ApplicationDeploymentConstants.APP_MODULE_ID, 
appModuleId);
+            List<ApplicationDeploymentDescription> applicationDeployements = 
appCatalog.getApplicationDeployment().getApplicationDeployements(filters);
+            for (ApplicationDeploymentDescription description : 
applicationDeployements){
+                appDeployments.add(description.getAppDeploymentId());
+            }
+            return appDeployments;
+        } catch (AppCatalogException e) {
+            logger.error("Error while retrieving application deployments...", 
e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving application 
deployment. More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1272,7 +1368,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public String registerApplicationInterface(ApplicationInterfaceDescription 
applicationInterface) throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationInterface().addApplicationInterface(applicationInterface);
+        } catch (AppCatalogException e) {
+            logger.error("Error while adding application interface...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while adding application interface. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1284,7 +1389,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public ApplicationInterfaceDescription getApplicationInterface(String 
appInterfaceId) throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationInterface().getApplicationInterface(appInterfaceId);
+        } catch (AppCatalogException e) {
+            logger.error("Error while retrieving application interface...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving application 
interface. More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1297,7 +1411,17 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public boolean updateApplicationInterface(String appInterfaceId, 
ApplicationInterfaceDescription applicationInterface) throws 
InvalidRequestException, AiravataClientException, AiravataSystemException, 
TException {
-        return false;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            
appCatalog.getApplicationInterface().updateApplicationInterface(appInterfaceId, 
applicationInterface);
+            return true;
+        } catch (AppCatalogException e) {
+            logger.error("Error while updating application interface...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while updating application interface. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1309,7 +1433,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public boolean deleteApplicationInterface(String appInterfaceId) throws 
InvalidRequestException, AiravataClientException, AiravataSystemException, 
TException {
-        return false;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationInterface().removeApplicationInterface(appInterfaceId);
+        } catch (AppCatalogException e) {
+            logger.error("Error while deleting application interface...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while deleting application interface. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1321,7 +1454,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public List<InputDataObjectType> getApplicationInputs(String 
appInterfaceId) throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationInterface().getApplicationInputs(appInterfaceId);
+        } catch (AppCatalogException e) {
+            logger.error("Error while retrieving application inputs...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving application inputs. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**
@@ -1333,7 +1475,16 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      */
     @Override
     public List<OutputDataObjectType> getApplicationOutputs(String 
appInterfaceId) throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return 
appCatalog.getApplicationInterface().getApplicationOutputs(appInterfaceId);
+        } catch (AppCatalogException e) {
+            logger.error("Error while retrieving application outputs...", e);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving application outputs. 
More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
 
b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
index fc87f59..a0e4394 100644
--- 
a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
+++ 
b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
@@ -14,6 +14,13 @@ public interface ApplicationDeployment {
     String addApplicationDeployment (ApplicationDeploymentDescription 
deploymentDescription) throws AppCatalogException;
 
     /**
+     * This method will update application deployment
+     * @param deploymentId unique deployment id
+     * @param updatedDeployment updated deployment
+     */
+    void updateApplicationDeployment (String deploymentId, 
ApplicationDeploymentDescription updatedDeployment);
+
+    /**
      * This method will retrive application deployement
      * @param deploymentId unique deployment id
      * @return application deployment

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
 
b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
index e8e18c6..70fbfe1 100644
--- 
a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
+++ 
b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
@@ -2,6 +2,8 @@ package org.airavata.appcatalog.cpi;
 
 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 java.util.List;
 import java.util.Map;
@@ -29,6 +31,22 @@ public interface ApplicationInterface {
     void addApplicationModuleMapping (String moduleId, String interfaceId) 
throws AppCatalogException;
 
     /**
+     * This method will update application module
+     * @param moduleId unique module Id
+     * @param updatedModule updated module
+     * @throws AppCatalogException
+     */
+    void updateApplicationModule (String moduleId, ApplicationModule 
updatedModule) throws AppCatalogException;
+
+    /**
+     * This method will update application interface
+     * @param interfaceId unique interface id
+     * @param updatedInterface updated app interface
+     * @throws AppCatalogException
+     */
+    void updateApplicationInterface (String interfaceId, 
ApplicationInterfaceDescription updatedInterface) throws AppCatalogException;
+
+    /**
      * This method will retrieve application module by given module id
      * @param moduleId unique module Id
      * @return application module object
@@ -60,13 +78,13 @@ public interface ApplicationInterface {
      * Remove application interface
      * @param interfaceId unique interface id
      */
-    void removeApplicationInterface (String interfaceId) throws 
AppCatalogException;
+    boolean removeApplicationInterface (String interfaceId) throws 
AppCatalogException;
 
     /**
      * Remove application module
      * @param moduleId unique module Id
      */
-    void removeApplicationModule (String moduleId) throws AppCatalogException;
+    boolean removeApplicationModule (String moduleId) throws 
AppCatalogException;
 
     /**
      * Check whether application interface exists
@@ -82,4 +100,20 @@ public interface ApplicationInterface {
      */
     boolean isApplicationModuleExists(String moduleId) throws 
AppCatalogException;
 
+    /**
+     * This method will retrieve application inputs for given application 
interface
+     * @param interfaceId application interface id
+     * @return list of inputs
+     * @throws AppCatalogException
+     */
+    List<InputDataObjectType> getApplicationInputs(String interfaceId) throws 
AppCatalogException;
+
+    /**
+     * This method will retrieve application outputs for given application 
interface
+     * @param interfaceId application interface id
+     * @return list of output
+     * @throws AppCatalogException
+     */
+    List<OutputDataObjectType> getApplicationOutputs(String interfaceId) 
throws AppCatalogException;
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/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 6e3c933..179e89a 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
@@ -14,6 +14,12 @@ public interface ComputeResource {
     String addComputeResource (ComputeResourceDescription description) throws 
AppCatalogException;
 
     /**
+     * This method will update compute resource
+     * @param computeResourceId unique compute resource id
+     * @param updatedComputeResource updated compute resource
+     */
+    void updateComputeResource (String computeResourceId, 
ComputeResourceDescription updatedComputeResource) throws AppCatalogException;
+    /**
      * This function will add a SSHJobSubmission to the database
      * @param sshJobSubmission sshJobSubmission object
      * @return unique submission ID generated by airavata

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/AppCatalogFactory.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/AppCatalogFactory.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/AppCatalogFactory.java
new file mode 100644
index 0000000..34e0976
--- /dev/null
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/AppCatalogFactory.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.aiaravata.application.catalog.data.impl;
+
+import org.airavata.appcatalog.cpi.AppCatalog;
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AppCatalogFactory {
+    private static AppCatalog appCatalog;
+
+    private static Logger logger = 
LoggerFactory.getLogger(AppCatalogFactory.class);
+
+    public static AppCatalog getAppCatalog() throws AppCatalogException{
+        try {
+            if (appCatalog == null){
+                appCatalog = new AppCatalogImpl();
+            }
+
+        }catch (Exception e){
+            logger.error("Unable to create app catalog instance", e);
+            throw new AppCatalogException(e);
+        }
+        return appCatalog;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/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 63ce10d..493cab8 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
@@ -105,6 +105,11 @@ public class ApplicationDeploymentImpl implements 
ApplicationDeployment {
     }
 
     @Override
+    public void updateApplicationDeployment(String deploymentId, 
ApplicationDeploymentDescription updatedDeployment) {
+
+    }
+
+    @Override
     public ApplicationDeploymentDescription getApplicationDeployement(String 
deploymentId) throws AppCatalogException {
         try {
             AppDeploymentResource deploymentResource = new 
AppDeploymentResource();

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/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 4bc63d3..7d75c6a 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
@@ -33,6 +33,7 @@ import 
org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -132,6 +133,89 @@ public class ApplicationInterfaceImpl implements 
ApplicationInterface {
     }
 
     @Override
+    public void updateApplicationModule(String moduleId, ApplicationModule 
updatedModule) throws AppCatalogException {
+        try {
+            AppModuleResource moduleResource = new AppModuleResource();
+            AppModuleResource existingModule = 
(AppModuleResource)moduleResource.get(moduleId);
+            existingModule.setModuleName(updatedModule.getAppModuleName());
+            
existingModule.setModuleDesc(updatedModule.getAppModuleDescription());
+            
existingModule.setModuleVersion(updatedModule.getAppModuleVersion());
+            existingModule.save();
+        }catch (Exception e) {
+            logger.error("Error while updating application module...", e);
+            throw new AppCatalogException(e);
+        }
+    }
+
+    @Override
+    public void updateApplicationInterface(String interfaceId, 
ApplicationInterfaceDescription updatedInterface) throws AppCatalogException {
+        try {
+            AppInterfaceResource resource = new AppInterfaceResource();
+            AppInterfaceResource existingInterface = 
(AppInterfaceResource)resource.get(interfaceId);
+            
existingInterface.setAppName(updatedInterface.getApplicationName());
+            existingInterface.save();
+
+            List<String> applicationModules = 
updatedInterface.getApplicationModules();
+            if (applicationModules != null && !applicationModules.isEmpty()){
+                for (String moduleId : applicationModules){
+                    AppModuleResource appModuleResource = new 
AppModuleResource();
+                    AppModuleMappingResource moduleMappingResource = new 
AppModuleMappingResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    
ids.put(AbstractResource.AppModuleMappingConstants.MODULE_ID, moduleId);
+                    
ids.put(AbstractResource.AppModuleMappingConstants.INTERFACE_ID, interfaceId);
+                    AppModuleMappingResource existingMapping = 
(AppModuleMappingResource)moduleMappingResource.get(ids);
+                    existingMapping.setInterfaceId(interfaceId);
+                    existingMapping.setModuleId(moduleId);
+                    
existingMapping.setModuleResource((AppModuleResource)appModuleResource.get(moduleId));
+                    existingMapping.setAppInterfaceResource(existingInterface);
+                    existingMapping.save();
+                }
+            }
+
+            List<InputDataObjectType> applicationInputs = 
updatedInterface.getApplicationInputs();
+            if (applicationInputs != null && !applicationInputs.isEmpty()){
+                for (InputDataObjectType input : applicationInputs){
+                    ApplicationInputResource inputResource = new 
ApplicationInputResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    ids.put(AbstractResource.AppInputConstants.INTERFACE_ID, 
interfaceId);
+                    ids.put(AbstractResource.AppInputConstants.INPUT_KEY, 
input.getName());
+                    ApplicationInputResource existingResource = 
(ApplicationInputResource)inputResource.get(ids);
+                    
existingResource.setAppInterfaceResource(existingInterface);
+                    existingResource.setInterfaceID(interfaceId);
+                    
existingResource.setUserFriendlyDesc(input.getUserFriendlyDescription());
+                    existingResource.setInputKey(input.getName());
+                    existingResource.setInputVal(input.getValue());
+                    existingResource.setDataType(input.getType().toString());
+                    existingResource.setMetadata(input.getMetaData());
+                    existingResource.setStandareInput(input.isStandardInput());
+                    
existingResource.setAppArgument(input.getApplicationArguement());
+                    existingResource.save();
+                }
+            }
+
+            List<OutputDataObjectType> applicationOutputs = 
updatedInterface.getApplicationOutputs();
+            if (applicationOutputs != null && !applicationOutputs.isEmpty()){
+                for (OutputDataObjectType output : applicationOutputs){
+                    ApplicationOutputResource outputResource = new 
ApplicationOutputResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    ids.put(AbstractResource.AppOutputConstants.INTERFACE_ID, 
interfaceId);
+                    ids.put(AbstractResource.AppOutputConstants.OUTPUT_KEY, 
output.getName());
+                    ApplicationOutputResource existingResource = 
(ApplicationOutputResource)outputResource.get(ids);
+                    existingResource.setInterfaceID(interfaceId);
+                    
existingResource.setAppInterfaceResource(existingInterface);
+                    existingResource.setOutputKey(output.getName());
+                    existingResource.setOutputVal(output.getValue());
+                    existingResource.setDataType(output.getType().toString());
+                    existingResource.save();
+                }
+            }
+        }catch (Exception e) {
+            logger.error("Error while updating application interface...", e);
+            throw new AppCatalogException(e);
+        }
+    }
+
+    @Override
     public ApplicationModule getApplicationModule(String moduleId) throws 
AppCatalogException {
         try {
             AppModuleResource appModuleResource = new AppModuleResource();
@@ -198,10 +282,11 @@ public class ApplicationInterfaceImpl implements 
ApplicationInterface {
     }
 
     @Override
-    public void removeApplicationInterface(String interfaceId) throws 
AppCatalogException {
+    public boolean removeApplicationInterface(String interfaceId) throws 
AppCatalogException {
         try {
             AppInterfaceResource resource = new AppInterfaceResource();
             resource.remove(interfaceId);
+            return true;
         }catch (Exception e){
             logger.error("Error while removing app interface...", e);
             throw new AppCatalogException(e);
@@ -209,10 +294,11 @@ public class ApplicationInterfaceImpl implements 
ApplicationInterface {
     }
 
     @Override
-    public void removeApplicationModule(String moduleId) throws 
AppCatalogException {
+    public boolean removeApplicationModule(String moduleId) throws 
AppCatalogException {
         try {
             AppModuleResource resource = new AppModuleResource();
             resource.remove(moduleId);
+            return true;
         }catch (Exception e){
             logger.error("Error while removing app module...", e);
             throw new AppCatalogException(e);
@@ -240,4 +326,28 @@ public class ApplicationInterfaceImpl implements 
ApplicationInterface {
             throw new AppCatalogException(e);
         }
     }
+
+    @Override
+    public List<InputDataObjectType> getApplicationInputs(String interfaceId) 
throws AppCatalogException {
+        try {
+            ApplicationInputResource resource = new ApplicationInputResource();
+            List<Resource> resources = 
resource.get(AbstractResource.AppInputConstants.INTERFACE_ID, interfaceId);
+            return AppCatalogThriftConversion.getAppInputs(resources);
+        }catch (Exception e){
+            logger.error("Error while retrieving app inputs...", e);
+            throw new AppCatalogException(e);
+        }
+    }
+
+    @Override
+    public List<OutputDataObjectType> getApplicationOutputs(String 
interfaceId) throws AppCatalogException {
+        try {
+            ApplicationOutputResource resource = new 
ApplicationOutputResource();
+            List<Resource> resources = 
resource.get(AbstractResource.AppOutputConstants.INTERFACE_ID, interfaceId);
+            return AppCatalogThriftConversion.getAppOutputs(resources);
+        }catch (Exception e){
+            logger.error("Error while retrieving app outputs...", e);
+            throw new AppCatalogException(e);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/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 03c61d0..a16028b 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
@@ -30,6 +30,7 @@ import org.apache.airavata.model.computehost.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -103,6 +104,84 @@ public class ComputeResourceImpl implements 
ComputeResource {
     }
 
     @Override
+    public void updateComputeResource(String computeResourceId, 
ComputeResourceDescription updatedComputeResource) throws AppCatalogException{
+        try {
+            ComputeHostResource computeHostResource = new 
ComputeHostResource();
+            ComputeHostResource existingComputeResouce = 
(ComputeHostResource)computeHostResource.get(computeResourceId);
+            
existingComputeResouce.setHostName(updatedComputeResource.getHostName());
+            
existingComputeResouce.setPreferredJobSubmissionProtocol(updatedComputeResource.getPreferredJobSubmissionProtocol());
+            
existingComputeResouce.setDescription(updatedComputeResource.getResourceDescription());
+            existingComputeResouce.save();
+
+            Set<String> hostAliases = updatedComputeResource.getHostAliases();
+            if (hostAliases != null && !hostAliases.isEmpty()) {
+                for (String alias : hostAliases) {
+                    HostAliasResource aliasResource = new HostAliasResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    ids.put(AbstractResource.HostAliasConstants.RESOURCE_ID, 
computeResourceId);
+                    ids.put(AbstractResource.HostAliasConstants.ALIAS, alias);
+                    HostAliasResource existingAlias = 
(HostAliasResource)aliasResource.get(ids);
+                    
existingAlias.setComputeHostResource(existingComputeResouce);
+                    existingAlias.setAlias(alias);
+                    existingAlias.save();
+                }
+            }
+
+            Set<String> ipAddresses = updatedComputeResource.getIpAddresses();
+            if (ipAddresses != null && !ipAddresses.isEmpty()) {
+                for (String ipAddress : ipAddresses) {
+                    HostIPAddressResource ipAddressResource = new 
HostIPAddressResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    
ids.put(AbstractResource.HostIPAddressConstants.RESOURCE_ID, computeResourceId);
+                    
ids.put(AbstractResource.HostIPAddressConstants.IP_ADDRESS, ipAddress);
+                    HostIPAddressResource existingIpAddress = 
(HostIPAddressResource)ipAddressResource.get(ids);
+                    
existingIpAddress.setComputeHostResource(existingComputeResouce);
+                    existingIpAddress.setResourceID(computeResourceId);
+                    existingIpAddress.setIpaddress(ipAddress);
+                    existingIpAddress.save();
+                }
+            }
+            Map<String, JobSubmissionProtocol> jobSubmissionProtocols = 
updatedComputeResource.getJobSubmissionProtocols();
+            if (jobSubmissionProtocols != null && 
!jobSubmissionProtocols.isEmpty()) {
+                for (String submissionId : jobSubmissionProtocols.keySet()) {
+                    JobSubmissionProtocol jobSubmissionProtocol = 
jobSubmissionProtocols.get(submissionId);
+                    JobSubmissionProtocolResource resource = new 
JobSubmissionProtocolResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    
ids.put(AbstractResource.JobSubmissionProtocolConstants.RESOURCE_ID, 
computeResourceId);
+                    
ids.put(AbstractResource.JobSubmissionProtocolConstants.SUBMISSION_ID, 
submissionId);
+                    
ids.put(AbstractResource.JobSubmissionProtocolConstants.JOB_TYPE, 
jobSubmissionProtocol.toString());
+                    JobSubmissionProtocolResource existingJobProtocol = 
(JobSubmissionProtocolResource)resource.get(ids);
+                    existingJobProtocol.setResourceID(computeResourceId);
+                    
existingJobProtocol.setComputeHostResource(existingComputeResouce);
+                    existingJobProtocol.setSubmissionID(submissionId);
+                    
existingJobProtocol.setJobType(jobSubmissionProtocol.toString());
+                    existingJobProtocol.save();
+                }
+            }
+            Map<String, DataMovementProtocol> movementProtocols = 
updatedComputeResource.getDataMovementProtocols();
+            if (movementProtocols != null && !movementProtocols.isEmpty()) {
+                for (String dataMoveId : movementProtocols.keySet()) {
+                    DataMovementProtocol dataMovementProtocol = 
movementProtocols.get(dataMoveId);
+                    DataMovementProtocolResource resource = new 
DataMovementProtocolResource();
+                    Map<String, String> ids = new HashMap<String, String>();
+                    
ids.put(AbstractResource.DataMoveProtocolConstants.RESOURCE_ID, 
computeResourceId);
+                    
ids.put(AbstractResource.DataMoveProtocolConstants.DATA_MOVE_ID, dataMoveId);
+                    
ids.put(AbstractResource.DataMoveProtocolConstants.JOB_TYPE, 
dataMovementProtocol.toString());
+                    DataMovementProtocolResource existingDMP = 
(DataMovementProtocolResource)resource.get(ids);
+                    existingDMP.setResourceID(computeResourceId);
+                    existingDMP.setComputeHostResource(existingComputeResouce);
+                    existingDMP.setDataMoveID(dataMoveId);
+                    
existingDMP.setDataMoveType(dataMovementProtocol.toString());
+                    existingDMP.save();
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error while updating compute resource...", e);
+            throw new AppCatalogException(e);
+        } 
+    }
+
+    @Override
     public String addSSHJobSubmission(String computeResourceId, 
SSHJobSubmission sshJobSubmission) throws AppCatalogException {
         try {
             SSHSubmissionResource resource = new SSHSubmissionResource();

Reply via email to