You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2014/06/28 16:43:18 UTC

git commit: adding more app catalog resource classes

Repository: airavata
Updated Branches:
  refs/heads/master 9c4a19fae -> f048c8a61


adding more app catalog resource classes


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

Branch: refs/heads/master
Commit: f048c8a61c09b7a0353815d15d871d488ad140d8
Parents: 9c4a19f
Author: Sachith Withana <sa...@apache.org>
Authored: Sat Jun 28 20:15:25 2014 +0530
Committer: Sachith Withana <sa...@apache.org>
Committed: Sat Jun 28 20:15:25 2014 +0530

----------------------------------------------------------------------
 .../data/model/GSISSHPostJobCommand.java        |  10 +-
 .../catalog/data/model/GSISSHPreJobCommand.java |  10 +-
 .../data/resources/AbstractResource.java        |   4 +-
 .../resources/GSISSHPostJobCommandResource.java | 306 +++++++++++++++
 .../resources/GSISSHPreJobCommandResource.java  | 305 +++++++++++++++
 .../resources/GlobusJobSubmissionResource.java  | 373 +++++++++++++++++++
 6 files changed, 996 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/f048c8a6/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPostJobCommand.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPostJobCommand.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPostJobCommand.java
index abf5b3c..4d335f9 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPostJobCommand.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPostJobCommand.java
@@ -38,7 +38,7 @@ public class GSISSHPostJobCommand {
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "SUBMISSION_ID")
-    private GSISSHJobSubmission gsisshJobSubmission;
+    private GSISSHSubmission gsisshSubmission;
 
     public String getSubmissionID() {
         return submissionID;
@@ -56,11 +56,11 @@ public class GSISSHPostJobCommand {
         this.command = command;
     }
 
-    public GSISSHJobSubmission getGsisshJobSubmission() {
-        return gsisshJobSubmission;
+    public GSISSHSubmission getGsisshSubmission() {
+        return gsisshSubmission;
     }
 
-    public void setGsisshJobSubmission(GSISSHJobSubmission gsisshJobSubmission) {
-        this.gsisshJobSubmission = gsisshJobSubmission;
+    public void setGsisshSubmission(GSISSHSubmission gsisshSubmission) {
+        this.gsisshSubmission = gsisshSubmission;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/f048c8a6/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPreJobCommand.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPreJobCommand.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPreJobCommand.java
index 11b4e5f..926e6a9 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPreJobCommand.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GSISSHPreJobCommand.java
@@ -38,7 +38,7 @@ public class GSISSHPreJobCommand {
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "SUBMISSION_ID")
-    private GSISSHJobSubmission gsisshJobSubmission;
+    private GSISSHSubmission gsisshSubmission;
 
     public String getSubmissionID() {
         return submissionID;
@@ -56,11 +56,11 @@ public class GSISSHPreJobCommand {
         this.command = command;
     }
 
-    public GSISSHJobSubmission getGsisshJobSubmission() {
-        return gsisshJobSubmission;
+    public GSISSHSubmission getGsisshSubmission() {
+        return gsisshSubmission;
     }
 
-    public void setGsisshJobSubmission(GSISSHJobSubmission gsisshJobSubmission) {
-        this.gsisshJobSubmission = gsisshJobSubmission;
+    public void setGsisshSubmission(GSISSHSubmission gsisshSubmission) {
+        this.gsisshSubmission = gsisshSubmission;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/f048c8a6/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
index 65a8e59..91b4ed5 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
@@ -86,13 +86,13 @@ public abstract class AbstractResource implements Resource {
 
     // GSSISSH Pre Job Command Table
     public final class GSISSHPreJobCommandConstants {
-        public static final String RESOURCE_ID = "resourceID";
+        public static final String SUBMISSION_ID = "submissionID";
         public static final String COMMAND = "command";
     }
 
     // GSSISSH Post Job Command Table
     public final class GSISSHPostJobCommandConstants {
-        public static final String RESOURCE_ID = "resourceID";
+        public static final String SUBMISSION_ID = "submissionID";
         public static final String COMMAND = "command";
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/f048c8a6/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GSISSHPostJobCommandResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GSISSHPostJobCommandResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GSISSHPostJobCommandResource.java
new file mode 100644
index 0000000..92cff0c
--- /dev/null
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GSISSHPostJobCommandResource.java
@@ -0,0 +1,306 @@
+package org.apache.aiaravata.application.catalog.data.resources;
+
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.model.ComputeResource;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHPostJobCommand;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHPostJobCommandPK;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHSubmission;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+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 GSISSHPostJobCommandResource extends AbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(GSISSHPostJobCommandResource.class);
+
+    private String submissionID;
+    private String command;
+
+    private GSISSHSubmissionResource gsisshSubmissionResource;
+
+
+    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(GSISSH_POSTJOBCOMMAND);
+            generator.setParameter(GSISSHPostJobCommandConstants.SUBMISSION_ID,
+                    ids.get(GSISSHPostJobCommandConstants.SUBMISSION_ID));
+            generator.setParameter(GSISSHPostJobCommandConstants.COMMAND, ids.get(GSISSHPostJobCommandConstants.COMMAND));
+            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();
+            }
+        }
+    }
+
+    public Resource 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(GSISSH_POSTJOBCOMMAND);
+            generator.setParameter(GSISSHPostJobCommandConstants.SUBMISSION_ID,
+                    ids.get(GSISSHPostJobCommandConstants.SUBMISSION_ID));
+            generator.setParameter(GSISSHPostJobCommandConstants.COMMAND, ids.get(GSISSHPostJobCommandConstants.COMMAND));
+            Query q = generator.selectQuery(em);
+            GSISSHPostJobCommand gsisshPostJobCommand = (GSISSHPostJobCommand) q.getSingleResult();
+            GSISSHPostJobCommandResource gsisshPostJobCommandResource =
+                    (GSISSHPostJobCommandResource) AppCatalogJPAUtils.getResource(
+                            AppCatalogResourceType.GSISSH_POSTJOBCOMMAND, gsisshPostJobCommand);
+            em.getTransaction().commit();
+            em.close();
+            return gsisshPostJobCommandResource;
+        } 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 List<Resource> get(String fieldName, Object value) throws AppCatalogException {
+        List<Resource> gsiSSHPostJobCommandResources = new ArrayList<Resource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GSISSH_POSTJOBCOMMAND);
+            List results;
+            if (fieldName.equals(GSISSHPostJobCommandConstants.SUBMISSION_ID)) {
+                generator.setParameter(GSISSHPostJobCommandConstants.SUBMISSION_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHPostJobCommand gsisshPostJobCommand = (GSISSHPostJobCommand) result;
+                        GSISSHPostJobCommandResource gsisshPostJobCommandResource =
+                                (GSISSHPostJobCommandResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GSISSH_POSTJOBCOMMAND, gsisshPostJobCommand);
+                        gsiSSHPostJobCommandResources.add(gsisshPostJobCommandResource);
+                    }
+                }
+            } else if (fieldName.equals(GSISSHPostJobCommandConstants.COMMAND)) {
+                generator.setParameter(GSISSHPostJobCommandConstants.COMMAND, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHPostJobCommand gsisshPostJobCommand = (GSISSHPostJobCommand) result;
+                        GSISSHPostJobCommandResource gsisshPostJobCommandResource =
+                                (GSISSHPostJobCommandResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GSISSH_POSTJOBCOMMAND, gsisshPostJobCommand);
+                        gsiSSHPostJobCommandResources.add(gsisshPostJobCommandResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for GSISSH Post Job Command Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for GSISSH Post Job Command 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 gsiSSHPostJobCommandResources;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
+        List<String> gsiSSHPostJobResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GSISSH_POSTJOBCOMMAND);
+            List results;
+            if (fieldName.equals(GSISSHPostJobCommandConstants.SUBMISSION_ID)) {
+                generator.setParameter(GSISSHPostJobCommandConstants.SUBMISSION_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHPostJobCommand gsisshPostJobCommand = (GSISSHPostJobCommand) result;
+                        gsiSSHPostJobResourceIDs.add(gsisshPostJobCommand.getSubmissionID());
+                    }
+                }
+            } else if (fieldName.equals(GSISSHPostJobCommandConstants.COMMAND)) {
+                generator.setParameter(GSISSHPostJobCommandConstants.COMMAND, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHPostJobCommand gsisshPostJobCommand = (GSISSHPostJobCommand) result;
+                        gsiSSHPostJobResourceIDs.add(gsisshPostJobCommand.getSubmissionID());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for GSISSH Post Job resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for GSISSH Post JOb 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 gsiSSHPostJobResourceIDs;
+    }
+
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            GSISSHPostJobCommand existingPostJobCommand = em.find(GSISSHPostJobCommand.class,
+                    new GSISSHPostJobCommandPK(submissionID, command));
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingPostJobCommand !=  null){
+                existingPostJobCommand.setSubmissionID(submissionID);
+                GSISSHSubmission gsisshSubmission = em.find(GSISSHSubmission.class, submissionID);
+                existingPostJobCommand.setCommand(command);
+                existingPostJobCommand.setGsisshSubmission(gsisshSubmission);
+
+                em.merge(existingPostJobCommand);
+            }else {
+                GSISSHPostJobCommand gsisshPostJobCommand = new GSISSHPostJobCommand();
+                gsisshPostJobCommand.setSubmissionID(submissionID);
+                GSISSHSubmission gsisshSubmission = em.find(GSISSHSubmission.class, submissionID);
+                existingPostJobCommand.setCommand(command);
+                existingPostJobCommand.setGsisshSubmission(gsisshSubmission);
+
+                em.persist(gsisshPostJobCommand);
+            }
+            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();
+            }
+        }
+    }
+
+    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();
+            GSISSHPostJobCommand gsisshPostJobCommand = em.find(GSISSHPostJobCommand.class, new GSISSHPostJobCommandPK(
+                    ids.get(GSISSHPostJobCommandConstants.SUBMISSION_ID),
+                    ids.get(GSISSHPostJobCommandConstants.COMMAND)));
+
+            em.close();
+            return gsisshPostJobCommand != 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 getSubmissionID() {
+        return submissionID;
+    }
+
+    public void setSubmissionID(String submissionID) {
+        this.submissionID = submissionID;
+    }
+
+    public String getCommand() {
+        return command;
+    }
+
+    public void setCommand(String command) {
+        this.command = command;
+    }
+
+    public GSISSHSubmissionResource getGsisshSubmissionResource() {
+        return gsisshSubmissionResource;
+    }
+
+    public void setGsisshSubmissionResource(GSISSHSubmissionResource gsisshSubmissionResource) {
+        this.gsisshSubmissionResource = gsisshSubmissionResource;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/f048c8a6/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GSISSHPreJobCommandResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GSISSHPreJobCommandResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GSISSHPreJobCommandResource.java
new file mode 100644
index 0000000..09e9d1c
--- /dev/null
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GSISSHPreJobCommandResource.java
@@ -0,0 +1,305 @@
+package org.apache.aiaravata.application.catalog.data.resources;
+
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHPreJobCommand;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHPreJobCommandPK;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHSubmission;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+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 GSISSHPreJobCommandResource extends AbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(GSISSHPreJobCommandResource.class);
+
+    private String submissionID;
+    private String command;
+
+    private GSISSHSubmissionResource gsisshSubmissionResource;
+
+
+    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(GSISSH_PREJOBCOMMAND);
+            generator.setParameter(GSISSHPreJobCommandConstants.SUBMISSION_ID,
+                    ids.get(GSISSHPreJobCommandConstants.SUBMISSION_ID));
+            generator.setParameter(GSISSHPreJobCommandConstants.COMMAND, ids.get(GSISSHPreJobCommandConstants.COMMAND));
+            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();
+            }
+        }
+    }
+
+    public Resource 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(GSISSH_PREJOBCOMMAND);
+            generator.setParameter(GSISSHPreJobCommandConstants.SUBMISSION_ID,
+                    ids.get(GSISSHPreJobCommandConstants.SUBMISSION_ID));
+            generator.setParameter(GSISSHPreJobCommandConstants.COMMAND, ids.get(GSISSHPreJobCommandConstants.COMMAND));
+            Query q = generator.selectQuery(em);
+            GSISSHPreJobCommand gsisshPreJobCommand = (GSISSHPreJobCommand) q.getSingleResult();
+            GSISSHPreJobCommandResource gsisshPreJobCommandResource =
+                    (GSISSHPreJobCommandResource) AppCatalogJPAUtils.getResource(
+                            AppCatalogResourceType.GSISSH_PREJOBCOMMAND, gsisshPreJobCommand);
+            em.getTransaction().commit();
+            em.close();
+            return gsisshPreJobCommandResource;
+        } 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 List<Resource> get(String fieldName, Object value) throws AppCatalogException {
+        List<Resource> gsiSSHPreJobResources = new ArrayList<Resource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GSISSH_PREJOBCOMMAND);
+            List results;
+            if (fieldName.equals(GSISSHPreJobCommandConstants.SUBMISSION_ID)) {
+                generator.setParameter(GSISSHPreJobCommandConstants.SUBMISSION_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHPreJobCommand gsisshPreJobCommand = (GSISSHPreJobCommand) result;
+                        GSISSHPreJobCommandResource gsisshPreJobCommandResource =
+                                (GSISSHPreJobCommandResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GSISSH_PREJOBCOMMAND, gsisshPreJobCommand);
+                        gsiSSHPreJobResources.add(gsisshPreJobCommandResource);
+                    }
+                }
+            } else if (fieldName.equals(GSISSHPreJobCommandConstants.COMMAND)) {
+                generator.setParameter(GSISSHPreJobCommandConstants.COMMAND, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHPreJobCommand gsisshPreJobCommand = (GSISSHPreJobCommand) result;
+                        GSISSHPreJobCommandResource gsisshPreJobCommandResource =
+                                (GSISSHPreJobCommandResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GSISSH_PREJOBCOMMAND, gsisshPreJobCommand);
+                        gsiSSHPreJobResources.add(gsisshPreJobCommandResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for GSISSH Pre Job Command Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for GSISSH Pre Job Command 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 gsiSSHPreJobResources;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
+        List<String> gsiSSHPreJobResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GSISSH_PREJOBCOMMAND);
+            List results;
+            if (fieldName.equals(GSISSHPreJobCommandConstants.SUBMISSION_ID)) {
+                generator.setParameter(GSISSHPreJobCommandConstants.SUBMISSION_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHPreJobCommand gsisshPreJobCommand = (GSISSHPreJobCommand) result;
+                        gsiSSHPreJobResourceIDs.add(gsisshPreJobCommand.getSubmissionID());
+                    }
+                }
+            } else if (fieldName.equals(GSISSHPreJobCommandConstants.COMMAND)) {
+                generator.setParameter(GSISSHPreJobCommandConstants.COMMAND, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHPreJobCommand gsisshPreJobCommand = (GSISSHPreJobCommand) result;
+                        gsiSSHPreJobResourceIDs.add(gsisshPreJobCommand.getSubmissionID());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for GSISSH Pre Job resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for GSISSH Pre JOb 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 gsiSSHPreJobResourceIDs;
+    }
+
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            GSISSHPreJobCommand existingGSIsshPreJobCommand = em.find(GSISSHPreJobCommand.class,
+                    new GSISSHPreJobCommandPK(submissionID, command));
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingGSIsshPreJobCommand !=  null){
+                existingGSIsshPreJobCommand.setSubmissionID(submissionID);
+                GSISSHSubmission gsisshSubmission = em.find(GSISSHSubmission.class, submissionID);
+                existingGSIsshPreJobCommand.setCommand(command);
+                existingGSIsshPreJobCommand.setGsisshSubmission(gsisshSubmission);
+
+                em.merge(existingGSIsshPreJobCommand);
+            }else {
+                GSISSHPreJobCommand gsisshPreJobCommand = new GSISSHPreJobCommand();
+                gsisshPreJobCommand.setSubmissionID(submissionID);
+                GSISSHSubmission gsisshSubmission = em.find(GSISSHSubmission.class, submissionID);
+                existingGSIsshPreJobCommand.setCommand(command);
+                existingGSIsshPreJobCommand.setGsisshSubmission(gsisshSubmission);
+
+                em.persist(gsisshPreJobCommand);
+            }
+            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();
+            }
+        }
+    }
+
+    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();
+            GSISSHPreJobCommand gsisshPreJobCommand = em.find(GSISSHPreJobCommand.class, new GSISSHPreJobCommandPK(
+                    ids.get(GSISSHPreJobCommandConstants.SUBMISSION_ID),
+                    ids.get(GSISSHPreJobCommandConstants.COMMAND)));
+
+            em.close();
+            return gsisshPreJobCommand != 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 getSubmissionID() {
+        return submissionID;
+    }
+
+    public void setSubmissionID(String submissionID) {
+        this.submissionID = submissionID;
+    }
+
+    public String getCommand() {
+        return command;
+    }
+
+    public void setCommand(String command) {
+        this.command = command;
+    }
+
+    public GSISSHSubmissionResource getGsisshSubmissionResource() {
+        return gsisshSubmissionResource;
+    }
+
+    public void setGsisshSubmissionResource(GSISSHSubmissionResource gsisshSubmissionResource) {
+        this.gsisshSubmissionResource = gsisshSubmissionResource;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/f048c8a6/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusJobSubmissionResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusJobSubmissionResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusJobSubmissionResource.java
new file mode 100644
index 0000000..383aaca
--- /dev/null
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusJobSubmissionResource.java
@@ -0,0 +1,373 @@
+package org.apache.aiaravata.application.catalog.data.resources;
+
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.model.ComputeResource;
+import org.apache.aiaravata.application.catalog.data.model.GlobusJobSubmission;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.List;
+
+public class GlobusJobSubmissionResource extends AbstractResource {
+
+    private final static Logger logger = LoggerFactory.getLogger(GlobusJobSubmissionResource.class);
+
+    private String resourceID;
+    private String submissionID;
+    private String resourceJobManager;
+    private String securityProtocol;
+    private String globusEP;
+
+    private ComputeHostResource computeHostResource;
+
+    public void remove(Object identifier) throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION);
+            generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_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();
+            }
+        }
+    }
+
+    public Resource get(Object identifier) throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION);
+            generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_ID, identifier);
+            Query q = generator.selectQuery(em);
+            GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) q.getSingleResult();
+            GlobusJobSubmissionResource globusJobSubmissionResource =
+                    (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource(
+                            AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission);
+            em.getTransaction().commit();
+            em.close();
+            return globusJobSubmissionResource;
+        } 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 List<Resource> get(String fieldName, Object value) throws AppCatalogException {
+        List<Resource> globusSubmissionResourceList = new ArrayList<Resource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION);
+            List results;
+            if (fieldName.equals(GlobusJobSubmissionConstants.SUBMISSION_ID)) {
+                generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        GlobusJobSubmissionResource globusJobSubmissionResource =
+                                (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission);
+                        globusSubmissionResourceList.add(globusJobSubmissionResource);
+                    }
+                }
+            } else if (fieldName.equals(GlobusJobSubmissionConstants.RESOURCE_ID)) {
+                generator.setParameter(GlobusJobSubmissionConstants.RESOURCE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        GlobusJobSubmissionResource globusJobSubmissionResource =
+                                (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission);
+                        globusSubmissionResourceList.add(globusJobSubmissionResource);
+                    }
+                }
+            } else if (fieldName.equals(GlobusJobSubmissionConstants.globusEP)) {
+                generator.setParameter(GlobusJobSubmissionConstants.globusEP, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        GlobusJobSubmissionResource globusJobSubmissionResource =
+                                (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission);
+                        globusSubmissionResourceList.add(globusJobSubmissionResource);
+                    }
+                }
+            } else if (fieldName.equals(GlobusJobSubmissionConstants.resourceJobManager)) {
+                generator.setParameter(GlobusJobSubmissionConstants.resourceJobManager, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        GlobusJobSubmissionResource globusJobSubmissionResource =
+                                (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission);
+                        globusSubmissionResourceList.add(globusJobSubmissionResource);
+                    }
+                }
+            } else if (fieldName.equals(GlobusJobSubmissionConstants.securityProtocol)) {
+                generator.setParameter(GlobusJobSubmissionConstants.securityProtocol, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        GlobusJobSubmissionResource globusJobSubmissionResource =
+                                (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource(
+                                        AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission);
+                        globusSubmissionResourceList.add(globusJobSubmissionResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Globus submission resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Globus Submission 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 globusSubmissionResourceList;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
+        List<String> globusSubmissionResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION);
+            List results;
+            if (fieldName.equals(GlobusJobSubmissionConstants.SUBMISSION_ID)) {
+                generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID());
+                    }
+                }
+            } else if (fieldName.equals(GlobusJobSubmissionConstants.RESOURCE_ID)) {
+                generator.setParameter(GlobusJobSubmissionConstants.RESOURCE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID());
+                    }
+                }
+            }
+            else if (fieldName.equals(GlobusJobSubmissionConstants.globusEP)) {
+                generator.setParameter(GlobusJobSubmissionConstants.globusEP, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID());
+                    }
+                }
+            }
+            else if (fieldName.equals(GlobusJobSubmissionConstants.securityProtocol)) {
+                generator.setParameter(GlobusJobSubmissionConstants.securityProtocol, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID());
+                    }
+                }
+            } else if (fieldName.equals(GlobusJobSubmissionConstants.resourceJobManager)) {
+                generator.setParameter(GlobusJobSubmissionConstants.resourceJobManager, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result;
+                        globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Globus Submission resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for Globus Submission 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 globusSubmissionResourceIDs;
+    }
+
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            GlobusJobSubmission existingGlobusSubmission = em.find(GlobusJobSubmission.class, submissionID);
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            if (existingGlobusSubmission != null) {
+                existingGlobusSubmission.setSubmissionID(submissionID);
+                existingGlobusSubmission.setResourceID(resourceID);
+                existingGlobusSubmission.setGlobusEP(globusEP);
+                existingGlobusSubmission.setResourceJobManager(resourceJobManager);
+                existingGlobusSubmission.setSecurityProtocol(securityProtocol);
+                ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
+                existingGlobusSubmission.setComputeResource(computeResource);
+
+                em.merge(existingGlobusSubmission);
+            } else {
+                GlobusJobSubmission globusJobSubmission = new GlobusJobSubmission();
+                globusJobSubmission.setResourceID(resourceID);
+                globusJobSubmission.setSubmissionID(submissionID);
+                globusJobSubmission.setSecurityProtocol(securityProtocol);
+                globusJobSubmission.setGlobusEP(globusEP);
+                globusJobSubmission.setResourceJobManager(resourceJobManager);
+                ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
+                globusJobSubmission.setComputeResource(computeResource);
+                em.persist(globusJobSubmission);
+            }
+            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();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            GlobusJobSubmission globusJobSubmission = em.find(GlobusJobSubmission.class, identifier);
+            em.close();
+            return globusJobSubmission != 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 getResourceID() {
+        return resourceID;
+    }
+
+    public void setResourceID(String resourceID) {
+        this.resourceID = resourceID;
+    }
+
+    public String getSubmissionID() {
+        return submissionID;
+    }
+
+    public void setSubmissionID(String submissionID) {
+        this.submissionID = submissionID;
+    }
+
+    public String getResourceJobManager() {
+        return resourceJobManager;
+    }
+
+    public void setResourceJobManager(String resourceJobManager) {
+        this.resourceJobManager = resourceJobManager;
+    }
+
+    public String getSecurityProtocol() {
+        return securityProtocol;
+    }
+
+    public void setSecurityProtocol(String securityProtocol) {
+        this.securityProtocol = securityProtocol;
+    }
+
+    public String getGlobusEP() {
+        return globusEP;
+    }
+
+    public void setGlobusEP(String globusEP) {
+        this.globusEP = globusEP;
+    }
+
+    public ComputeHostResource getComputeHostResource() {
+        return computeHostResource;
+    }
+
+    public void setComputeHostResource(ComputeHostResource computeHostResource) {
+        this.computeHostResource = computeHostResource;
+    }
+}