http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LibraryPrepandPathResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LibraryPrepandPathResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LibraryPrepandPathResource.java
new file mode 100644
index 0000000..fa77b2c
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LibraryPrepandPathResource.java
@@ -0,0 +1,291 @@
+/*
+ *
+ * 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.airavata.registry.core.app.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import 
org.apache.airavata.registry.core.app.catalog.model.ApplicationDeployment;
+import org.apache.airavata.registry.core.app.catalog.model.LibraryPrepandPath;
+import 
org.apache.airavata.registry.core.app.catalog.model.LibraryPrepandPath_PK;
+import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class LibraryPrepandPathResource extends AppCatAbstractResource {
+    private final static Logger logger = 
LoggerFactory.getLogger(LibraryPrepandPathResource.class);
+    private String deploymentId;
+    private String name;
+    private String value;
+    private AppDeploymentResource appDeploymentResource;
+
+    public String getDeploymentId() {
+        return deploymentId;
+    }
+
+    public void setDeploymentId(String deploymentId) {
+        this.deploymentId = deploymentId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public AppDeploymentResource getAppDeploymentResource() {
+        return appDeploymentResource;
+    }
+
+    public void setAppDeploymentResource(AppDeploymentResource 
appDeploymentResource) {
+        this.appDeploymentResource = appDeploymentResource;
+    }
+
+    @Override
+    public void remove(Object identifier) throws AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map){
+            ids = (HashMap)identifier;
+        }else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator= new 
AppCatalogQueryGenerator(LIBRARY_PREPAND_PATH);
+            generator.setParameter(LibraryPrepandPathConstants.DEPLOYMENT_ID, 
ids.get(LibraryPrepandPathConstants.DEPLOYMENT_ID));
+            if (ids.get(LibraryPrepandPathConstants.NAME) != null){
+                generator.setParameter(LibraryPrepandPathConstants.NAME, 
ids.get(LibraryPrepandPathConstants.NAME));
+            }
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            em.close();
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map){
+            ids = (HashMap)identifier;
+        }else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LIBRARY_PREPAND_PATH);
+            generator.setParameter(LibraryPrepandPathConstants.DEPLOYMENT_ID, 
ids.get(LibraryPrepandPathConstants.DEPLOYMENT_ID));
+            generator.setParameter(LibraryPrepandPathConstants.NAME, 
ids.get(LibraryPrepandPathConstants.NAME));
+            Query q = generator.selectQuery(em);
+            LibraryPrepandPath libraryPrepandPath = (LibraryPrepandPath) 
q.getSingleResult();
+            LibraryPrepandPathResource resource =
+                    (LibraryPrepandPathResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LIBRARY_PREPAND_PATH, 
libraryPrepandPath);
+            em.getTransaction().commit();
+            em.close();
+            return resource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public List<AppCatalogResource> get(String fieldName, Object value) throws 
AppCatalogException {
+        List<AppCatalogResource> libPrepPathList = new 
ArrayList<AppCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LIBRARY_PREPAND_PATH);
+            List results;
+            if (fieldName.equals(LibraryPrepandPathConstants.DEPLOYMENT_ID)) {
+                
generator.setParameter(LibraryPrepandPathConstants.DEPLOYMENT_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        LibraryPrepandPath prepandPath = (LibraryPrepandPath) 
result;
+                        LibraryPrepandPathResource resource =
+                                (LibraryPrepandPathResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LIBRARY_PREPAND_PATH, 
prepandPath);
+                        libPrepPathList.add(resource);
+                    }
+                }
+            } else if (fieldName.equals(LibraryPrepandPathConstants.NAME)) {
+                generator.setParameter(LibraryPrepandPathConstants.NAME, 
value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        LibraryPrepandPath prepandPath = (LibraryPrepandPath) 
result;
+                        LibraryPrepandPathResource resource =
+                                (LibraryPrepandPathResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LIBRARY_PREPAND_PATH, 
prepandPath);
+                        libPrepPathList.add(resource);
+                    }
+                }
+            }else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for libraryPrepandPath 
resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
libraryPrepandPath resource.");
+            }
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return libPrepPathList;
+    }
+
+    @Override
+    public List<AppCatalogResource> getAll() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+        logger.error("Unsupported for objects with a composite identifier");
+        throw new AppCatalogException("Unsupported for objects with a 
composite identifier");
+    }
+
+    @Override
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            LibraryPrepandPath existigPrepPath = 
em.find(LibraryPrepandPath.class, new LibraryPrepandPath_PK(deploymentId, 
name));
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            ApplicationDeployment deployment = 
em.find(ApplicationDeployment.class, deploymentId);
+            if (existigPrepPath !=  null){
+                existigPrepPath.setValue(value);
+                existigPrepPath.setApplicationDeployment(deployment);
+                em.merge(existigPrepPath);
+            }else {
+                LibraryPrepandPath prepandPath = new LibraryPrepandPath();
+                prepandPath.setDeploymentID(deploymentId);
+                prepandPath.setName(name);
+                prepandPath.setValue(value);
+                prepandPath.setApplicationDeployment(deployment);
+                em.persist(prepandPath);
+            }
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public boolean isExists(Object identifier) throws AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map){
+            ids = (HashMap)identifier;
+        }else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            LibraryPrepandPath prepandPath = em.find(LibraryPrepandPath.class,
+                                                          new 
LibraryPrepandPath_PK(ids.get(LibraryPrepandPathConstants.DEPLOYMENT_ID),
+                                                                               
     ids.get(LibraryPrepandPathConstants.NAME)));
+            em.close();
+            return prepandPath != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalDataMovementAppCatalogResourceAppCat.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalDataMovementAppCatalogResourceAppCat.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalDataMovementAppCatalogResourceAppCat.java
deleted file mode 100644
index 7d71abf..0000000
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalDataMovementAppCatalogResourceAppCat.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- *
- * 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.airavata.registry.core.app.catalog.resources;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.registry.core.app.catalog.model.LocalDataMovement;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class LocalDataMovementAppCatalogResourceAppCat extends 
AppCatAbstractResource {
-       private final static Logger logger = 
LoggerFactory.getLogger(LocalDataMovementAppCatalogResourceAppCat.class);
-       private String dataMovementInterfaceId;
-       
-       @Override
-       public void remove(Object identifier) throws AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_DATA_MOVEMENT);
-                       
generator.setParameter(LocalDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, 
identifier);
-                       Query q = generator.deleteQuery(em);
-                       q.executeUpdate();
-                       em.getTransaction().commit();
-                       em.close();
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-       }
-       
-       @Override
-       public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_DATA_MOVEMENT);
-                       
generator.setParameter(LocalDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, 
identifier);
-                       Query q = generator.selectQuery(em);
-                       LocalDataMovement localDataMovement = 
(LocalDataMovement) q.getSingleResult();
-                       LocalDataMovementAppCatalogResourceAppCat 
localDataMovementResource = (LocalDataMovementAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_DATA_MOVEMENT, 
localDataMovement);
-                       em.getTransaction().commit();
-                       em.close();
-                       return localDataMovementResource;
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-       }
-       
-       @Override
-       public List<AppCatalogResource> get(String fieldName, Object value) 
throws AppCatalogException {
-               List<AppCatalogResource> localDataMovementResources = new 
ArrayList<AppCatalogResource>();
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_DATA_MOVEMENT);
-                       Query q;
-                       if 
((fieldName.equals(LocalDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID))) {
-                               generator.setParameter(fieldName, value);
-                               q = generator.selectQuery(em);
-                               List<?> results = q.getResultList();
-                               for (Object result : results) {
-                                       LocalDataMovement localDataMovement = 
(LocalDataMovement) result;
-                                       
LocalDataMovementAppCatalogResourceAppCat localDataMovementResource = 
(LocalDataMovementAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_DATA_MOVEMENT, 
localDataMovement);
-                                       
localDataMovementResources.add(localDataMovementResource);
-                               }
-                       } else {
-                               em.getTransaction().commit();
-                                       em.close();
-                               logger.error("Unsupported field name for Local 
Data Movement Resource.", new IllegalArgumentException());
-                               throw new IllegalArgumentException("Unsupported 
field name for Local Data Movement Resource.");
-                       }
-                       em.getTransaction().commit();
-                       em.close();
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-               return localDataMovementResources;
-       }
-
-    @Override
-    public List<AppCatalogResource> getAll() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-    public List<String> getAllIds() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-       public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
-               List<String> localDataMovementResourceIDs = new 
ArrayList<String>();
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_DATA_MOVEMENT);
-                       Query q;
-                       if 
((fieldName.equals(LocalDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID))) {
-                               generator.setParameter(fieldName, value);
-                               q = generator.selectQuery(em);
-                               List<?> results = q.getResultList();
-                               for (Object result : results) {
-                                       LocalDataMovement localDataMovement = 
(LocalDataMovement) result;
-                                       
LocalDataMovementAppCatalogResourceAppCat localDataMovementResource = 
(LocalDataMovementAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_DATA_MOVEMENT, 
localDataMovement);
-                                       
localDataMovementResourceIDs.add(localDataMovementResource.getDataMovementInterfaceId());
-                               }
-                       } else {
-                               em.getTransaction().commit();
-                                       em.close();
-                               logger.error("Unsupported field name for Local 
Data Movement Resource.", new IllegalArgumentException());
-                               throw new IllegalArgumentException("Unsupported 
field name for Local Data Movement Resource.");
-                       }
-                       em.getTransaction().commit();
-                       em.close();
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-               return localDataMovementResourceIDs;
-       }
-       
-       @Override
-       public void save() throws AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       LocalDataMovement existingLocalDataMovement = 
em.find(LocalDataMovement.class, dataMovementInterfaceId);
-                       em.close();
-                       LocalDataMovement localDataMovement;
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       if (existingLocalDataMovement == null) {
-                               localDataMovement = new LocalDataMovement();
-                       } else {
-                               localDataMovement = existingLocalDataMovement;
-                       }
-                       
localDataMovement.setDataMovementInterfaceId(getDataMovementInterfaceId());
-                       if (existingLocalDataMovement == null) {
-                               em.persist(localDataMovement);
-                       } else {
-                               em.merge(localDataMovement);
-                       }
-                       em.getTransaction().commit();
-                       em.close();
-               } catch (Exception e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-       }
-       
-       @Override
-       public boolean isExists(Object identifier) throws AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       LocalDataMovement localDataMovement = 
em.find(LocalDataMovement.class, identifier);
-                       em.close();
-                       return localDataMovement != null;
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-       }
-       
-       public String getDataMovementInterfaceId() {
-               return dataMovementInterfaceId;
-       }
-       
-       public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
-               this.dataMovementInterfaceId=dataMovementInterfaceId;
-       }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalDataMovementResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalDataMovementResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalDataMovementResource.java
new file mode 100644
index 0000000..11cb089
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalDataMovementResource.java
@@ -0,0 +1,249 @@
+/*
+ *
+ * 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.airavata.registry.core.app.catalog.resources;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.registry.core.app.catalog.model.LocalDataMovement;
+import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LocalDataMovementResource extends AppCatAbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(LocalDataMovementResource.class);
+       private String dataMovementInterfaceId;
+       
+       @Override
+       public void remove(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_DATA_MOVEMENT);
+                       
generator.setParameter(LocalDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, 
identifier);
+                       Query q = generator.deleteQuery(em);
+                       q.executeUpdate();
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_DATA_MOVEMENT);
+                       
generator.setParameter(LocalDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, 
identifier);
+                       Query q = generator.selectQuery(em);
+                       LocalDataMovement localDataMovement = 
(LocalDataMovement) q.getSingleResult();
+                       LocalDataMovementResource localDataMovementResource = 
(LocalDataMovementResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_DATA_MOVEMENT, 
localDataMovement);
+                       em.getTransaction().commit();
+                       em.close();
+                       return localDataMovementResource;
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public List<AppCatalogResource> get(String fieldName, Object value) 
throws AppCatalogException {
+               List<AppCatalogResource> localDataMovementResources = new 
ArrayList<AppCatalogResource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_DATA_MOVEMENT);
+                       Query q;
+                       if 
((fieldName.equals(LocalDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       LocalDataMovement localDataMovement = 
(LocalDataMovement) result;
+                                       LocalDataMovementResource 
localDataMovementResource = (LocalDataMovementResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_DATA_MOVEMENT, 
localDataMovement);
+                                       
localDataMovementResources.add(localDataMovementResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for Local 
Data Movement Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Local Data Movement Resource.");
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+               return localDataMovementResources;
+       }
+
+    @Override
+    public List<AppCatalogResource> getAll() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+       public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+               List<String> localDataMovementResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_DATA_MOVEMENT);
+                       Query q;
+                       if 
((fieldName.equals(LocalDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       LocalDataMovement localDataMovement = 
(LocalDataMovement) result;
+                                       LocalDataMovementResource 
localDataMovementResource = (LocalDataMovementResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_DATA_MOVEMENT, 
localDataMovement);
+                                       
localDataMovementResourceIDs.add(localDataMovementResource.getDataMovementInterfaceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for Local 
Data Movement Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Local Data Movement Resource.");
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+               return localDataMovementResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       LocalDataMovement existingLocalDataMovement = 
em.find(LocalDataMovement.class, dataMovementInterfaceId);
+                       em.close();
+                       LocalDataMovement localDataMovement;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (existingLocalDataMovement == null) {
+                               localDataMovement = new LocalDataMovement();
+                       } else {
+                               localDataMovement = existingLocalDataMovement;
+                       }
+                       
localDataMovement.setDataMovementInterfaceId(getDataMovementInterfaceId());
+                       if (existingLocalDataMovement == null) {
+                               em.persist(localDataMovement);
+                       } else {
+                               em.merge(localDataMovement);
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (Exception e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public boolean isExists(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       LocalDataMovement localDataMovement = 
em.find(LocalDataMovement.class, identifier);
+                       em.close();
+                       return localDataMovement != null;
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       public String getDataMovementInterfaceId() {
+               return dataMovementInterfaceId;
+       }
+       
+       public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
+               this.dataMovementInterfaceId=dataMovementInterfaceId;
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalSubmissionAppCatalogResourceAppCat.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalSubmissionAppCatalogResourceAppCat.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalSubmissionAppCatalogResourceAppCat.java
deleted file mode 100644
index ec03223..0000000
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalSubmissionAppCatalogResourceAppCat.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- *
- * 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.airavata.registry.core.app.catalog.resources;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.AiravataUtils;
-import org.apache.airavata.registry.core.app.catalog.model.LocalSubmission;
-import org.apache.airavata.registry.core.app.catalog.model.ResourceJobManager;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class LocalSubmissionAppCatalogResourceAppCat extends 
AppCatAbstractResource {
-       private final static Logger logger = 
LoggerFactory.getLogger(LocalSubmissionAppCatalogResourceAppCat.class);
-       private String resourceJobManagerId;
-       private ResourceJobManagerAppCatalogResourceAppCat 
resourceJobManagerResource;
-       private String jobSubmissionInterfaceId;
-    private Timestamp createdTime;
-    private Timestamp updatedTime;
-
-    public Timestamp getCreatedTime() {
-        return createdTime;
-    }
-
-    public void setCreatedTime(Timestamp createdTime) {
-        this.createdTime = createdTime;
-    }
-
-    public Timestamp getUpdatedTime() {
-        return updatedTime;
-    }
-
-    public void setUpdatedTime(Timestamp updatedTime) {
-        this.updatedTime = updatedTime;
-    }
-       
-       @Override
-       public void remove(Object identifier) throws AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_SUBMISSION);
-                       
generator.setParameter(LocalSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID, 
identifier);
-                       Query q = generator.deleteQuery(em);
-                       q.executeUpdate();
-                       em.getTransaction().commit();
-                       em.close();
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-       }
-       
-       @Override
-       public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_SUBMISSION);
-                       
generator.setParameter(LocalSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID, 
identifier);
-                       Query q = generator.selectQuery(em);
-                       LocalSubmission localSubmission = (LocalSubmission) 
q.getSingleResult();
-                       LocalSubmissionAppCatalogResourceAppCat 
localSubmissionResource = (LocalSubmissionAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_SUBMISSION, 
localSubmission);
-                       em.getTransaction().commit();
-                       em.close();
-                       return localSubmissionResource;
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-       }
-       
-       @Override
-       public List<AppCatalogResource> get(String fieldName, Object value) 
throws AppCatalogException {
-               List<AppCatalogResource> localSubmissionResources = new 
ArrayList<AppCatalogResource>();
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_SUBMISSION);
-                       Query q;
-                       if 
((fieldName.equals(LocalSubmissionConstants.RESOURCE_JOB_MANAGER_ID)) || 
(fieldName.equals(LocalSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID))) {
-                               generator.setParameter(fieldName, value);
-                               q = generator.selectQuery(em);
-                               List<?> results = q.getResultList();
-                               for (Object result : results) {
-                                       LocalSubmission localSubmission = 
(LocalSubmission) result;
-                                       LocalSubmissionAppCatalogResourceAppCat 
localSubmissionResource = (LocalSubmissionAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_SUBMISSION, 
localSubmission);
-                                       
localSubmissionResources.add(localSubmissionResource);
-                               }
-                       } else {
-                               em.getTransaction().commit();
-                                       em.close();
-                               logger.error("Unsupported field name for Local 
Submission Resource.", new IllegalArgumentException());
-                               throw new IllegalArgumentException("Unsupported 
field name for Local Submission Resource.");
-                       }
-                       em.getTransaction().commit();
-                       em.close();
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-               return localSubmissionResources;
-       }
-
-    @Override
-    public List<AppCatalogResource> getAll() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-    public List<String> getAllIds() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-       public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
-               List<String> localSubmissionResourceIDs = new 
ArrayList<String>();
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_SUBMISSION);
-                       Query q;
-                       if 
((fieldName.equals(LocalSubmissionConstants.RESOURCE_JOB_MANAGER_ID)) || 
(fieldName.equals(LocalSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID))) {
-                               generator.setParameter(fieldName, value);
-                               q = generator.selectQuery(em);
-                               List<?> results = q.getResultList();
-                               for (Object result : results) {
-                                       LocalSubmission localSubmission = 
(LocalSubmission) result;
-                                       LocalSubmissionAppCatalogResourceAppCat 
localSubmissionResource = (LocalSubmissionAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_SUBMISSION, 
localSubmission);
-                                       
localSubmissionResourceIDs.add(localSubmissionResource.getJobSubmissionInterfaceId());
-                               }
-                       } else {
-                               em.getTransaction().commit();
-                                       em.close();
-                               logger.error("Unsupported field name for Local 
Submission Resource.", new IllegalArgumentException());
-                               throw new IllegalArgumentException("Unsupported 
field name for Local Submission Resource.");
-                       }
-                       em.getTransaction().commit();
-                       em.close();
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-               return localSubmissionResourceIDs;
-       }
-       
-       @Override
-       public void save() throws AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       LocalSubmission existingLocalSubmission = 
em.find(LocalSubmission.class, jobSubmissionInterfaceId);
-                       em.close();
-                       LocalSubmission localSubmission;
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       if (existingLocalSubmission == null) {
-                               localSubmission = new LocalSubmission();
-                
localSubmission.setCreationTime(AiravataUtils.getCurrentTimestamp());
-                       } else {
-                               localSubmission = existingLocalSubmission;
-                
localSubmission.setUpdateTime(AiravataUtils.getCurrentTimestamp());
-                       }
-                       
localSubmission.setResourceJobManagerId(getResourceJobManagerId());
-                       ResourceJobManager resourceJobManager = 
em.find(ResourceJobManager.class, getResourceJobManagerId());
-                       
localSubmission.setResourceJobManager(resourceJobManager);
-                       
localSubmission.setJobSubmissionInterfaceId(getJobSubmissionInterfaceId());
-                       if (existingLocalSubmission == null) {
-                               em.persist(localSubmission);
-                       } else {
-                               em.merge(localSubmission);
-                       }
-                       em.getTransaction().commit();
-                       em.close();
-               } catch (Exception e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-       }
-       
-       @Override
-       public boolean isExists(Object identifier) throws AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       LocalSubmission localSubmission = 
em.find(LocalSubmission.class, identifier);
-                       em.close();
-                       return localSubmission != null;
-               } catch (ApplicationSettingsException e) {
-                       logger.error(e.getMessage(), e);
-                       throw new AppCatalogException(e);
-               } finally {
-                       if (em != null && em.isOpen()) {
-                               if (em.getTransaction().isActive()) {
-                                       em.getTransaction().rollback();
-                               }
-                               em.close();
-                       }
-               }
-       }
-       
-       public String getResourceJobManagerId() {
-               return resourceJobManagerId;
-       }
-       
-       public ResourceJobManagerAppCatalogResourceAppCat 
getResourceJobManagerResource() {
-               return resourceJobManagerResource;
-       }
-       
-       public String getJobSubmissionInterfaceId() {
-               return jobSubmissionInterfaceId;
-       }
-       
-       public void setResourceJobManagerId(String resourceJobManagerId) {
-               this.resourceJobManagerId=resourceJobManagerId;
-       }
-       
-       public void 
setResourceJobManagerResource(ResourceJobManagerAppCatalogResourceAppCat 
resourceJobManagerResource) {
-               this.resourceJobManagerResource=resourceJobManagerResource;
-       }
-       
-       public void setJobSubmissionInterfaceId(String 
jobSubmissionInterfaceId) {
-               this.jobSubmissionInterfaceId=jobSubmissionInterfaceId;
-       }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalSubmissionResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalSubmissionResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalSubmissionResource.java
new file mode 100644
index 0000000..ab0113e
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/LocalSubmissionResource.java
@@ -0,0 +1,293 @@
+/*
+ *
+ * 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.airavata.registry.core.app.catalog.resources;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.app.catalog.model.LocalSubmission;
+import org.apache.airavata.registry.core.app.catalog.model.ResourceJobManager;
+import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LocalSubmissionResource extends AppCatAbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(LocalSubmissionResource.class);
+       private String resourceJobManagerId;
+       private ResourceJobManagerResource resourceJobManagerResource;
+       private String jobSubmissionInterfaceId;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
+       
+       @Override
+       public void remove(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_SUBMISSION);
+                       
generator.setParameter(LocalSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID, 
identifier);
+                       Query q = generator.deleteQuery(em);
+                       q.executeUpdate();
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_SUBMISSION);
+                       
generator.setParameter(LocalSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID, 
identifier);
+                       Query q = generator.selectQuery(em);
+                       LocalSubmission localSubmission = (LocalSubmission) 
q.getSingleResult();
+                       LocalSubmissionResource localSubmissionResource = 
(LocalSubmissionResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_SUBMISSION, 
localSubmission);
+                       em.getTransaction().commit();
+                       em.close();
+                       return localSubmissionResource;
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public List<AppCatalogResource> get(String fieldName, Object value) 
throws AppCatalogException {
+               List<AppCatalogResource> localSubmissionResources = new 
ArrayList<AppCatalogResource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_SUBMISSION);
+                       Query q;
+                       if 
((fieldName.equals(LocalSubmissionConstants.RESOURCE_JOB_MANAGER_ID)) || 
(fieldName.equals(LocalSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       LocalSubmission localSubmission = 
(LocalSubmission) result;
+                                       LocalSubmissionResource 
localSubmissionResource = (LocalSubmissionResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_SUBMISSION, 
localSubmission);
+                                       
localSubmissionResources.add(localSubmissionResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for Local 
Submission Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Local Submission Resource.");
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+               return localSubmissionResources;
+       }
+
+    @Override
+    public List<AppCatalogResource> getAll() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+       public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+               List<String> localSubmissionResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(LOCAL_SUBMISSION);
+                       Query q;
+                       if 
((fieldName.equals(LocalSubmissionConstants.RESOURCE_JOB_MANAGER_ID)) || 
(fieldName.equals(LocalSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       LocalSubmission localSubmission = 
(LocalSubmission) result;
+                                       LocalSubmissionResource 
localSubmissionResource = (LocalSubmissionResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.LOCAL_SUBMISSION, 
localSubmission);
+                                       
localSubmissionResourceIDs.add(localSubmissionResource.getJobSubmissionInterfaceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for Local 
Submission Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Local Submission Resource.");
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+               return localSubmissionResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       LocalSubmission existingLocalSubmission = 
em.find(LocalSubmission.class, jobSubmissionInterfaceId);
+                       em.close();
+                       LocalSubmission localSubmission;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (existingLocalSubmission == null) {
+                               localSubmission = new LocalSubmission();
+                
localSubmission.setCreationTime(AiravataUtils.getCurrentTimestamp());
+                       } else {
+                               localSubmission = existingLocalSubmission;
+                
localSubmission.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                       }
+                       
localSubmission.setResourceJobManagerId(getResourceJobManagerId());
+                       ResourceJobManager resourceJobManager = 
em.find(ResourceJobManager.class, getResourceJobManagerId());
+                       
localSubmission.setResourceJobManager(resourceJobManager);
+                       
localSubmission.setJobSubmissionInterfaceId(getJobSubmissionInterfaceId());
+                       if (existingLocalSubmission == null) {
+                               em.persist(localSubmission);
+                       } else {
+                               em.merge(localSubmission);
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (Exception e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public boolean isExists(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       LocalSubmission localSubmission = 
em.find(LocalSubmission.class, identifier);
+                       em.close();
+                       return localSubmission != null;
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       public String getResourceJobManagerId() {
+               return resourceJobManagerId;
+       }
+       
+       public ResourceJobManagerResource getResourceJobManagerResource() {
+               return resourceJobManagerResource;
+       }
+       
+       public String getJobSubmissionInterfaceId() {
+               return jobSubmissionInterfaceId;
+       }
+       
+       public void setResourceJobManagerId(String resourceJobManagerId) {
+               this.resourceJobManagerId=resourceJobManagerId;
+       }
+       
+       public void setResourceJobManagerResource(ResourceJobManagerResource 
resourceJobManagerResource) {
+               this.resourceJobManagerResource=resourceJobManagerResource;
+       }
+       
+       public void setJobSubmissionInterfaceId(String 
jobSubmissionInterfaceId) {
+               this.jobSubmissionInterfaceId=jobSubmissionInterfaceId;
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ModuleLoadCmdAppCatalogResourceAppCat.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ModuleLoadCmdAppCatalogResourceAppCat.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ModuleLoadCmdAppCatalogResourceAppCat.java
deleted file mode 100644
index 0cc2bde..0000000
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ModuleLoadCmdAppCatalogResourceAppCat.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- *
- * 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.airavata.registry.core.app.catalog.resources;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import 
org.apache.airavata.registry.core.app.catalog.model.ApplicationDeployment;
-import org.apache.airavata.registry.core.app.catalog.model.ModuleLoadCmd;
-import org.apache.airavata.registry.core.app.catalog.model.ModuleLoadCmd_PK;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class ModuleLoadCmdAppCatalogResourceAppCat extends 
AppCatAbstractResource {
-    private final static Logger logger = 
LoggerFactory.getLogger(ModuleLoadCmdAppCatalogResourceAppCat.class);
-    private String cmd;
-    private String appDeploymentId;
-    private AppDeploymentAppCatalogResourceAppCat appDeploymentResource;
-
-    @Override
-    public void remove(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap<String, String>) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and 
it's value");
-            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
-        }
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(MODULE_LOAD_CMD);
-            generator.setParameter(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID, 
ids.get(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID));
-            if (ids.get(ModuleLoadCmdConstants.CMD) != null){
-                generator.setParameter(ModuleLoadCmdConstants.CMD, 
ids.get(ModuleLoadCmdConstants.CMD));
-            }
-            Query q = generator.deleteQuery(em);
-            q.executeUpdate();
-            em.getTransaction().commit();
-            em.close();
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap<String, String>) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and 
it's value");
-            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
-        }
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(MODULE_LOAD_CMD);
-            generator.setParameter(ModuleLoadCmdConstants.CMD, 
ids.get(ModuleLoadCmdConstants.CMD));
-            generator.setParameter(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID, 
ids.get(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID));
-            Query q = generator.selectQuery(em);
-            ModuleLoadCmd moduleLoadCmd = (ModuleLoadCmd) q.getSingleResult();
-            ModuleLoadCmdAppCatalogResourceAppCat moduleLoadCmdResource = 
(ModuleLoadCmdAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.MODULE_LOAD_CMD, 
moduleLoadCmd);
-            em.getTransaction().commit();
-            em.close();
-            return moduleLoadCmdResource;
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public List<AppCatalogResource> get(String fieldName, Object value) throws 
AppCatalogException {
-        List<AppCatalogResource> moduleLoadCmdResources = new 
ArrayList<AppCatalogResource>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(MODULE_LOAD_CMD);
-            Query q;
-            if ((fieldName.equals(ModuleLoadCmdConstants.CMD)) || 
(fieldName.equals(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID))) {
-                generator.setParameter(fieldName, value);
-                q = generator.selectQuery(em);
-                List<?> results = q.getResultList();
-                for (Object result : results) {
-                    ModuleLoadCmd moduleLoadCmd = (ModuleLoadCmd) result;
-                    ModuleLoadCmdAppCatalogResourceAppCat 
moduleLoadCmdResource = (ModuleLoadCmdAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.MODULE_LOAD_CMD, 
moduleLoadCmd);
-                    moduleLoadCmdResources.add(moduleLoadCmdResource);
-                }
-            } else {
-                em.getTransaction().commit();
-                em.close();
-                logger.error("Unsupported field name for Module Load Cmd 
Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for 
Module Load Cmd Resource.");
-            }
-            em.getTransaction().commit();
-            em.close();
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return moduleLoadCmdResources;
-    }
-
-    @Override
-    public List<AppCatalogResource> getAll() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-    public List<String> getAllIds() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-    public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
-        List<String> moduleLoadCmdResourceIDs = new ArrayList<String>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(MODULE_LOAD_CMD);
-            Query q;
-            if ((fieldName.equals(ModuleLoadCmdConstants.CMD)) || 
(fieldName.equals(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID))) {
-                generator.setParameter(fieldName, value);
-                q = generator.selectQuery(em);
-                List<?> results = q.getResultList();
-                for (Object result : results) {
-                    ModuleLoadCmd moduleLoadCmd = (ModuleLoadCmd) result;
-                    ModuleLoadCmdAppCatalogResourceAppCat 
moduleLoadCmdResource = (ModuleLoadCmdAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.MODULE_LOAD_CMD, 
moduleLoadCmd);
-                    
moduleLoadCmdResourceIDs.add(moduleLoadCmdResource.getAppDeploymentId());
-                }
-            } else {
-                em.getTransaction().commit();
-                em.close();
-                logger.error("Unsupported field name for Module Load Cmd 
Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for 
Module Load Cmd Resource.");
-            }
-            em.getTransaction().commit();
-            em.close();
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-        return moduleLoadCmdResourceIDs;
-    }
-
-    @Override
-    public void save() throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            ModuleLoadCmd existingModuleLoadCmd = em.find(ModuleLoadCmd.class, 
new ModuleLoadCmd_PK(cmd, appDeploymentId));
-            em.close();
-            ModuleLoadCmd moduleLoadCmd;
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            if (existingModuleLoadCmd == null) {
-                moduleLoadCmd = new ModuleLoadCmd();
-            } else {
-                moduleLoadCmd = existingModuleLoadCmd;
-            }
-            moduleLoadCmd.setCmd(getCmd());
-            moduleLoadCmd.setAppDeploymentId(getAppDeploymentId());
-            ApplicationDeployment applicationDeployment = 
em.find(ApplicationDeployment.class, getAppDeploymentId());
-            moduleLoadCmd.setApplicationDeployment(applicationDeployment);
-            if (existingModuleLoadCmd == null) {
-                em.persist(moduleLoadCmd);
-            } else {
-                em.merge(moduleLoadCmd);
-            }
-            em.getTransaction().commit();
-            em.close();
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    @Override
-    public boolean isExists(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap<String, String>) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and 
it's value");
-            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
-        }
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            ModuleLoadCmd moduleLoadCmd = em.find(ModuleLoadCmd.class, new 
ModuleLoadCmd_PK(ids.get(ModuleLoadCmdConstants.CMD), 
ids.get(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID)));
-            em.close();
-            return moduleLoadCmd != null;
-        } catch (ApplicationSettingsException e) {
-            logger.error(e.getMessage(), e);
-            throw new AppCatalogException(e);
-        } finally {
-            if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
-            }
-        }
-    }
-
-    public String getCmd() {
-        return cmd;
-    }
-
-    public String getAppDeploymentId() {
-        return appDeploymentId;
-    }
-
-    public AppDeploymentAppCatalogResourceAppCat getAppDeploymentResource() {
-        return appDeploymentResource;
-    }
-
-    public void setCmd(String cmd) {
-        this.cmd=cmd;
-    }
-
-    public void setAppDeploymentId(String appDeploymentId) {
-        this.appDeploymentId=appDeploymentId;
-    }
-
-    public void setAppDeploymentResource(AppDeploymentAppCatalogResourceAppCat 
appDeploymentResource) {
-        this.appDeploymentResource=appDeploymentResource;
-    }
-}
-
-

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ModuleLoadCmdResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ModuleLoadCmdResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ModuleLoadCmdResource.java
new file mode 100644
index 0000000..43c6106
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ModuleLoadCmdResource.java
@@ -0,0 +1,300 @@
+/*
+ *
+ * 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.airavata.registry.core.app.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import 
org.apache.airavata.registry.core.app.catalog.model.ApplicationDeployment;
+import org.apache.airavata.registry.core.app.catalog.model.ModuleLoadCmd;
+import org.apache.airavata.registry.core.app.catalog.model.ModuleLoadCmd_PK;
+import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ModuleLoadCmdResource extends AppCatAbstractResource {
+    private final static Logger logger = 
LoggerFactory.getLogger(ModuleLoadCmdResource.class);
+    private String cmd;
+    private String appDeploymentId;
+    private AppDeploymentResource appDeploymentResource;
+
+    @Override
+    public void remove(Object identifier) throws AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(MODULE_LOAD_CMD);
+            generator.setParameter(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID, 
ids.get(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID));
+            if (ids.get(ModuleLoadCmdConstants.CMD) != null){
+                generator.setParameter(ModuleLoadCmdConstants.CMD, 
ids.get(ModuleLoadCmdConstants.CMD));
+            }
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            em.close();
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(MODULE_LOAD_CMD);
+            generator.setParameter(ModuleLoadCmdConstants.CMD, 
ids.get(ModuleLoadCmdConstants.CMD));
+            generator.setParameter(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID, 
ids.get(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID));
+            Query q = generator.selectQuery(em);
+            ModuleLoadCmd moduleLoadCmd = (ModuleLoadCmd) q.getSingleResult();
+            ModuleLoadCmdResource moduleLoadCmdResource = 
(ModuleLoadCmdResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.MODULE_LOAD_CMD, 
moduleLoadCmd);
+            em.getTransaction().commit();
+            em.close();
+            return moduleLoadCmdResource;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public List<AppCatalogResource> get(String fieldName, Object value) throws 
AppCatalogException {
+        List<AppCatalogResource> moduleLoadCmdResources = new 
ArrayList<AppCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(MODULE_LOAD_CMD);
+            Query q;
+            if ((fieldName.equals(ModuleLoadCmdConstants.CMD)) || 
(fieldName.equals(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID))) {
+                generator.setParameter(fieldName, value);
+                q = generator.selectQuery(em);
+                List<?> results = q.getResultList();
+                for (Object result : results) {
+                    ModuleLoadCmd moduleLoadCmd = (ModuleLoadCmd) result;
+                    ModuleLoadCmdResource moduleLoadCmdResource = 
(ModuleLoadCmdResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.MODULE_LOAD_CMD, 
moduleLoadCmd);
+                    moduleLoadCmdResources.add(moduleLoadCmdResource);
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Module Load Cmd 
Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
Module Load Cmd Resource.");
+            }
+            em.getTransaction().commit();
+            em.close();
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return moduleLoadCmdResources;
+    }
+
+    @Override
+    public List<AppCatalogResource> getAll() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+        List<String> moduleLoadCmdResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(MODULE_LOAD_CMD);
+            Query q;
+            if ((fieldName.equals(ModuleLoadCmdConstants.CMD)) || 
(fieldName.equals(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID))) {
+                generator.setParameter(fieldName, value);
+                q = generator.selectQuery(em);
+                List<?> results = q.getResultList();
+                for (Object result : results) {
+                    ModuleLoadCmd moduleLoadCmd = (ModuleLoadCmd) result;
+                    ModuleLoadCmdResource moduleLoadCmdResource = 
(ModuleLoadCmdResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.MODULE_LOAD_CMD, 
moduleLoadCmd);
+                    
moduleLoadCmdResourceIDs.add(moduleLoadCmdResource.getAppDeploymentId());
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Module Load Cmd 
Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
Module Load Cmd Resource.");
+            }
+            em.getTransaction().commit();
+            em.close();
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return moduleLoadCmdResourceIDs;
+    }
+
+    @Override
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            ModuleLoadCmd existingModuleLoadCmd = em.find(ModuleLoadCmd.class, 
new ModuleLoadCmd_PK(cmd, appDeploymentId));
+            em.close();
+            ModuleLoadCmd moduleLoadCmd;
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingModuleLoadCmd == null) {
+                moduleLoadCmd = new ModuleLoadCmd();
+            } else {
+                moduleLoadCmd = existingModuleLoadCmd;
+            }
+            moduleLoadCmd.setCmd(getCmd());
+            moduleLoadCmd.setAppDeploymentId(getAppDeploymentId());
+            ApplicationDeployment applicationDeployment = 
em.find(ApplicationDeployment.class, getAppDeploymentId());
+            moduleLoadCmd.setApplicationDeployment(applicationDeployment);
+            if (existingModuleLoadCmd == null) {
+                em.persist(moduleLoadCmd);
+            } else {
+                em.merge(moduleLoadCmd);
+            }
+            em.getTransaction().commit();
+            em.close();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    @Override
+    public boolean isExists(Object identifier) throws AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap<String, String>) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            ModuleLoadCmd moduleLoadCmd = em.find(ModuleLoadCmd.class, new 
ModuleLoadCmd_PK(ids.get(ModuleLoadCmdConstants.CMD), 
ids.get(ModuleLoadCmdConstants.APP_DEPLOYMENT_ID)));
+            em.close();
+            return moduleLoadCmd != null;
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()) {
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public String getCmd() {
+        return cmd;
+    }
+
+    public String getAppDeploymentId() {
+        return appDeploymentId;
+    }
+
+    public AppDeploymentResource getAppDeploymentResource() {
+        return appDeploymentResource;
+    }
+
+    public void setCmd(String cmd) {
+        this.cmd=cmd;
+    }
+
+    public void setAppDeploymentId(String appDeploymentId) {
+        this.appDeploymentId=appDeploymentId;
+    }
+
+    public void setAppDeploymentResource(AppDeploymentResource 
appDeploymentResource) {
+        this.appDeploymentResource=appDeploymentResource;
+    }
+}
+
+

Reply via email to