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

git commit: app catlog cpi impl - AIRAVATA-1228

Repository: airavata
Updated Branches:
  refs/heads/master 6f0b74c51 -> c1718d6a7


app catlog cpi impl - AIRAVATA-1228


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

Branch: refs/heads/master
Commit: c1718d6a73450c4b32940ffe8ad60fd10e7afbe1
Parents: 6f0b74c
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Sun Jun 29 23:34:19 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Sun Jun 29 23:34:19 2014 -0400

----------------------------------------------------------------------
 .../catalog/data/impl/ComputeResourceImpl.java  | 119 +++++++-
 .../data/model/DataMovementProtocol.java        |  12 +-
 .../data/model/DataMovementProtocolPK.java      |  14 +-
 .../catalog/data/model/GlobusGKEndpoint.java    |  10 +-
 .../catalog/data/model/GlobusJobSubmission.java |  10 -
 .../catalog/data/model/GridFTPDMEndPointPK.java |  64 ++++
 .../catalog/data/model/GridFTPDMEndpoint.java   |  65 ++++
 .../data/resources/AbstractResource.java        |   6 +
 .../resources/DataMovementProtocolResource.java |  16 +-
 .../resources/GlobusGKEndpointResource.java     |  16 +-
 .../resources/GlobusJobSubmissionResource.java  |  11 -
 .../resources/GridFTPDMEndpointResource.java    | 295 +++++++++++++++++++
 .../catalog/data/util/AppCatalogJPAUtils.java   |   5 +-
 .../data/util/AppCatalogResourceType.java       |   1 +
 .../data/util/AppCatalogThriftConversion.java   |  40 +++
 .../src/main/resources/META-INF/persistence.xml |   1 +
 .../src/main/resources/appcatalog-derby.sql     |  13 +-
 .../src/main/resources/appcatalog-mysql.sql     |  13 +-
 18 files changed, 640 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
index 9ac2bc5..8f421b7 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
@@ -47,6 +47,7 @@ public class ComputeResourceImpl implements ComputeResource {
             computeHostResource.setPreferredJobSubmissionProtocol(description.getPreferredJobSubmissionProtocol());
             computeHostResource.setDescription(description.getResourceDescription());
             computeHostResource.save();
+            description.setResourceId(computeHostResource.getResoureId());
 
             Set<String> hostAliases = description.getHostAliases();
             if (hostAliases != null && !hostAliases.isEmpty()) {
@@ -90,7 +91,7 @@ public class ComputeResourceImpl implements ComputeResource {
                     resource.setResourceID(computeHostResource.getResoureId());
                     resource.setComputeHostResource(computeHostResource);
                     resource.setDataMoveID(key);
-                    resource.setJobType(dataMovementProtocol.toString());
+                    resource.setDataMoveType(dataMovementProtocol.toString());
                     resource.save();
                 }
             }
@@ -114,6 +115,7 @@ public class ComputeResourceImpl implements ComputeResource {
             resource.setResourceJobManager(sshJobSubmission.getResourceJobManager().toString());
             resource.setComputeHostResource(AppCatalogThriftConversion.getComputeHostResource(computeResource));
             resource.save();
+            sshJobSubmission.setJobSubmissionDataID(resource.getSubmissionID());
             return resource.getSubmissionID();
         }catch (Exception e) {
             logger.error("Error while saving SSH Job Submission...", e);
@@ -152,6 +154,7 @@ public class ComputeResourceImpl implements ComputeResource {
             resource.setInstalledPath(gsisshJobSubmission.getInstalledPath());
             resource.setMonitorMode(gsisshJobSubmission.getMonitorMode());
             resource.save();
+            gsisshJobSubmission.setJobSubmissionDataID(resource.getSubmissionID());
 
             Set<String> exports = gsisshJobSubmission.getExports();
             if (exports != null && !exports.isEmpty()){
@@ -210,32 +213,134 @@ public class ComputeResourceImpl implements ComputeResource {
 
     @Override
     public String addGlobusJobSubmission(String computeResourceId, GlobusJobSubmission globusJobSubmission) throws AppCatalogException {
-        return null;
+        try {
+            GlobusJobSubmissionResource resource = new GlobusJobSubmissionResource();
+            resource.setResourceID(computeResourceId);
+            ComputeResourceDescription computeResource = getComputeResource(computeResourceId);
+            String hostName = computeResource.getHostName();
+            hostName = "GLOBUS" + hostName;
+            resource.setSubmissionID(AppCatalogUtils.getID(hostName));
+            resource.setSecurityProtocol(globusJobSubmission.getSecurityProtocol().toString());
+            resource.setResourceJobManager(globusJobSubmission.getResourceJobManager().toString());
+            resource.setComputeHostResource(AppCatalogThriftConversion.getComputeHostResource(computeResource));
+            resource.save();
+            globusJobSubmission.setJobSubmissionDataID(resource.getSubmissionID());
+            List<String> globusGateKeeperEndPoint = globusJobSubmission.getGlobusGateKeeperEndPoint();
+            if (globusGateKeeperEndPoint != null && !globusGateKeeperEndPoint.isEmpty()) {
+                for (String endpoint : globusGateKeeperEndPoint) {
+                    GlobusGKEndpointResource endpointResource = new GlobusGKEndpointResource();
+                    endpointResource.setSubmissionID(resource.getSubmissionID());
+                    endpointResource.setEndpoint(endpoint);
+                    endpointResource.setGlobusJobSubmissionResource(resource);
+                    endpointResource.save();
+                }
+            }
+            return resource.getSubmissionID();
+        } catch (Exception e) {
+            logger.error("Error while saving Globus Job Submission...", e);
+            throw new AppCatalogException(e);
+        }
+
     }
 
     @Override
     public void addGlobusJobSubmissionProtocol(String computeResourceId, String jobSubmissionId) throws AppCatalogException {
-
+        try {
+            JobSubmissionProtocolResource resource = new JobSubmissionProtocolResource();
+            resource.setResourceID(computeResourceId);
+            resource.setSubmissionID(jobSubmissionId);
+            ComputeResourceDescription computeResource = getComputeResource(computeResourceId);
+            resource.setComputeHostResource(AppCatalogThriftConversion.getComputeHostResource(computeResource));
+            resource.setJobType(JobSubmissionProtocol.GRAM.toString());
+            resource.save();
+        }catch (Exception e){
+            logger.error("Error while saving Globus Job Submission Protocol...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public String addScpDataMovement(String computeResourceId, SCPDataMovement scpDataMovement) throws AppCatalogException {
-        return null;
+        try {
+            SCPDataMovementResource resource = new SCPDataMovementResource();
+            resource.setResourceID(computeResourceId);
+            ComputeResourceDescription computeResource = getComputeResource(computeResourceId);
+            String hostName = computeResource.getHostName();
+            hostName = "SCP" + hostName;
+            resource.setDataMoveID(AppCatalogUtils.getID(hostName));
+            resource.setSecurityProtocol(scpDataMovement.getSecurityProtocol().toString());
+            resource.setSshPort(scpDataMovement.getSshPort());
+            resource.setComputeHostResource(AppCatalogThriftConversion.getComputeHostResource(computeResource));
+            resource.save();
+            scpDataMovement.setDataMovementDataID(resource.getDataMoveID());
+            return resource.getDataMoveID();
+        }catch (Exception e){
+            logger.error("Error while saving SCP Data Movement...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public void addScpDataMovementProtocol(String computeResourceId, String dataMoveId) throws AppCatalogException {
-
+        try {
+            DataMovementProtocolResource resource = new DataMovementProtocolResource();
+            resource.setResourceID(computeResourceId);
+            resource.setDataMoveID(dataMoveId);
+            ComputeResourceDescription computeResource = getComputeResource(computeResourceId);
+            resource.setComputeHostResource(AppCatalogThriftConversion.getComputeHostResource(computeResource));
+            resource.setDataMoveType(DataMovementProtocol.SCP.toString());
+            resource.save();
+        }catch (Exception e){
+            logger.error("Error while saving SCP data movement Protocol...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public String addGridFTPDataMovement(String computeResourceId, GridFTPDataMovement gridFTPDataMovement) throws AppCatalogException {
-        return null;
+        try {
+            GridFTPDataMovementResource resource = new GridFTPDataMovementResource();
+            resource.setResourceID(computeResourceId);
+            ComputeResourceDescription computeResource = getComputeResource(computeResourceId);
+            String hostName = computeResource.getHostName();
+            hostName = "SCP" + hostName;
+            resource.setDataMoveID(AppCatalogUtils.getID(hostName));
+            resource.setSecurityProtocol(gridFTPDataMovement.getSecurityProtocol().toString());
+            resource.setComputeHostResource(AppCatalogThriftConversion.getComputeHostResource(computeResource));
+            resource.save();
+            gridFTPDataMovement.setDataMovementDataID(resource.getDataMoveID());
+
+            List<String> gridFTPEndPoint = gridFTPDataMovement.getGridFTPEndPoint();
+            if (gridFTPEndPoint != null && !gridFTPEndPoint.isEmpty()) {
+                for (String endpoint : gridFTPEndPoint) {
+                    GridFTPDMEndpointResource endpointResource = new GridFTPDMEndpointResource();
+                    endpointResource.setDataMoveId(resource.getDataMoveID());
+                    endpointResource.setEndpoint(endpoint);
+                    endpointResource.setGridFTPDataMovementResource(resource);
+                    endpointResource.save();
+                }
+            }
+            return resource.getDataMoveID();
+        }catch (Exception e){
+            logger.error("Error while saving GridFTP Data Movement...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override
     public void addGridFTPDataMovementProtocol(String computeResourceId, String dataMoveId) throws AppCatalogException {
-
+        try {
+            DataMovementProtocolResource resource = new DataMovementProtocolResource();
+            resource.setResourceID(computeResourceId);
+            resource.setDataMoveID(dataMoveId);
+            ComputeResourceDescription computeResource = getComputeResource(computeResourceId);
+            resource.setComputeHostResource(AppCatalogThriftConversion.getComputeHostResource(computeResource));
+            resource.setDataMoveType(DataMovementProtocol.GridFTP.toString());
+            resource.save();
+        }catch (Exception e){
+            logger.error("Error while saving GridFTP data movement Protocol...", e);
+            throw new AppCatalogException(e);
+        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocol.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocol.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocol.java
index 5a61dc6..4203e89 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocol.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocol.java
@@ -35,8 +35,8 @@ public class DataMovementProtocol implements Serializable {
     @Column(name = "DATA_MOVE_ID")
     private String dataMoveID;
     @Id
-    @Column(name = "JOB_TYPE")
-    private String jobType;
+    @Column(name = "DATA_MOVE_TYPE")
+    private String dataMoveType;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "RESOURCE_ID")
@@ -58,12 +58,12 @@ public class DataMovementProtocol implements Serializable {
         this.dataMoveID = dataMoveID;
     }
 
-    public String getJobType() {
-        return jobType;
+    public String getDataMoveType() {
+        return dataMoveType;
     }
 
-    public void setJobType(String jobType) {
-        this.jobType = jobType;
+    public void setDataMoveType(String dataMoveType) {
+        this.dataMoveType = dataMoveType;
     }
 
     public ComputeResource getComputeResource() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocolPK.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocolPK.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocolPK.java
index 3d590e5..9fed4b3 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocolPK.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementProtocolPK.java
@@ -26,12 +26,12 @@ import java.io.Serializable;
 public class DataMovementProtocolPK implements Serializable {
     private String resourceID;
     private String dataMoveID;
-    private String jobType;
+    private String dataMoveType;
 
-    public DataMovementProtocolPK(String resourceID, String dataMoveID, String jobType) {
+    public DataMovementProtocolPK(String resourceID, String dataMoveID, String dataMoveType) {
         this.resourceID = resourceID;
         this.dataMoveID = dataMoveID;
-        this.jobType = jobType;
+        this.dataMoveType = dataMoveType;
     }
 
     public DataMovementProtocolPK() {
@@ -64,11 +64,11 @@ public class DataMovementProtocolPK implements Serializable {
         this.dataMoveID = dataMoveID;
     }
 
-    public String getJobType() {
-        return jobType;
+    public String getDataMoveType() {
+        return dataMoveType;
     }
 
-    public void setJobType(String jobType) {
-        this.jobType = jobType;
+    public void setDataMoveType(String dataMoveType) {
+        this.dataMoveType = dataMoveType;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusGKEndpoint.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusGKEndpoint.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusGKEndpoint.java
index e9bbc41..62b8b12 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusGKEndpoint.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusGKEndpoint.java
@@ -37,7 +37,7 @@ public class GlobusGKEndpoint implements Serializable {
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "SUBMISSION_ID")
-    private GSISSHSubmission gsisshJobSubmission;
+    private GlobusJobSubmission globusSubmission;
 
     public String getSubmissionID() {
         return submissionID;
@@ -55,11 +55,11 @@ public class GlobusGKEndpoint implements Serializable {
         this.endpoint = endpoint;
     }
 
-    public GSISSHSubmission getGsisshJobSubmission() {
-        return gsisshJobSubmission;
+    public GlobusJobSubmission getGlobusSubmission() {
+        return globusSubmission;
     }
 
-    public void setGsisshJobSubmission(GSISSHSubmission gsisshJobSubmission) {
-        this.gsisshJobSubmission = gsisshJobSubmission;
+    public void setGlobusSubmission(GlobusJobSubmission globusSubmission) {
+        this.globusSubmission = globusSubmission;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusJobSubmission.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusJobSubmission.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusJobSubmission.java
index 4a29426..5775fd8 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusJobSubmission.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GlobusJobSubmission.java
@@ -36,8 +36,6 @@ public class GlobusJobSubmission implements Serializable {
     private String resourceJobManager;
     @Column(name = "SECURITY_PROTOCAL")
     private String securityProtocol;
-    @Column(name = "GLOBUS_GATEKEEPER_EP")
-    private String globusEP;
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "RESOURCE_ID")
@@ -75,14 +73,6 @@ public class GlobusJobSubmission implements Serializable {
         this.securityProtocol = securityProtocol;
     }
 
-    public String getGlobusEP() {
-        return globusEP;
-    }
-
-    public void setGlobusEP(String globusEP) {
-        this.globusEP = globusEP;
-    }
-
     public ComputeResource getComputeResource() {
         return computeResource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridFTPDMEndPointPK.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridFTPDMEndPointPK.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridFTPDMEndPointPK.java
new file mode 100644
index 0000000..611a9c7
--- /dev/null
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridFTPDMEndPointPK.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.aiaravata.application.catalog.data.model;
+
+import java.io.Serializable;
+
+public class GridFTPDMEndPointPK implements Serializable {
+    private String dataMoveId;
+    private String endpoint;
+
+    public GridFTPDMEndPointPK(String dataMoveId, String endpoint) {
+        this.dataMoveId = dataMoveId;
+        this.endpoint = endpoint;
+    }
+
+    public GridFTPDMEndPointPK() {
+        ;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return 1;
+    }
+
+    public String getDataMoveId() {
+        return dataMoveId;
+    }
+
+    public void setDataMoveId(String dataMoveId) {
+        this.dataMoveId = dataMoveId;
+    }
+
+    public String getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(String endpoint) {
+        this.endpoint = endpoint;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridFTPDMEndpoint.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridFTPDMEndpoint.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridFTPDMEndpoint.java
new file mode 100644
index 0000000..0d4768d
--- /dev/null
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridFTPDMEndpoint.java
@@ -0,0 +1,65 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.aiaravata.application.catalog.data.model;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "GRIDFTP_DM_ENDPOINT")
+@IdClass(GridFTPDMEndPointPK.class)
+public class GridFTPDMEndpoint implements Serializable {
+    @Id
+    @Column(name = "DATA_MOVE_ID")
+    private String dataMoveId;
+    @Id
+    @Column(name = "ENDPOINT")
+    private String endpoint;
+
+    @ManyToOne(cascade= CascadeType.MERGE)
+    @JoinColumn(name = "SUBMISSION_ID")
+    private GridFTPDataMovement gridFTPDataMovement;
+
+    public String getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    public String getDataMoveId() {
+        return dataMoveId;
+    }
+
+    public void setDataMoveId(String dataMoveId) {
+        this.dataMoveId = dataMoveId;
+    }
+
+    public GridFTPDataMovement getGridFTPDataMovement() {
+        return gridFTPDataMovement;
+    }
+
+    public void setGridFTPDataMovement(GridFTPDataMovement gridFTPDataMovement) {
+        this.gridFTPDataMovement = gridFTPDataMovement;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/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 f992f44..b85cc9a 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
@@ -35,6 +35,7 @@ public abstract class AbstractResource implements Resource {
     public static final String SSH_SUBMISSION = "SSHSubmission";
     public static final String SCP_DATAMOVEMENT = "SCPDataMovement";
     public static final String GRID_FTP_DATAMOVEMENT = "GridFTPDataMovement";
+    public static final String GRIDFTP_DM_ENDPOINT = "GridFTPDMEndpoint";
     public static final String JOB_SUBMISSION_PROTOCOL = "JobSubmissionProtocol";
     public static final String DATA_MOVEMENT_PROTOCOL = "DataMovementProtocol";
     public static final String APPLICATION_MODULE = "ApplicationModule";
@@ -133,6 +134,11 @@ public abstract class AbstractResource implements Resource {
         public static final String GRID_FTP_EP = "gridFTPEP";
     }
 
+    public final class GridFTPDMEPConstants{
+        public static final String DATA_MOVE_ID = "dataMoveId";
+        public static final String ENDPOINT = "endpoint";
+    }
+
     public final class JobSubmissionProtocolConstants {
         public static final String RESOURCE_ID = "resourceID";
         public static final String SUBMISSION_ID = "submissionID";

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementProtocolResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementProtocolResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementProtocolResource.java
index c7cd333..906be2f 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementProtocolResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementProtocolResource.java
@@ -24,7 +24,7 @@ public class DataMovementProtocolResource extends AbstractResource {
 
     private String resourceID;
     private String dataMoveID;
-    private String jobType;
+    private String dataMoveType;
     private ComputeHostResource computeHostResource;
 
     public void remove(Object identifier) throws AppCatalogException {
@@ -230,13 +230,13 @@ public class DataMovementProtocolResource extends AbstractResource {
         EntityManager em = null;
         try {
             em = AppCatalogJPAUtils.getEntityManager();
-            DataMovementProtocol existingDataMovementProtocol = em.find(DataMovementProtocol.class, new DataMovementProtocolPK(resourceID, dataMoveID, jobType));
+            DataMovementProtocol existingDataMovementProtocol = em.find(DataMovementProtocol.class, new DataMovementProtocolPK(resourceID, dataMoveID, dataMoveType));
             em.close();
 
             em = AppCatalogJPAUtils.getEntityManager();
             em.getTransaction().begin();
             if (existingDataMovementProtocol != null) {
-                existingDataMovementProtocol.setJobType(jobType);
+                existingDataMovementProtocol.setDataMoveID(dataMoveType);
                 existingDataMovementProtocol.setDataMoveID(dataMoveID);
                 ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
                 existingDataMovementProtocol.setComputeResource(computeResource);
@@ -245,7 +245,7 @@ public class DataMovementProtocolResource extends AbstractResource {
                 em.merge(existingDataMovementProtocol);
             } else {
                 DataMovementProtocol dataMovementProtocol = new DataMovementProtocol();
-                dataMovementProtocol.setJobType(jobType);
+                dataMovementProtocol.setDataMoveType(dataMoveType);
                 dataMovementProtocol.setDataMoveID(dataMoveID);
                 dataMovementProtocol.setResourceID(resourceID);
                 ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
@@ -315,12 +315,12 @@ public class DataMovementProtocolResource extends AbstractResource {
         this.dataMoveID = dataMoveID;
     }
 
-    public String getJobType() {
-        return jobType;
+    public String getDataMoveType() {
+        return dataMoveType;
     }
 
-    public void setJobType(String jobType) {
-        this.jobType = jobType;
+    public void setDataMoveType(String dataMoveType) {
+        this.dataMoveType = dataMoveType;
     }
 
     public ComputeHostResource getComputeHostResource() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusGKEndpointResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusGKEndpointResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusGKEndpointResource.java
index 6e84ae0..fe01a27 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusGKEndpointResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GlobusGKEndpointResource.java
@@ -22,7 +22,7 @@ public class GlobusGKEndpointResource extends AbstractResource {
     private String submissionID;
     private String endpoint;
 
-    private GSISSHSubmissionResource gsisshSubmissionResource;
+    private GlobusJobSubmissionResource globusJobSubmissionResource;
 
 
     public void remove(Object identifier) throws AppCatalogException {
@@ -209,17 +209,17 @@ public class GlobusGKEndpointResource extends AbstractResource {
 
             em = AppCatalogJPAUtils.getEntityManager();
             em.getTransaction().begin();
-            GSISSHSubmission gsisshSubmission = em.find(GSISSHSubmission.class, submissionID);
+            GlobusJobSubmission globusJobSubmission = em.find(GlobusJobSubmission.class, submissionID);
             if (existingGlobusEP != null) {
                 existingGlobusEP.setSubmissionID(submissionID);
                 existingGlobusEP.setEndpoint(endpoint);
-                existingGlobusEP.setGsisshJobSubmission(gsisshSubmission);
+                existingGlobusEP.setGlobusSubmission(globusJobSubmission);
                 em.merge(existingGlobusEP);
             } else {
                 GlobusGKEndpoint globusGKEndpoint = new GlobusGKEndpoint();
                 globusGKEndpoint.setSubmissionID(submissionID);
                 globusGKEndpoint.setEndpoint(endpoint);
-                globusGKEndpoint.setGsisshJobSubmission(gsisshSubmission);
+                globusGKEndpoint.setGlobusSubmission(globusJobSubmission);
                 em.persist(globusGKEndpoint);
             }
             em.getTransaction().commit();
@@ -282,11 +282,11 @@ public class GlobusGKEndpointResource extends AbstractResource {
         this.endpoint = endpoint;
     }
 
-    public GSISSHSubmissionResource getGsisshSubmissionResource() {
-        return gsisshSubmissionResource;
+    public GlobusJobSubmissionResource getGlobusJobSubmissionResource() {
+        return globusJobSubmissionResource;
     }
 
-    public void setGsisshSubmissionResource(GSISSHSubmissionResource gsisshSubmissionResource) {
-        this.gsisshSubmissionResource = gsisshSubmissionResource;
+    public void setGlobusJobSubmissionResource(GlobusJobSubmissionResource globusJobSubmissionResource) {
+        this.globusJobSubmissionResource = globusJobSubmissionResource;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/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
index 383aaca..8954854 100644
--- 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
@@ -23,7 +23,6 @@ public class GlobusJobSubmissionResource extends AbstractResource {
     private String submissionID;
     private String resourceJobManager;
     private String securityProtocol;
-    private String globusEP;
 
     private ComputeHostResource computeHostResource;
 
@@ -270,7 +269,6 @@ public class GlobusJobSubmissionResource extends AbstractResource {
             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);
@@ -282,7 +280,6 @@ public class GlobusJobSubmissionResource extends AbstractResource {
                 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);
@@ -355,14 +352,6 @@ public class GlobusJobSubmissionResource extends AbstractResource {
         this.securityProtocol = securityProtocol;
     }
 
-    public String getGlobusEP() {
-        return globusEP;
-    }
-
-    public void setGlobusEP(String globusEP) {
-        this.globusEP = globusEP;
-    }
-
     public ComputeHostResource getComputeHostResource() {
         return computeHostResource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridFTPDMEndpointResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridFTPDMEndpointResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridFTPDMEndpointResource.java
new file mode 100644
index 0000000..724e449
--- /dev/null
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridFTPDMEndpointResource.java
@@ -0,0 +1,295 @@
+package org.apache.aiaravata.application.catalog.data.resources;
+
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.model.GridFTPDMEndPointPK;
+import org.apache.aiaravata.application.catalog.data.model.GridFTPDMEndpoint;
+import org.apache.aiaravata.application.catalog.data.model.GridFTPDataMovement;
+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 GridFTPDMEndpointResource extends AbstractResource {
+    private final static Logger logger = LoggerFactory.getLogger(GridFTPDMEndpointResource.class);
+
+    private String dataMoveId;
+    private String endpoint;
+
+    private GridFTPDataMovementResource gridFTPDataMovementResource;
+
+
+    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(GRIDFTP_DM_ENDPOINT);
+            generator.setParameter(GridFTPDMEPConstants.ENDPOINT, ids.get(GridFTPDMEPConstants.ENDPOINT));
+            generator.setParameter(GridFTPDMEPConstants.DATA_MOVE_ID, ids.get(GridFTPDMEPConstants.DATA_MOVE_ID));
+            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(GRIDFTP_DM_ENDPOINT);
+            generator.setParameter(GridFTPDMEPConstants.DATA_MOVE_ID, ids.get(GridFTPDMEPConstants.DATA_MOVE_ID));
+            generator.setParameter(GridFTPDMEPConstants.ENDPOINT, ids.get(GridFTPDMEPConstants.ENDPOINT));
+            Query q = generator.selectQuery(em);
+            GridFTPDMEndpoint result = (GridFTPDMEndpoint) q.getSingleResult();
+            GridFTPDMEndpointResource gkEndpointResource =
+                    (GridFTPDMEndpointResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRID_FTP_DM_ENDPOINT, result);
+            em.getTransaction().commit();
+            em.close();
+            return gkEndpointResource;
+        } 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> resources = new ArrayList<Resource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GRIDFTP_DM_ENDPOINT);
+            List results;
+            if (fieldName.equals(GridFTPDMEPConstants.ENDPOINT)) {
+                generator.setParameter(GridFTPDMEPConstants.ENDPOINT, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GridFTPDMEndpoint gridFTPDMEndpoint = (GridFTPDMEndpoint) result;
+                        GridFTPDMEndpointResource gkEndpointResource =
+                                (GridFTPDMEndpointResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRID_FTP_DM_ENDPOINT, gridFTPDMEndpoint);
+                        resources.add(gkEndpointResource);
+                    }
+                }
+            } else if (fieldName.equals(GridFTPDMEPConstants.DATA_MOVE_ID)) {
+                generator.setParameter(GridFTPDMEPConstants.DATA_MOVE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GridFTPDMEndpoint gridFTPDMEndpoint = (GridFTPDMEndpoint) result;
+                        GridFTPDMEndpointResource gkEndpointResource =
+                                (GridFTPDMEndpointResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRID_FTP_DM_ENDPOINT, gridFTPDMEndpoint);
+                        resources.add(gkEndpointResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for GridFTPDMEndpoint Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for GridFTPDMEndpoint 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 resources;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
+        List<String> list = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GRIDFTP_DM_ENDPOINT);
+            List results;
+            if (fieldName.equals(GridFTPDMEPConstants.DATA_MOVE_ID)) {
+                generator.setParameter(GridFTPDMEPConstants.DATA_MOVE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GridFTPDMEndpoint gridFTPDMEndpoint = (GridFTPDMEndpoint) result;
+                        list.add(gridFTPDMEndpoint.getDataMoveId());
+                    }
+                }
+            } else if (fieldName.equals(GridFTPDMEPConstants.ENDPOINT)) {
+                generator.setParameter(GridFTPDMEPConstants.ENDPOINT, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GridFTPDMEndpoint gridFTPDMEndpoint = (GridFTPDMEndpoint) result;
+                        list.add(gridFTPDMEndpoint.getDataMoveId());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for GridFTPDMEndpoint resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for GridFTPDMEndpoint 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 list;
+    }
+
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            GridFTPDMEndpoint ftpdmEndpoint = em.find(GridFTPDMEndpoint.class, new GridFTPDMEndPointPK(dataMoveId, endpoint));
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            GridFTPDataMovement dataMovement = em.find(GridFTPDataMovement.class, dataMoveId);
+            if (ftpdmEndpoint != null) {
+                ftpdmEndpoint.setDataMoveId(dataMoveId);
+                ftpdmEndpoint.setEndpoint(endpoint);
+                ftpdmEndpoint.setGridFTPDataMovement(dataMovement);
+                em.merge(ftpdmEndpoint);
+            } else {
+                GridFTPDMEndpoint gridFTPDMEndpoint = new GridFTPDMEndpoint();
+                gridFTPDMEndpoint.setDataMoveId(dataMoveId);
+                gridFTPDMEndpoint.setEndpoint(endpoint);
+                gridFTPDMEndpoint.setGridFTPDataMovement(dataMovement);
+                em.persist(gridFTPDMEndpoint);
+            }
+            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();
+            GridFTPDMEndpoint gridFTPDMEndpoint = em.find(GridFTPDMEndpoint.class, new GridFTPDMEndPointPK(ids.get(GridFTPDMEPConstants.DATA_MOVE_ID),
+                    ids.get(GridFTPDMEPConstants.ENDPOINT)));
+
+            em.close();
+            return gridFTPDMEndpoint != 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 getDataMoveId() {
+        return dataMoveId;
+    }
+
+    public void setDataMoveId(String dataMoveId) {
+        this.dataMoveId = dataMoveId;
+    }
+
+    public GridFTPDataMovementResource getGridFTPDataMovementResource() {
+        return gridFTPDataMovementResource;
+    }
+
+    public void setGridFTPDataMovementResource(GridFTPDataMovementResource gridFTPDataMovementResource) {
+        this.gridFTPDataMovementResource = gridFTPDataMovementResource;
+    }
+
+    public String getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
index 92f5172..599c956 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
@@ -327,7 +327,6 @@ public class AppCatalogJPAUtils {
         resource.setSubmissionID(o.getSubmissionID());
         resource.setResourceJobManager(o.getResourceJobManager());
         resource.setSecurityProtocol(o.getSecurityProtocol());
-        resource.setGlobusEP(o.getGlobusEP());
         resource.setComputeHostResource((ComputeHostResource)createComputeResource(o.getComputeResource()));
         return resource;
     }
@@ -336,7 +335,7 @@ public class AppCatalogJPAUtils {
         GlobusGKEndpointResource resource = new GlobusGKEndpointResource();
         resource.setSubmissionID(o.getSubmissionID());
         resource.setEndpoint(o.getEndpoint());
-        resource.setGsisshSubmissionResource((GSISSHSubmissionResource)createGSSISSHSubmission(o.getGsisshJobSubmission()));
+        resource.setGlobusJobSubmissionResource((GlobusJobSubmissionResource)createGlobusJobSubmission(o.getGlobusSubmission()));
         return resource;
     }
 
@@ -383,7 +382,7 @@ public class AppCatalogJPAUtils {
         DataMovementProtocolResource resource = new DataMovementProtocolResource();
         resource.setResourceID(o.getResourceID());
         resource.setDataMoveID(o.getDataMoveID());
-        resource.setJobType(o.getJobType());
+        resource.setDataMoveType(o.getDataMoveType());
         resource.setComputeHostResource((ComputeHostResource)createComputeResource(o.getComputeResource()));
         return resource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
index 15720ab..7e48250 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
@@ -34,6 +34,7 @@ public enum AppCatalogResourceType {
     SSH_SUBMISSION,
     SCP_DATAMOVEMENT,
     GRID_FTP_DATAMOVEMENT,
+    GRID_FTP_DM_ENDPOINT,
     JOB_SUBMISSION_PROTOCOL,
     DATA_MOVEMENT_PROTOCOL,
     APPLICATION_MODULE,

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
index 32c6502..19b5100 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
@@ -22,7 +22,13 @@
 package org.apache.aiaravata.application.catalog.data.util;
 
 import org.apache.aiaravata.application.catalog.data.resources.ComputeHostResource;
+import org.apache.aiaravata.application.catalog.data.resources.GSISSHSubmissionResource;
+import org.apache.aiaravata.application.catalog.data.resources.GlobusJobSubmissionResource;
+import org.apache.aiaravata.application.catalog.data.resources.SSHSubmissionResource;
 import org.apache.airavata.model.computehost.ComputeResourceDescription;
+import org.apache.airavata.model.computehost.GSISSHJobSubmission;
+import org.apache.airavata.model.computehost.GlobusJobSubmission;
+import org.apache.airavata.model.computehost.SSHJobSubmission;
 
 public class AppCatalogThriftConversion {
     public static ComputeHostResource getComputeHostResource (ComputeResourceDescription description){
@@ -33,4 +39,38 @@ public class AppCatalogThriftConversion {
         resource.setPreferredJobSubmissionProtocol(description.getResourceId());
         return resource;
     }
+
+    public static GSISSHSubmissionResource getGSISSHSubmission (ComputeHostResource hostResource, GSISSHJobSubmission submission){
+        GSISSHSubmissionResource resource = new GSISSHSubmissionResource();
+        resource.setComputeHostResource(hostResource);
+        resource.setSubmissionID(submission.getJobSubmissionDataID());
+        resource.setMonitorMode(submission.getMonitorMode());
+        resource.setInstalledPath(submission.getInstalledPath());
+        resource.setResourceID(hostResource.getResoureId());
+        resource.setResourceJobManager(submission.getResourceJobManager().toString());
+        resource.setSshPort(submission.getSshPort());
+        return resource;
+    }
+
+    public static GlobusJobSubmissionResource getGlobusJobSubmission (ComputeHostResource hostResource, GlobusJobSubmission submission){
+        GlobusJobSubmissionResource resource = new GlobusJobSubmissionResource();
+        resource.setComputeHostResource(hostResource);
+        resource.setResourceID(hostResource.getResoureId());
+        resource.setSubmissionID(submission.getJobSubmissionDataID());
+        resource.setSecurityProtocol(submission.getSecurityProtocol().toString());
+        resource.setResourceJobManager(submission.getResourceJobManager().toString());
+        return resource;
+    }
+
+    public static SSHSubmissionResource getSSHJobSubmission (ComputeHostResource hostResource, SSHJobSubmission submission){
+        SSHSubmissionResource resource = new SSHSubmissionResource();
+        resource.setComputeHostResource(hostResource);
+        resource.setResourceID(hostResource.getResoureId());
+        resource.setSubmissionID(submission.getJobSubmissionDataID());
+        resource.setResourceJobManager(submission.getResourceJobManager().toString());
+        return resource;
+    }
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml b/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
index ff03fca..167e08c 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
@@ -36,6 +36,7 @@
         <class>org.apache.aiaravata.application.catalog.data.model.JobSubmissionProtocol</class>
         <class>org.apache.aiaravata.application.catalog.data.model.SCPDataMovement</class>
         <class>org.apache.aiaravata.application.catalog.data.model.GridFTPDataMovement</class>
+        <class>org.apache.aiaravata.application.catalog.data.model.GridFTPDMEndpoint</class>
         <class>org.apache.aiaravata.application.catalog.data.model.SSHSubmission</class>
         <class>org.apache.aiaravata.application.catalog.data.model.ApplicationModule</class>
         <class>org.apache.aiaravata.application.catalog.data.model.ApplicationDeployment</class>

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
index 574f2ab..a151bbb 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
@@ -123,11 +123,18 @@ CREATE TABLE GRID_FTP_DATAMOVEMENT
          DATA_MOVE_ID VARCHAR(255),
          RESOURCE_ID VARCHAR(255),
          SECURITY_PROTOCOL VARCHAR(255),
-         GRID_FTP_EP VARCHAR(255),
          PRIMARY KEY(DATA_MOVE_ID),
          FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
 
+CREATE TABLE GRIDFTP_DM_ENDPOINT
+(
+         DATA_MOVE_ID VARCHAR(255),
+         ENDPOINT VARCHAR(255),
+         PRIMARY KEY(DATA_MOVE_ID, ENDPOINT),
+         FOREIGN KEY (DATA_MOVE_ID) REFERENCES GRID_FTP_DATAMOVEMENT(DATA_MOVE_ID) ON DELETE CASCADE
+);
+
 CREATE TABLE JOB_SUBMISSION_PROTOCOL
 (
          RESOURCE_ID VARCHAR(255),
@@ -141,8 +148,8 @@ CREATE TABLE DATA_MOVEMENT_PROTOCOL
 (
          RESOURCE_ID VARCHAR(255),
          DATA_MOVE_ID VARCHAR(255),
-         JOB_TYPE VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,DATA_MOVE_ID,JOB_TYPE),
+         DATA_MOVE_TYPE VARCHAR(255),
+         PRIMARY KEY(RESOURCE_ID,DATA_MOVE_ID,DATA_MOVE_TYPE),
          FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/c1718d6a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
index 7cc2353..19e5b02 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
@@ -123,11 +123,18 @@ CREATE TABLE GRID_FTP_DATAMOVEMENT
          DATA_MOVE_ID VARCHAR(255),
          RESOURCE_ID VARCHAR(255),
          SECURITY_PROTOCOL VARCHAR(255),
-         GRID_FTP_EP VARCHAR(255),
          PRIMARY KEY(DATA_MOVE_ID),
          FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
 
+CREATE TABLE GRIDFTP_DM_ENDPOINT
+(
+         DATA_MOVE_ID VARCHAR(255),
+         ENDPOINT VARCHAR(255),
+         PRIMARY KEY(DATA_MOVE_ID, ENDPOINT),
+         FOREIGN KEY (DATA_MOVE_ID) REFERENCES GRID_FTP_DATAMOVEMENT(DATA_MOVE_ID) ON DELETE CASCADE
+);
+
 CREATE TABLE JOB_SUBMISSION_PROTOCOL
 (
          RESOURCE_ID VARCHAR(255),
@@ -141,8 +148,8 @@ CREATE TABLE DATA_MOVEMENT_PROTOCOL
 (
          RESOURCE_ID VARCHAR(255),
          DATA_MOVE_ID VARCHAR(255),
-         JOB_TYPE VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,DATA_MOVE_ID,JOB_TYPE),
+         DATA_MOVE_TYPE VARCHAR(255),
+         PRIMARY KEY(RESOURCE_ID,DATA_MOVE_ID,DATA_MOVE_TYPE),
          FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );