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/08/14 22:24:35 UTC

[1/3] adding created time and update time to app catalog

Repository: airavata
Updated Branches:
  refs/heads/master b19a8e06d -> 404913acd


http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
index e2005ee..c94a8b1 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
@@ -19,6 +19,7 @@
 
 package org.apache.aiaravata.application.catalog.data.resources;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -43,6 +44,24 @@ public class SshJobSubmissionResource extends AbstractResource {
 	private String alternativeSshHostname;
 	private String securityProtocol;
 	private int sshPort;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 	
 	@Override
 	public void remove(Object identifier) throws AppCatalogException {
@@ -198,8 +217,10 @@ public class SshJobSubmissionResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingSshJobSubmission == null) {
 				sshJobSubmission = new SshJobSubmission();
+                sshJobSubmission.setCreationTime(createdTime);
 			} else {
 				sshJobSubmission = existingSshJobSubmission;
+                sshJobSubmission.setUpdateTime(updatedTime);
 			}
 			sshJobSubmission.setResourceJobManagerId(getResourceJobManagerId());
 			ResourceJobManager resourceJobManager = em.find(ResourceJobManager.class, getResourceJobManagerId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowResource.java
index c9a14fc..f0d59d1 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/WorkflowResource.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -41,6 +42,24 @@ public class WorkflowResource extends AbstractResource {
     private String createdUser;
     private String graph;
     private String wfTemplateId;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 
     @Override
     public void remove(Object identifier) throws AppCatalogException {
@@ -252,8 +271,10 @@ public class WorkflowResource extends AbstractResource {
             em.getTransaction().begin();
             if (existingWorkflow == null) {
                 workflow = new Workflow();
+                workflow.setCreatedUser(createdUser);
             } else {
                 workflow = existingWorkflow;
+                workflow.setUpdateTime(updatedTime);
             }
             workflow.setWfName(getWfName());
             workflow.setCreatedUser(getCreatedUser());

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/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 367cfc3..8f23822 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
@@ -177,20 +177,20 @@ public class AppCatalogJPAUtils {
 					logger.error("Object should be a Gridftp Endpoint.", new IllegalArgumentException());
 					throw new IllegalArgumentException("Object should be a Gridftp Endpoint.");
 				}
-            case JOB_SUBMISSION_PROTOCOL:
-                if (o instanceof JobSubmissionProtocol){
-                    return createJobSubmissionProtocol((JobSubmissionProtocol) o);
-                }else {
-                    logger.error("Object should be a JobSubmissionProtocol.", new IllegalArgumentException());
-                    throw new IllegalArgumentException("Object should be a JobSubmissionProtocol.");
-                }
-            case DATA_MOVEMENT_PROTOCOL:
-                if (o instanceof DataMovementProtocol){
-                    return createDataMovementProtocol((DataMovementProtocol) o);
-                }else {
-                    logger.error("Object should be a DataMovementProtocol.", new IllegalArgumentException());
-                    throw new IllegalArgumentException("Object should be a DataMovementProtocol.");
-                }
+//            case JOB_SUBMISSION_PROTOCOL:
+//                if (o instanceof JobSubmissionProtocol){
+//                    return createJobSubmissionProtocol((JobSubmissionProtocol) o);
+//                }else {
+//                    logger.error("Object should be a JobSubmissionProtocol.", new IllegalArgumentException());
+//                    throw new IllegalArgumentException("Object should be a JobSubmissionProtocol.");
+//                }
+//            case DATA_MOVEMENT_PROTOCOL:
+//                if (o instanceof DataMovementProtocol){
+//                    return createDataMovementProtocol((DataMovementProtocol) o);
+//                }else {
+//                    logger.error("Object should be a DataMovementProtocol.", new IllegalArgumentException());
+//                    throw new IllegalArgumentException("Object should be a DataMovementProtocol.");
+//                }
             case APPLICATION_MODULE:
                 if (o instanceof ApplicationModule){
                     return createApplicationModule((ApplicationModule) o);
@@ -358,6 +358,10 @@ public class AppCatalogJPAUtils {
             localSubmissionResource.setResourceJobManagerId(o.getResourceJobManagerId());
             localSubmissionResource.setResourceJobManagerResource((ResourceJobManagerResource)createResourceJobManager(o.getResourceJobManager()));
             localSubmissionResource.setJobSubmissionInterfaceId(o.getJobSubmissionInterfaceId());
+            localSubmissionResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                localSubmissionResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
 		return localSubmissionResource;
 	}
@@ -380,6 +384,10 @@ public class AppCatalogJPAUtils {
             resourceJobManagerResource.setPushMonitoringEndpoint(o.getPushMonitoringEndpoint());
             resourceJobManagerResource.setJobManagerBinPath(o.getJobManagerBinPath());
             resourceJobManagerResource.setResourceJobManagerType(o.getResourceJobManagerType());
+            resourceJobManagerResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                resourceJobManagerResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
 		return resourceJobManagerResource;
 	}
@@ -392,6 +400,10 @@ public class AppCatalogJPAUtils {
             dataMovementInterfaceResource.setDataMovementProtocol(o.getDataMovementProtocol());
             dataMovementInterfaceResource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
             dataMovementInterfaceResource.setPriorityOrder(o.getPriorityOrder());
+            dataMovementInterfaceResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                dataMovementInterfaceResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
 		return dataMovementInterfaceResource;
 	}
@@ -404,6 +416,10 @@ public class AppCatalogJPAUtils {
             jobSubmissionInterfaceResource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
             jobSubmissionInterfaceResource.setJobSubmissionProtocol(o.getJobSubmissionProtocol());
             jobSubmissionInterfaceResource.setPriorityOrder(o.getPriorityOrder());
+            jobSubmissionInterfaceResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                jobSubmissionInterfaceResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
 		return jobSubmissionInterfaceResource;
 	}
@@ -439,6 +455,10 @@ public class AppCatalogJPAUtils {
             computeResourceResource.setResourceDescription(o.getResourceDescription());
             computeResourceResource.setResourceId(o.getResourceId());
             computeResourceResource.setHostName(o.getHostName());
+            computeResourceResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                computeResourceResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
 		return computeResourceResource;
 	}
@@ -534,6 +554,10 @@ public class AppCatalogJPAUtils {
             sshJobSubmissionResource.setAlternativeSshHostname(o.getAlternativeSshHostname());
             sshJobSubmissionResource.setSecurityProtocol(o.getSecurityProtocol());
             sshJobSubmissionResource.setSshPort(o.getSshPort());
+            sshJobSubmissionResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                sshJobSubmissionResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
         return sshJobSubmissionResource;
     }
@@ -546,6 +570,10 @@ public class AppCatalogJPAUtils {
             scpDataMovementResource.setSecurityProtocol(o.getSecurityProtocol());
             scpDataMovementResource.setAlternativeScpHostname(o.getAlternativeScpHostname());
             scpDataMovementResource.setSshPort(o.getSshPort());
+            scpDataMovementResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                scpDataMovementResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
 		return scpDataMovementResource;
 	}
@@ -555,6 +583,10 @@ public class AppCatalogJPAUtils {
         if (o != null){
             gridftpDataMovementResource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
             gridftpDataMovementResource.setSecurityProtocol(o.getSecurityProtocol());
+            gridftpDataMovementResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                gridftpDataMovementResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
 		return gridftpDataMovementResource;
 	}
@@ -565,31 +597,35 @@ public class AppCatalogJPAUtils {
             gridftpEndpointResource.setEndpoint(o.getEndpoint());
             gridftpEndpointResource.setDataMovementInterfaceId(o.getDataMovementInterfaceId());
             gridftpEndpointResource.setGridftpDataMovementResource((GridftpDataMovementResource)createGridftpDataMovement(o.getGridftpDataMovement()));
+            gridftpEndpointResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                gridftpEndpointResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
 		return gridftpEndpointResource;
 	}
 
-    private static Resource createJobSubmissionProtocol(JobSubmissionProtocol o) {
-        JobSubmissionProtocolResource resource = new JobSubmissionProtocolResource();
-        if (o != null){
-            resource.setResourceID(o.getResourceID());
-            resource.setSubmissionID(o.getSubmissionID());
-            resource.setJobType(o.getJobType());
-            resource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
-        }
-        return resource;
-    }
-
-    private static Resource createDataMovementProtocol(DataMovementProtocol o) {
-        DataMovementProtocolResource resource = new DataMovementProtocolResource();
-        if (o != null) {
-            resource.setResourceID(o.getResourceID());
-            resource.setDataMoveID(o.getDataMoveID());
-            resource.setDataMoveType(o.getDataMoveType());
-            resource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
-        }
-        return resource;
-    }
+//    private static Resource createJobSubmissionProtocol(JobSubmissionProtocol o) {
+//        JobSubmissionProtocolResource resource = new JobSubmissionProtocolResource();
+//        if (o != null){
+//            resource.setResourceID(o.getResourceID());
+//            resource.setSubmissionID(o.getSubmissionID());
+//            resource.setJobType(o.getJobType());
+//            resource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
+//        }
+//        return resource;
+//    }
+//
+//    private static Resource createDataMovementProtocol(DataMovementProtocol o) {
+//        DataMovementProtocolResource resource = new DataMovementProtocolResource();
+//        if (o != null) {
+//            resource.setResourceID(o.getResourceID());
+//            resource.setDataMoveID(o.getDataMoveID());
+//            resource.setDataMoveType(o.getDataMoveType());
+//            resource.setComputeHostResource((ComputeResourceResource)createComputeResource(o.getComputeResource()));
+//        }
+//        return resource;
+//    }
 
     private static Resource createApplicationModule(ApplicationModule o) {
         AppModuleResource moduleResource = new AppModuleResource();
@@ -598,6 +634,10 @@ public class AppCatalogJPAUtils {
             moduleResource.setModuleDesc(o.getModuleDesc());
             moduleResource.setModuleName(o.getModuleName());
             moduleResource.setModuleVersion(o.getModuleVersion());
+            moduleResource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                moduleResource.setUpdatedTime(o.getUpdateTime());
+            }
         }
         return moduleResource;
     }
@@ -613,6 +653,10 @@ public class AppCatalogJPAUtils {
             resource.setParallelism(o.getParallelism());
             resource.setModuleResource((AppModuleResource) createApplicationModule(o.getApplicationModule()));
             resource.setHostResource((ComputeResourceResource) createComputeResource(o.getComputeResource()));
+            resource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                resource.setUpdatedTime(o.getUpdateTime());
+            }
         }
         return resource;
     }
@@ -656,6 +700,10 @@ public class AppCatalogJPAUtils {
             resource.setInterfaceId(o.getInterfaceID());
             resource.setAppName(o.getAppName());
             resource.setAppDescription(o.getAppDescription());
+            resource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                resource.setUpdatedTime(o.getUpdateTime());
+            }
         }
         return resource;
     }
@@ -703,6 +751,10 @@ public class AppCatalogJPAUtils {
             resource.setGatewayID(o.getGatewayID());
             resource.setGatewayName(o.getGatewayName());
             resource.setGatewayDesc(o.getGatewayDesc());
+            resource.setCreatedTime(o.getCreationTime());
+            if (o.getUpdateTime() != null){
+                resource.setUpdatedTime(o.getUpdateTime());
+            }
         }
         return resource;
     }
@@ -741,6 +793,10 @@ public class AppCatalogJPAUtils {
         if (o.getGraph() != null){
             workflowResource.setGraph(new String(o.getGraph()));
         }
+        workflowResource.setCreatedTime(o.getCreationTime());
+        if (o.getUpdateTime() != null){
+            workflowResource.setUpdatedTime(o.getUpdateTime());
+        }
         workflowResource.setWfTemplateId(o.getWfTemplateId());
         return workflowResource;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/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 24830c8..dc7766e 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
@@ -200,23 +200,23 @@ public class AppCatalogThriftConversion {
         return batchQueue;
     }
     
-    public static Map<String, JobSubmissionProtocol> getJobSubmissionProtocolList(List<Resource> resources){
-       Map<String, JobSubmissionProtocol> protocols = new HashMap<String, JobSubmissionProtocol>();
-        for (Resource resource : resources){
-            JobSubmissionProtocolResource submission = (JobSubmissionProtocolResource) resource;
-            protocols.put(submission.getSubmissionID(), JobSubmissionProtocol.valueOf(submission.getJobType()));
-        }
-        return protocols;
-    }
+//    public static Map<String, JobSubmissionProtocol> getJobSubmissionProtocolList(List<Resource> resources){
+//       Map<String, JobSubmissionProtocol> protocols = new HashMap<String, JobSubmissionProtocol>();
+//        for (Resource resource : resources){
+//            JobSubmissionProtocolResource submission = (JobSubmissionProtocolResource) resource;
+//            protocols.put(submission.getSubmissionID(), JobSubmissionProtocol.valueOf(submission.getJobType()));
+//        }
+//        return protocols;
+//    }
 
-    public static Map<String, DataMovementProtocol> getDataMoveProtocolList(List<Resource> resources){
-        Map<String, DataMovementProtocol> protocols = new HashMap<String, DataMovementProtocol>();
-        for (Resource resource : resources){
-            DataMovementProtocolResource protocolResource = (DataMovementProtocolResource) resource;
-            protocols.put(protocolResource.getDataMoveID(), DataMovementProtocol.valueOf(protocolResource.getDataMoveType()));
-        }
-        return protocols;
-    }
+//    public static Map<String, DataMovementProtocol> getDataMoveProtocolList(List<Resource> resources){
+//        Map<String, DataMovementProtocol> protocols = new HashMap<String, DataMovementProtocol>();
+//        for (Resource resource : resources){
+//            DataMovementProtocolResource protocolResource = (DataMovementProtocolResource) resource;
+//            protocols.put(protocolResource.getDataMoveID(), DataMovementProtocol.valueOf(protocolResource.getDataMoveType()));
+//        }
+//        return protocols;
+//    }
 
     public static SshJobSubmissionResource getSSHJobSubmission (SSHJobSubmission submission){
     	SshJobSubmissionResource resource = new SshJobSubmissionResource();

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/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 3bf5daa..0f9bb72 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
@@ -24,7 +24,6 @@
     <persistence-unit name="appcatalog_data">
         <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
         <class>org.apache.aiaravata.application.catalog.data.model.ComputeResource</class>
-        <class>org.apache.aiaravata.application.catalog.data.model.DataMovementProtocol</class>
         <class>org.apache.aiaravata.application.catalog.data.model.GlobusJobSubmission</class>
         <class>org.apache.aiaravata.application.catalog.data.model.GlobusGKEndpoint</class>
         <class>org.apache.aiaravata.application.catalog.data.model.GSISSHSubmission</class>
@@ -33,7 +32,6 @@
         <class>org.apache.aiaravata.application.catalog.data.model.GSISSHPostJobCommand</class>
         <class>org.apache.aiaravata.application.catalog.data.model.HostAlias</class>
         <class>org.apache.aiaravata.application.catalog.data.model.HostIPAddress</class>
-        <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.GridftpEndpoint</class>

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/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 ca423ab..8340116 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
@@ -23,6 +23,8 @@ CREATE TABLE COMPUTE_RESOURCE
 	RESOURCE_ID VARCHAR (255) NOT NULL,
 	HOST_NAME VARCHAR (255) NOT NULL,
 	RESOURCE_DESCRIPTION VARCHAR (255),
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (RESOURCE_ID)
 );
 
@@ -98,6 +100,8 @@ CREATE TABLE RESOURCE_JOB_MANAGER
 	PUSH_MONITORING_ENDPOINT VARCHAR (255),
 	JOB_MANAGER_BIN_PATH VARCHAR (255),
 	RESOURCE_JOB_MANAGER_TYPE VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (RESOURCE_JOB_MANAGER_ID)
 );
 
@@ -108,6 +112,8 @@ CREATE TABLE SSH_JOB_SUBMISSION
 	ALTERNATIVE_SSH_HOSTNAME VARCHAR (255),
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
 	SSH_PORT INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
 );
@@ -119,6 +125,8 @@ CREATE TABLE SCP_DATA_MOVEMENT
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
 	ALTERNATIVE_SCP_HOSTNAME VARCHAR (255),
 	SSH_PORT INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
 );
 
@@ -126,6 +134,8 @@ CREATE TABLE GRIDFTP_DATA_MOVEMENT
 (
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
 );
 
@@ -134,26 +144,32 @@ CREATE TABLE GRIDFTP_ENDPOINT
 	ENDPOINT VARCHAR (255) NOT NULL,
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID,ENDPOINT),
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	FOREIGN KEY (DATA_MOVEMENT_INTERFACE_ID) REFERENCES GRIDFTP_DATA_MOVEMENT(DATA_MOVEMENT_INTERFACE_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE JOB_SUBMISSION_PROTOCOL
-(
-         RESOURCE_ID VARCHAR(255),
-         SUBMISSION_ID VARCHAR(255),
-         JOB_TYPE VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,SUBMISSION_ID,JOB_TYPE),
-         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_MOVEMENT_PROTOCOL
-(
-         RESOURCE_ID VARCHAR(255),
-         DATA_MOVE_ID VARCHAR(255),
-         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
-);
+--CREATE TABLE JOB_SUBMISSION_PROTOCOL
+--(
+--         RESOURCE_ID VARCHAR(255),
+--         SUBMISSION_ID VARCHAR(255),
+--         JOB_TYPE VARCHAR(255),
+--         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+--         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+--         PRIMARY KEY(RESOURCE_ID,SUBMISSION_ID,JOB_TYPE),
+--         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
+--);
+--
+--CREATE TABLE DATA_MOVEMENT_PROTOCOL
+--(
+--         RESOURCE_ID VARCHAR(255),
+--         DATA_MOVE_ID VARCHAR(255),
+--         DATA_MOVE_TYPE VARCHAR(255),
+--         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+--         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+--         PRIMARY KEY(RESOURCE_ID,DATA_MOVE_ID,DATA_MOVE_TYPE),
+--         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
+--);
 
 CREATE TABLE APPLICATION_MODULE
 (
@@ -161,6 +177,8 @@ CREATE TABLE APPLICATION_MODULE
          MODULE_NAME VARCHAR(255),
          MODULE_VERSION VARCHAR(255),
          MODULE_DESC VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
          PRIMARY KEY(MODULE_ID)
 );
 
@@ -170,8 +188,10 @@ CREATE TABLE APPLICATION_DEPLOYMENT
          APP_MODULE_ID VARCHAR(255),
          COMPUTE_HOSTID VARCHAR(255),
          EXECUTABLE_PATH VARCHAR(255),
-	 PARALLELISM VARCHAR(255),
+	     PARALLELISM VARCHAR(255),
          APPLICATION_DESC VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
          PRIMARY KEY(DEPLOYMENT_ID),
          FOREIGN KEY (COMPUTE_HOSTID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
          FOREIGN KEY (APP_MODULE_ID) REFERENCES APPLICATION_MODULE(MODULE_ID) ON DELETE CASCADE
@@ -217,6 +237,8 @@ CREATE TABLE APPLICATION_INTERFACE
          INTERFACE_ID VARCHAR(255),
          APPLICATION_NAME VARCHAR(255),
          APPLICATION_DESCRIPTION VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
          PRIMARY KEY(INTERFACE_ID)
 );
 
@@ -258,6 +280,8 @@ CREATE TABLE GATEWAY_PROFILE
          GATEWAY_ID VARCHAR(255),
          GATEWAY_NAME VARCHAR(255),
          GATEWAY_DESC VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
          PRIMARY KEY(GATEWAY_ID)
 );
 
@@ -304,6 +328,8 @@ CREATE TABLE JOB_SUBMISSION_INTERFACE
 	COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
 	JOB_SUBMISSION_PROTOCOL VARCHAR (255) NOT NULL,
 	PRIORITY_ORDER INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (COMPUTE_RESOURCE_ID,JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
@@ -314,6 +340,8 @@ CREATE TABLE DATA_MOVEMENT_INTERFACE
 	DATA_MOVEMENT_PROTOCOL VARCHAR (255) NOT NULL,
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	PRIORITY_ORDER INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (COMPUTE_RESOURCE_ID,DATA_MOVEMENT_INTERFACE_ID),
 	FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
@@ -331,6 +359,8 @@ CREATE TABLE LOCAL_SUBMISSION
 (
 	RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
 	JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
 );
@@ -347,6 +377,8 @@ CREATE TABLE WORKFLOW
 	WF_NAME VARCHAR (255) NOT NULL,
 	GRAPH CLOB,
 	OWNER VARCHAR(255),
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
 	PRIMARY KEY (WF_TEMPLATE_ID)
 );
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/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 bb72c7f..5b09829 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
@@ -23,6 +23,8 @@ CREATE TABLE COMPUTE_RESOURCE
 	RESOURCE_ID VARCHAR (255) NOT NULL,
 	HOST_NAME VARCHAR (255) NOT NULL,
 	RESOURCE_DESCRIPTION VARCHAR (255),
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (RESOURCE_ID)
 );
 
@@ -98,6 +100,8 @@ CREATE TABLE RESOURCE_JOB_MANAGER
 	PUSH_MONITORING_ENDPOINT VARCHAR (255),
 	JOB_MANAGER_BIN_PATH VARCHAR (255),
 	RESOURCE_JOB_MANAGER_TYPE VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (RESOURCE_JOB_MANAGER_ID)
 );
 
@@ -108,6 +112,8 @@ CREATE TABLE SSH_JOB_SUBMISSION
 	ALTERNATIVE_SSH_HOSTNAME VARCHAR (255),
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
 	SSH_PORT INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
 );
@@ -119,6 +125,8 @@ CREATE TABLE SCP_DATA_MOVEMENT
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
 	ALTERNATIVE_SCP_HOSTNAME VARCHAR (255),
 	SSH_PORT INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
 );
 
@@ -126,6 +134,8 @@ CREATE TABLE GRIDFTP_DATA_MOVEMENT
 (
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
 );
 
@@ -134,26 +144,28 @@ CREATE TABLE GRIDFTP_ENDPOINT
 	ENDPOINT VARCHAR (255) NOT NULL,
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID,ENDPOINT),
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	FOREIGN KEY (DATA_MOVEMENT_INTERFACE_ID) REFERENCES GRIDFTP_DATA_MOVEMENT(DATA_MOVEMENT_INTERFACE_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE JOB_SUBMISSION_PROTOCOL
-(
-         RESOURCE_ID VARCHAR(255),
-         SUBMISSION_ID VARCHAR(255),
-         JOB_TYPE VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,SUBMISSION_ID,JOB_TYPE),
-         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_MOVEMENT_PROTOCOL
-(
-         RESOURCE_ID VARCHAR(255),
-         DATA_MOVE_ID VARCHAR(255),
-         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
-);
+--CREATE TABLE JOB_SUBMISSION_PROTOCOL
+--(
+--         RESOURCE_ID VARCHAR(255),
+--         SUBMISSION_ID VARCHAR(255),
+--         JOB_TYPE VARCHAR(255),
+--         PRIMARY KEY(RESOURCE_ID,SUBMISSION_ID,JOB_TYPE),
+--         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
+--);
+--
+--CREATE TABLE DATA_MOVEMENT_PROTOCOL
+--(
+--         RESOURCE_ID VARCHAR(255),
+--         DATA_MOVE_ID VARCHAR(255),
+--         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
+--);
 
 CREATE TABLE APPLICATION_MODULE
 (
@@ -161,6 +173,8 @@ CREATE TABLE APPLICATION_MODULE
          MODULE_NAME VARCHAR(255),
          MODULE_VERSION VARCHAR(255),
          MODULE_DESC VARCHAR(255),
+	     CREATION_TIME TIMESTAMP DEFAULT NOW(),
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
          PRIMARY KEY(MODULE_ID)
 );
 
@@ -173,6 +187,8 @@ CREATE TABLE APPLICATION_DEPLOYMENT
 	     PARALLELISM VARCHAR(255),
          APPLICATION_DESC VARCHAR(255),
          ENV_MODULE_LOAD_CMD VARCHAR(255),
+	     CREATION_TIME TIMESTAMP DEFAULT NOW(),
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
          PRIMARY KEY(DEPLOYMENT_ID),
          FOREIGN KEY (COMPUTE_HOSTID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
          FOREIGN KEY (APP_MODULE_ID) REFERENCES APPLICATION_MODULE(MODULE_ID) ON DELETE CASCADE
@@ -210,6 +226,8 @@ CREATE TABLE APPLICATION_INTERFACE
          INTERFACE_ID VARCHAR(255),
          APPLICATION_NAME VARCHAR(255),
          APPLICATION_DESCRIPTION VARCHAR(255),
+	     CREATION_TIME TIMESTAMP DEFAULT NOW(),
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
          PRIMARY KEY(INTERFACE_ID)
 );
 
@@ -251,6 +269,8 @@ CREATE TABLE GATEWAY_PROFILE
          GATEWAY_ID VARCHAR(255),
          GATEWAY_NAME VARCHAR(255),
          GATEWAY_DESC VARCHAR(255),
+	     CREATION_TIME TIMESTAMP DEFAULT NOW(),
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
          PRIMARY KEY(GATEWAY_ID)
 );
 
@@ -297,6 +317,8 @@ CREATE TABLE JOB_SUBMISSION_INTERFACE
 	COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
 	JOB_SUBMISSION_PROTOCOL VARCHAR (255) NOT NULL,
 	PRIORITY_ORDER INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (COMPUTE_RESOURCE_ID,JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
@@ -307,6 +329,8 @@ CREATE TABLE DATA_MOVEMENT_INTERFACE
 	DATA_MOVEMENT_PROTOCOL VARCHAR (255) NOT NULL,
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	PRIORITY_ORDER INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (COMPUTE_RESOURCE_ID,DATA_MOVEMENT_INTERFACE_ID),
 	FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
@@ -324,6 +348,8 @@ CREATE TABLE LOCAL_SUBMISSION
 (
 	RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
 	JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
 );
@@ -340,6 +366,8 @@ CREATE TABLE WORKFLOW
 	WF_NAME VARCHAR (255) NOT NULL,
 	GRAPH LONGTEXT,
 	OWNER VARCHAR(255),
+	CREATION_TIME TIMESTAMP DEFAULT NOW(),
+    UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
 	PRIMARY KEY (WF_TEMPLATE_ID)
 );
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql b/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
index ca423ab..a9da4b7 100644
--- a/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
+++ b/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
@@ -23,6 +23,8 @@ CREATE TABLE COMPUTE_RESOURCE
 	RESOURCE_ID VARCHAR (255) NOT NULL,
 	HOST_NAME VARCHAR (255) NOT NULL,
 	RESOURCE_DESCRIPTION VARCHAR (255),
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (RESOURCE_ID)
 );
 
@@ -98,6 +100,8 @@ CREATE TABLE RESOURCE_JOB_MANAGER
 	PUSH_MONITORING_ENDPOINT VARCHAR (255),
 	JOB_MANAGER_BIN_PATH VARCHAR (255),
 	RESOURCE_JOB_MANAGER_TYPE VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (RESOURCE_JOB_MANAGER_ID)
 );
 
@@ -108,6 +112,8 @@ CREATE TABLE SSH_JOB_SUBMISSION
 	ALTERNATIVE_SSH_HOSTNAME VARCHAR (255),
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
 	SSH_PORT INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
 );
@@ -119,6 +125,8 @@ CREATE TABLE SCP_DATA_MOVEMENT
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
 	ALTERNATIVE_SCP_HOSTNAME VARCHAR (255),
 	SSH_PORT INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
 );
 
@@ -126,6 +134,8 @@ CREATE TABLE GRIDFTP_DATA_MOVEMENT
 (
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
 );
 
@@ -134,26 +144,32 @@ CREATE TABLE GRIDFTP_ENDPOINT
 	ENDPOINT VARCHAR (255) NOT NULL,
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID,ENDPOINT),
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	FOREIGN KEY (DATA_MOVEMENT_INTERFACE_ID) REFERENCES GRIDFTP_DATA_MOVEMENT(DATA_MOVEMENT_INTERFACE_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE JOB_SUBMISSION_PROTOCOL
-(
-         RESOURCE_ID VARCHAR(255),
-         SUBMISSION_ID VARCHAR(255),
-         JOB_TYPE VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,SUBMISSION_ID,JOB_TYPE),
-         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_MOVEMENT_PROTOCOL
-(
-         RESOURCE_ID VARCHAR(255),
-         DATA_MOVE_ID VARCHAR(255),
-         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
-);
+--CREATE TABLE JOB_SUBMISSION_PROTOCOL
+--(
+--         RESOURCE_ID VARCHAR(255),
+--         SUBMISSION_ID VARCHAR(255),
+--         JOB_TYPE VARCHAR(255),
+--         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+--         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+--         PRIMARY KEY(RESOURCE_ID,SUBMISSION_ID,JOB_TYPE),
+--         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
+--);
+--
+--CREATE TABLE DATA_MOVEMENT_PROTOCOL
+--(
+--         RESOURCE_ID VARCHAR(255),
+--         DATA_MOVE_ID VARCHAR(255),
+--         DATA_MOVE_TYPE VARCHAR(255),
+--         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+--         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+--         PRIMARY KEY(RESOURCE_ID,DATA_MOVE_ID,DATA_MOVE_TYPE),
+--         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
+--);
 
 CREATE TABLE APPLICATION_MODULE
 (
@@ -161,6 +177,8 @@ CREATE TABLE APPLICATION_MODULE
          MODULE_NAME VARCHAR(255),
          MODULE_VERSION VARCHAR(255),
          MODULE_DESC VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
          PRIMARY KEY(MODULE_ID)
 );
 
@@ -170,8 +188,10 @@ CREATE TABLE APPLICATION_DEPLOYMENT
          APP_MODULE_ID VARCHAR(255),
          COMPUTE_HOSTID VARCHAR(255),
          EXECUTABLE_PATH VARCHAR(255),
-	 PARALLELISM VARCHAR(255),
+	     PARALLELISM VARCHAR(255),
          APPLICATION_DESC VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
          PRIMARY KEY(DEPLOYMENT_ID),
          FOREIGN KEY (COMPUTE_HOSTID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
          FOREIGN KEY (APP_MODULE_ID) REFERENCES APPLICATION_MODULE(MODULE_ID) ON DELETE CASCADE
@@ -217,6 +237,8 @@ CREATE TABLE APPLICATION_INTERFACE
          INTERFACE_ID VARCHAR(255),
          APPLICATION_NAME VARCHAR(255),
          APPLICATION_DESCRIPTION VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
          PRIMARY KEY(INTERFACE_ID)
 );
 
@@ -258,6 +280,8 @@ CREATE TABLE GATEWAY_PROFILE
          GATEWAY_ID VARCHAR(255),
          GATEWAY_NAME VARCHAR(255),
          GATEWAY_DESC VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
          PRIMARY KEY(GATEWAY_ID)
 );
 
@@ -304,6 +328,8 @@ CREATE TABLE JOB_SUBMISSION_INTERFACE
 	COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
 	JOB_SUBMISSION_PROTOCOL VARCHAR (255) NOT NULL,
 	PRIORITY_ORDER INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (COMPUTE_RESOURCE_ID,JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
@@ -314,6 +340,8 @@ CREATE TABLE DATA_MOVEMENT_INTERFACE
 	DATA_MOVEMENT_PROTOCOL VARCHAR (255) NOT NULL,
 	DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
 	PRIORITY_ORDER INTEGER,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (COMPUTE_RESOURCE_ID,DATA_MOVEMENT_INTERFACE_ID),
 	FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
 );
@@ -331,6 +359,8 @@ CREATE TABLE LOCAL_SUBMISSION
 (
 	RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
 	JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
 	FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
 );
@@ -347,6 +377,8 @@ CREATE TABLE WORKFLOW
 	WF_NAME VARCHAR (255) NOT NULL,
 	GRAPH CLOB,
 	OWNER VARCHAR(255),
+	CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
 	PRIMARY KEY (WF_TEMPLATE_ID)
 );
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql b/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql
index a30f093..286a8fb 100644
--- a/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql
+++ b/modules/registry/airavata-jpa-registry/src/main/resources/registry-mysql.sql
@@ -263,7 +263,7 @@ CREATE TABLE STATUS
         TASK_ID VARCHAR(255),
         JOB_ID VARCHAR(255),
         STATE VARCHAR(255),
-        STATUS_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        STATUS_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ON UPDATE now(),
         STATUS_TYPE VARCHAR(255),
         PRIMARY KEY(STATUS_ID),
         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,


[3/3] git commit: adding created time and update time to app catalog

Posted by ch...@apache.org.
adding created time and update time to app catalog


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

Branch: refs/heads/master
Commit: 404913acd380787b98ddf8c0673dcb10bf6e1087
Parents: b19a8e0
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Thu Aug 14 16:24:26 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Thu Aug 14 16:24:26 2014 -0400

----------------------------------------------------------------------
 .../conf/airavata-client-properties.ini         |   2 +-
 .../resources/conf/app-catalog-identifiers.ini  |   3 +-
 .../client/samples/CreateLaunchExperiment.java  |  48 +-
 .../samples/TestCreateLaunchExperiment.java     |  19 +
 .../data/model/ApplicationDeployment.java       |  22 +
 .../data/model/ApplicationInterface.java        |  23 +
 .../catalog/data/model/ApplicationModule.java   |  23 +
 .../catalog/data/model/ComputeResource.java     |  27 +-
 .../data/model/DataMovementInterface.java       |  28 +-
 .../data/model/DataMovementProtocol.java        | 152 ++--
 .../data/model/DataMovementProtocolPK.java      | 148 ++--
 .../catalog/data/model/GatewayProfile.java      |  23 +
 .../catalog/data/model/GridftpDataMovement.java |  27 +-
 .../catalog/data/model/GridftpEndpoint.java     |  30 +-
 .../data/model/JobSubmissionInterface.java      |  28 +-
 .../data/model/JobSubmissionProtocol.java       | 154 ++--
 .../data/model/JobSubmissionProtocolPK.java     | 148 ++--
 .../catalog/data/model/LocalSubmission.java     |  27 +-
 .../catalog/data/model/ResourceJobManager.java  |  23 +
 .../catalog/data/model/ScpDataMovement.java     |  28 +-
 .../catalog/data/model/SshJobSubmission.java    |  28 +-
 .../catalog/data/model/Workflow.java            |  23 +
 .../data/resources/AppDeploymentResource.java   |  21 +
 .../data/resources/AppInterfaceResource.java    |  21 +
 .../data/resources/AppModuleResource.java       |  21 +
 .../data/resources/ComputeResourceResource.java |  25 +-
 .../DataMovementInterfaceResource.java          |  21 +
 .../resources/DataMovementProtocolResource.java | 720 +++++++++----------
 .../data/resources/GatewayProfileResource.java  |  21 +
 .../resources/GridftpDataMovementResource.java  |  21 +
 .../data/resources/GridftpEndpointResource.java |  21 +
 .../JobSubmissionInterfaceResource.java         |  21 +
 .../JobSubmissionProtocolResource.java          | 718 +++++++++---------
 .../data/resources/LocalSubmissionResource.java |  21 +
 .../resources/ResourceJobManagerResource.java   |  21 +
 .../data/resources/ScpDataMovementResource.java |  21 +
 .../resources/SshJobSubmissionResource.java     |  21 +
 .../data/resources/WorkflowResource.java        |  21 +
 .../catalog/data/util/AppCatalogJPAUtils.java   | 126 +++-
 .../data/util/AppCatalogThriftConversion.java   |  32 +-
 .../src/main/resources/META-INF/persistence.xml |   2 -
 .../src/main/resources/appcatalog-derby.sql     |  68 +-
 .../src/main/resources/appcatalog-mysql.sql     |  62 +-
 .../src/test/resources/appcatalog-derby.sql     |  68 +-
 .../src/main/resources/registry-mysql.sql       |   2 +-
 45 files changed, 1973 insertions(+), 1157 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/airavata-client-properties.ini
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/airavata-client-properties.ini b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/airavata-client-properties.ini
index 0fc113d..959a77f 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/airavata-client-properties.ini
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/airavata-client-properties.ini
@@ -8,7 +8,7 @@ THRIFT_LIB_DIR = "../lib/Thrift/"
 AIRAVATA_PHP_STUBS_DIR = "../lib/Airavata/"
 
 ; Host which runs the Airavata Server
-AIRAVATA_SERVER = "gw56.iu.xsede.org"
+AIRAVATA_SERVER = "gw111.iu.xsede.org"
 ;AIRAVATA_SERVER = "localhost"
 
 ; Airavata Server thrift port

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/app-catalog-identifiers.ini
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/app-catalog-identifiers.ini b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/app-catalog-identifiers.ini
index 7380248..9771085 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/app-catalog-identifiers.ini
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/app-catalog-identifiers.ini
@@ -11,4 +11,5 @@ wrfInterfaceId=WRF_a390e041-cae3-4b85-9bb9-e03df666deb9
 autoDockInterfaceId=
 nwChemInterfaceId=NWChem_bdc7b97a-dd39-49cb-b203-6d779781d5c8
 lammpsInterfaceId=LAMMPS_f43520e2-b77a-4f11-b3b7-98693349fcd0
-echoInterfaceId=Echo_271e6d47-a5db-434e-8453-e27985b7ea59
+#echoInterfaceId=Echo_271e6d47-a5db-434e-8453-e27985b7ea59
+echoInterfaceId=Echo_c6e6aaac-7d9d-44fc-aba2-63b5100528e8

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
index 967577c..5178965 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
@@ -37,13 +37,17 @@ import org.apache.airavata.client.tools.DocumentCreator;
 import org.apache.airavata.client.tools.DocumentCreatorNew;
 import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.model.util.ExperimentModelUtil;
+import org.apache.airavata.persistance.registry.jpa.model.ErrorDetail;
 import org.apache.airavata.schemas.gfac.InputParameterType;
 import org.apache.airavata.schemas.gfac.OutputParameterType;
 import org.apache.airavata.schemas.gfac.ParameterType;
+import org.apache.airavata.workflow.model.component.system.StreamSourceComponent;
 import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.xmlsoap.schemas.soap.encoding.*;
 
+import java.lang.String;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -60,8 +64,8 @@ public class CreateLaunchExperiment {
     private static Airavata.Client client;
     private static String localHostAppId = "localhost_9c5b098c-8906-4be1-9ef3-a7706c9b1e2c,SimpleEcho0_315d9b93-2cdb-4c1b-8dc3-d2077936f5ae";
     private static String sshHostAppId;
-    private static String pbsEchoAppId = "trestles.sdsc.edu_849a1136-7e0a-4f4a-b835-322a83b967b6,SimpleEcho2_f89d3b8c-6f22-4a77-a9f5-a4df88785ab6";
-    private static String pbsWRFAppId = "trestles.sdsc.edu_00482169-8fc4-4633-b779-5ca1f66f27c1,WRF_0f1e90d3-5915-4629-a5a4-73346c1e7535";
+    private static String pbsEchoAppId = "trestles.sdsc.edu_d4b6dfd0-d273-4499-b5dd-19b7f83176ed,SimpleEcho2_060f9325-3f72-4ff6-b8a2-8a2b4911e09d";
+    private static String pbsWRFAppId = "trestles.sdsc.edu_03d239f1-b923-487a-9aa4-fcc7aed8628e,WRF_a5a7372d-2c59-4986-8351-eac563b53f89";
     private static String slurmAppId = "stampede.tacc.xsede.org_b2ef59cb-f626-4767-9ca0-601f94c42ba4,SimpleEcho3_b81c2559-a088-42a3-84ce-40119d874918";
     private static String sgeAppId;
     private static String br2EchoAppId = "bigred2_9c1e6be8-f7d8-4494-98f2-bf508790e8c6,SimpleEchoBR_149fd613-98e2-46e7-ac7c-4d393349469e";
@@ -76,13 +80,14 @@ public class CreateLaunchExperiment {
         try {
             AiravataUtils.setExecutionAsClient();
             client = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
-            System.out.println("API version is " + client.getAPIVersion());
-            addDescriptors();
+//            System.out.println("API version is " + client.getAPIVersion());
+//            getExperiment(client, "WRFExperiment_2a2de26c-7f74-47c9-8e14-40e50dedfe0f");
+//            addDescriptors();
 
 ////            final String expId = createExperimentForSSHHost(airavata);
-////            final String expId = createExperimentForTrestles(client);
+            final String expId = createExperimentForTrestles(client);
 ////            final String expId = createExperimentForStampede(client);
-            final String expId = createExperimentForLocalHost(client);
+//            final String expId = createExperimentForLocalHost(client);
 //            final String expId = createExperimentForLonestar(airavata);
 //            final String expId = createExperimentWRFTrestles(client);
 //            final String expId = createExperimentForBR2(client);
@@ -248,17 +253,17 @@ public class CreateLaunchExperiment {
             DataObjectType input = new DataObjectType();
             input.setKey("WRF_Namelist");
             input.setType(DataType.URI);
-            input.setValue("/Users/lahirugunathilake/Downloads/wrf_sample_inputs/namelist.input");
+            input.setValue("/Users/chathuri/Downloads/wrf_sample_inputs/namelist1.input");
 
             DataObjectType input1 = new DataObjectType();
             input1.setKey("WRF_Input_File");
             input1.setType(DataType.URI);
-            input1.setValue("/Users/lahirugunathilake/Downloads/wrf_sample_inputs/wrfinput_d01");
+            input1.setValue("/Users/chathuri/Downloads/wrf_sample_inputs/wrfinput1_d01");
 
             DataObjectType input2 = new DataObjectType();
             input2.setKey("WRF_Boundary_File");
             input2.setType(DataType.URI);
-            input2.setValue("/Users/lahirugunathilake/Downloads/wrf_sample_inputs/wrfbdy_d01");
+            input2.setValue("/Users/chathuri/Downloads/wrf_sample_inputs/wrfbdy_d011");
 
             exInputs.add(input);
             exInputs.add(input1);
@@ -918,4 +923,29 @@ public class CreateLaunchExperiment {
         }
         return null;
     }
+
+    public static void getExperiment (Airavata.Client client, String expId) throws Exception{
+        try{
+            Experiment experiment = client.getExperiment(expId);
+            List<ErrorDetails> errors = experiment.getErrors();
+            if (errors != null && !errors.isEmpty()){
+                for (ErrorDetails error : errors){
+                    System.out.println("ERROR MESSAGE : " + error.getActualErrorMessage());
+                }
+            }
+
+        } catch (ExperimentNotFoundException e) {
+            logger.error("Experiment does not exist", e);
+            throw new ExperimentNotFoundException("Experiment does not exist");
+        } catch (AiravataSystemException e) {
+            logger.error("Error while retrieving experiment", e);
+            throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+        } catch (InvalidRequestException e) {
+            logger.error("Error while retrieving experiment", e);
+            throw new InvalidRequestException("Error while retrieving experiment");
+        } catch (AiravataClientException e) {
+            logger.error("Error while retrieving experiment", e);
+            throw new AiravataClientException(AiravataErrorType.INTERNAL_ERROR);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/TestCreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/TestCreateLaunchExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/TestCreateLaunchExperiment.java
index 9f17835..f5612aa 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/TestCreateLaunchExperiment.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/TestCreateLaunchExperiment.java
@@ -39,6 +39,7 @@ import org.apache.airavata.model.workspace.Project;
 import org.apache.airavata.model.workspace.experiment.*;
 import org.apache.airavata.model.workspace.experiment.Experiment;
 import org.apache.airavata.persistance.registry.jpa.model.*;
+import org.apache.airavata.workflow.model.component.system.SystemComponent;
 import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -149,6 +150,24 @@ public class TestCreateLaunchExperiment {
         }
     }
 
+    public static void getAllAppInterfaces (Airavata.Client client){
+        try {
+            Map<String, String> allApps = client.getAllApplicationInterfaceNames();
+            for (String id : allApps.keySet()){
+                System.out.println("app id : " + id);
+                System.out.println("app name : " + allApps.get(id));
+            }
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        }catch (TException e) {
+            e.printStackTrace();
+        }
+    }
+
     public static void getAppModule (Airavata.Client client, String moduleId){
         try {
             ApplicationModule applicationModule = client.getApplicationModule(moduleId);

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationDeployment.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationDeployment.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationDeployment.java
index 24fda20..9cca5eb 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationDeployment.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationDeployment.java
@@ -23,6 +23,7 @@ package org.apache.aiaravata.application.catalog.data.model;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 @Entity
 @Table(name = "APPLICATION_DEPLOYMENT")
@@ -49,6 +50,27 @@ public class ApplicationDeployment implements Serializable {
     @JoinColumn(name = "COMPUTE_HOSTID")
     private ComputeResource computeResource;
 
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
 
     public String getDeploymentID() {
         return deploymentID;

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInterface.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInterface.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInterface.java
index 4e46f4f..c7c1ad2 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInterface.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationInterface.java
@@ -26,6 +26,7 @@ import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 @Entity
 @Table(name = "APPLICATION_INTERFACE")
@@ -37,6 +38,28 @@ public class ApplicationInterface implements Serializable {
     private String appName;
     @Column(name = "APPLICATION_DESCRIPTION")
     private String appDescription;
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
 
     public String getInterfaceID() {
         return interfaceID;

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationModule.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationModule.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationModule.java
index d15ff8d..ece8c87 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationModule.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ApplicationModule.java
@@ -26,6 +26,7 @@ import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 @Entity
 @Table(name = "APPLICATION_MODULE")
@@ -39,6 +40,28 @@ public class ApplicationModule implements Serializable {
     private String moduleVersion;
     @Column(name = "MODULE_DESC")
     private String moduleDesc;
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
 
     public String getModuleID() {
         return moduleID;

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ComputeResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ComputeResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ComputeResource.java
index 4d99407..2692a29 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ComputeResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ComputeResource.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -44,8 +45,30 @@ public class ComputeResource implements Serializable {
 	
 	@Column(name = "HOST_NAME")
 	private String hostName;
-	
-	public String getResourceDescription() {
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getResourceDescription() {
 		return resourceDescription;
 	}
 	

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementInterface.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementInterface.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementInterface.java
index ff5e962..9ba1a6d 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementInterface.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/DataMovementInterface.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -57,8 +58,31 @@ public class DataMovementInterface implements Serializable {
 	
 	@Column(name = "PRIORITY_ORDER")
 	private int priorityOrder;
-	
-	public String getComputeResourceId() {
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+
+    public String getComputeResourceId() {
 		return computeResourceId;
 	}
 	

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/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 4203e89..d45c4e8 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
@@ -1,76 +1,76 @@
-/*
- *
- * 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 = "DATA_MOVEMENT_PROTOCOL")
-@IdClass(DataMovementProtocolPK.class)
-public class DataMovementProtocol implements Serializable {
-    @Id
-    @Column(name = "RESOURCE_ID")
-    private String resourceID;
-    @Id
-    @Column(name = "DATA_MOVE_ID")
-    private String dataMoveID;
-    @Id
-    @Column(name = "DATA_MOVE_TYPE")
-    private String dataMoveType;
-
-    @ManyToOne(cascade= CascadeType.MERGE)
-    @JoinColumn(name = "RESOURCE_ID")
-    private ComputeResource computeResource;
-
-    public String getResourceID() {
-        return resourceID;
-    }
-
-    public void setResourceID(String resourceID) {
-        this.resourceID = resourceID;
-    }
-
-    public String getDataMoveID() {
-        return dataMoveID;
-    }
-
-    public void setDataMoveID(String dataMoveID) {
-        this.dataMoveID = dataMoveID;
-    }
-
-    public String getDataMoveType() {
-        return dataMoveType;
-    }
-
-    public void setDataMoveType(String dataMoveType) {
-        this.dataMoveType = dataMoveType;
-    }
-
-    public ComputeResource getComputeResource() {
-        return computeResource;
-    }
-
-    public void setComputeResource(ComputeResource computeResource) {
-        this.computeResource = computeResource;
-    }
-}
+///*
+// *
+// * 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 = "DATA_MOVEMENT_PROTOCOL")
+//@IdClass(DataMovementProtocolPK.class)
+//public class DataMovementProtocol implements Serializable {
+//    @Id
+//    @Column(name = "RESOURCE_ID")
+//    private String resourceID;
+//    @Id
+//    @Column(name = "DATA_MOVE_ID")
+//    private String dataMoveID;
+//    @Id
+//    @Column(name = "DATA_MOVE_TYPE")
+//    private String dataMoveType;
+//
+//    @ManyToOne(cascade= CascadeType.MERGE)
+//    @JoinColumn(name = "RESOURCE_ID")
+//    private ComputeResource computeResource;
+//
+//    public String getResourceID() {
+//        return resourceID;
+//    }
+//
+//    public void setResourceID(String resourceID) {
+//        this.resourceID = resourceID;
+//    }
+//
+//    public String getDataMoveID() {
+//        return dataMoveID;
+//    }
+//
+//    public void setDataMoveID(String dataMoveID) {
+//        this.dataMoveID = dataMoveID;
+//    }
+//
+//    public String getDataMoveType() {
+//        return dataMoveType;
+//    }
+//
+//    public void setDataMoveType(String dataMoveType) {
+//        this.dataMoveType = dataMoveType;
+//    }
+//
+//    public ComputeResource getComputeResource() {
+//        return computeResource;
+//    }
+//
+//    public void setComputeResource(ComputeResource computeResource) {
+//        this.computeResource = computeResource;
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/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 9fed4b3..9e53d1f 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
@@ -1,74 +1,74 @@
-/*
- *
- * 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 DataMovementProtocolPK implements Serializable {
-    private String resourceID;
-    private String dataMoveID;
-    private String dataMoveType;
-
-    public DataMovementProtocolPK(String resourceID, String dataMoveID, String dataMoveType) {
-        this.resourceID = resourceID;
-        this.dataMoveID = dataMoveID;
-        this.dataMoveType = dataMoveType;
-    }
-
-    public DataMovementProtocolPK() {
-        ;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return 1;
-    }
-
-    public String getResourceID() {
-        return resourceID;
-    }
-
-    public void setResourceID(String resourceID) {
-        this.resourceID = resourceID;
-    }
-
-    public String getDataMoveID() {
-        return dataMoveID;
-    }
-
-    public void setDataMoveID(String dataMoveID) {
-        this.dataMoveID = dataMoveID;
-    }
-
-    public String getDataMoveType() {
-        return dataMoveType;
-    }
-
-    public void setDataMoveType(String dataMoveType) {
-        this.dataMoveType = dataMoveType;
-    }
-}
+///*
+// *
+// * 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 DataMovementProtocolPK implements Serializable {
+//    private String resourceID;
+//    private String dataMoveID;
+//    private String dataMoveType;
+//
+//    public DataMovementProtocolPK(String resourceID, String dataMoveID, String dataMoveType) {
+//        this.resourceID = resourceID;
+//        this.dataMoveID = dataMoveID;
+//        this.dataMoveType = dataMoveType;
+//    }
+//
+//    public DataMovementProtocolPK() {
+//        ;
+//    }
+//
+//    @Override
+//    public boolean equals(Object o) {
+//        return false;
+//    }
+//
+//    @Override
+//    public int hashCode() {
+//        return 1;
+//    }
+//
+//    public String getResourceID() {
+//        return resourceID;
+//    }
+//
+//    public void setResourceID(String resourceID) {
+//        this.resourceID = resourceID;
+//    }
+//
+//    public String getDataMoveID() {
+//        return dataMoveID;
+//    }
+//
+//    public void setDataMoveID(String dataMoveID) {
+//        this.dataMoveID = dataMoveID;
+//    }
+//
+//    public String getDataMoveType() {
+//        return dataMoveType;
+//    }
+//
+//    public void setDataMoveType(String dataMoveType) {
+//        this.dataMoveType = dataMoveType;
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GatewayProfile.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GatewayProfile.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GatewayProfile.java
index 2809b53..0bcb096 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GatewayProfile.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GatewayProfile.java
@@ -26,6 +26,7 @@ import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 @Entity
 @Table(name = "GATEWAY_PROFILE")
@@ -37,6 +38,28 @@ public class GatewayProfile implements Serializable {
     private String gatewayName;
     @Column(name = "GATEWAY_DESC")
     private String gatewayDesc;
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
 
     public String getGatewayID() {
         return gatewayID;

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpDataMovement.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpDataMovement.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpDataMovement.java
index fcae1d6..1d5ac9e 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpDataMovement.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpDataMovement.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -41,8 +42,30 @@ public class GridftpDataMovement implements Serializable {
 	
 	@Column(name = "SECURITY_PROTOCOL")
 	private String securityProtocol;
-	
-	public String getDataMovementInterfaceId() {
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getDataMovementInterfaceId() {
 		return dataMovementInterfaceId;
 	}
 	

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpEndpoint.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpEndpoint.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpEndpoint.java
index b9cf40b..be2a833 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpEndpoint.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/GridftpEndpoint.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -47,12 +48,35 @@ public class GridftpEndpoint implements Serializable {
 	@Id
 	@Column(name = "DATA_MOVEMENT_INTERFACE_ID")
 	private String dataMovementInterfaceId;
-	
+
 	@ManyToOne(cascade= CascadeType.MERGE)
 	@JoinColumn(name = "DATA_MOVEMENT_INTERFACE_ID")
 	private GridftpDataMovement gridftpDataMovement;
-	
-	public String getEndpoint() {
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+
+    public String getEndpoint() {
 		return endpoint;
 	}
 	

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionInterface.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionInterface.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionInterface.java
index d8114c6..2b89ee7 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionInterface.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionInterface.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -57,8 +58,31 @@ public class JobSubmissionInterface implements Serializable {
 	
 	@Column(name = "PRIORITY_ORDER")
 	private int priorityOrder;
-	
-	public String getJobSubmissionInterfaceId() {
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+
+    public String getJobSubmissionInterfaceId() {
 		return jobSubmissionInterfaceId;
 	}
 	

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocol.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocol.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocol.java
index 3b1915c..d913e58 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocol.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocol.java
@@ -1,77 +1,77 @@
-/*
- *
- * 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 = "JOB_SUBMISSION_PROTOCOL")
-@IdClass(JobSubmissionProtocolPK.class)
-public class JobSubmissionProtocol implements Serializable {
-    @Id
-    @Column(name = "RESOURCE_ID")
-    private String resourceID;
-    @Id
-    @Column(name = "SUBMISSION_ID")
-    private String submissionID;
-
-    @Id
-    @Column(name = "JOB_TYPE")
-    private String jobType;
-
-    @ManyToOne(cascade= CascadeType.MERGE)
-    @JoinColumn(name = "RESOURCE_ID")
-    private ComputeResource computeResource;
-
-    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 getJobType() {
-        return jobType;
-    }
-
-    public void setJobType(String jobType) {
-        this.jobType = jobType;
-    }
-
-    public ComputeResource getComputeResource() {
-        return computeResource;
-    }
-
-    public void setComputeResource(ComputeResource computeResource) {
-        this.computeResource = computeResource;
-    }
-}
+///*
+// *
+// * 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 = "JOB_SUBMISSION_PROTOCOL")
+//@IdClass(JobSubmissionProtocolPK.class)
+//public class JobSubmissionProtocol implements Serializable {
+//    @Id
+//    @Column(name = "RESOURCE_ID")
+//    private String resourceID;
+//    @Id
+//    @Column(name = "SUBMISSION_ID")
+//    private String submissionID;
+//
+//    @Id
+//    @Column(name = "JOB_TYPE")
+//    private String jobType;
+//
+//    @ManyToOne(cascade= CascadeType.MERGE)
+//    @JoinColumn(name = "RESOURCE_ID")
+//    private ComputeResource computeResource;
+//
+//    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 getJobType() {
+//        return jobType;
+//    }
+//
+//    public void setJobType(String jobType) {
+//        this.jobType = jobType;
+//    }
+//
+//    public ComputeResource getComputeResource() {
+//        return computeResource;
+//    }
+//
+//    public void setComputeResource(ComputeResource computeResource) {
+//        this.computeResource = computeResource;
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocolPK.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocolPK.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocolPK.java
index 04f6ed0..aefe87a 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocolPK.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/JobSubmissionProtocolPK.java
@@ -1,74 +1,74 @@
-/*
- *
- * 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 JobSubmissionProtocolPK implements Serializable {
-    private String resourceID;
-    private String submissionID;
-    private String jobType;
-
-    public JobSubmissionProtocolPK(String resourceID, String submissionID, String jobType) {
-        this.resourceID = resourceID;
-        this.submissionID = submissionID;
-        this.jobType = jobType;
-    }
-
-    public JobSubmissionProtocolPK() {
-        ;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return 1;
-    }
-
-    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 getJobType() {
-        return jobType;
-    }
-
-    public void setJobType(String jobType) {
-        this.jobType = jobType;
-    }
-}
+///*
+// *
+// * 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 JobSubmissionProtocolPK implements Serializable {
+//    private String resourceID;
+//    private String submissionID;
+//    private String jobType;
+//
+//    public JobSubmissionProtocolPK(String resourceID, String submissionID, String jobType) {
+//        this.resourceID = resourceID;
+//        this.submissionID = submissionID;
+//        this.jobType = jobType;
+//    }
+//
+//    public JobSubmissionProtocolPK() {
+//        ;
+//    }
+//
+//    @Override
+//    public boolean equals(Object o) {
+//        return false;
+//    }
+//
+//    @Override
+//    public int hashCode() {
+//        return 1;
+//    }
+//
+//    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 getJobType() {
+//        return jobType;
+//    }
+//
+//    public void setJobType(String jobType) {
+//        this.jobType = jobType;
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/LocalSubmission.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/LocalSubmission.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/LocalSubmission.java
index 0378343..01df76b 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/LocalSubmission.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/LocalSubmission.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -48,8 +49,30 @@ public class LocalSubmission implements Serializable {
 	@Id
 	@Column(name = "JOB_SUBMISSION_INTERFACE_ID")
 	private String jobSubmissionInterfaceId;
-	
-	public String getResourceJobManagerId() {
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getResourceJobManagerId() {
 		return resourceJobManagerId;
 	}
 	

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ResourceJobManager.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ResourceJobManager.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ResourceJobManager.java
index ab485f8..65b0f3c 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ResourceJobManager.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ResourceJobManager.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -47,6 +48,28 @@ public class ResourceJobManager implements Serializable {
 	
 	@Column(name = "RESOURCE_JOB_MANAGER_TYPE")
 	private String resourceJobManagerType;
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
 	
 	public String getResourceJobManagerId() {
 		return resourceJobManagerId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ScpDataMovement.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ScpDataMovement.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ScpDataMovement.java
index 35317d2..3cf038b 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ScpDataMovement.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/ScpDataMovement.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -50,8 +51,31 @@ public class ScpDataMovement implements Serializable {
 	
 	@Column(name = "SSH_PORT")
 	private int sshPort;
-	
-	public String getQueueDescription() {
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+
+    public String getQueueDescription() {
 		return queueDescription;
 	}
 	

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
index bd29f7b..fc72881 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
@@ -22,6 +22,7 @@
 package org.apache.aiaravata.application.catalog.data.model;
 
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -57,8 +58,31 @@ public class SshJobSubmission implements Serializable {
 	
 	@Column(name = "SSH_PORT")
 	private int sshPort;
-	
-	public String getResourceJobManagerId() {
+
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+
+    public String getResourceJobManagerId() {
 		return resourceJobManagerId;
 	}
 	

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/Workflow.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/Workflow.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/Workflow.java
index 585b2ad..908c6fc 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/Workflow.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/Workflow.java
@@ -25,6 +25,7 @@ import org.apache.openjpa.persistence.DataCache;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.sql.Timestamp;
 
 @DataCache
 @Entity
@@ -45,6 +46,28 @@ public class Workflow implements Serializable {
     @Column(name = "WF_TEMPLATE_ID")
     private String wfTemplateId;
 
+    @Column(name = "CREATION_TIME")
+    private Timestamp creationTime;
+
+    @Column(name = "UPDATE_TIME")
+    private Timestamp updateTime;
+
+    public Timestamp getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Timestamp creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
     public String getWfName() {
         return wfName;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppDeploymentResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppDeploymentResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppDeploymentResource.java
index 0f43bcb..6dfd69b 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppDeploymentResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppDeploymentResource.java
@@ -34,6 +34,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -47,6 +48,24 @@ public class AppDeploymentResource extends AbstractResource {
     private String appDes;
     private ComputeResourceResource hostResource;
     private AppModuleResource moduleResource;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 
     public String getDeploymentId() {
         return deploymentId;
@@ -352,6 +371,7 @@ public class AppDeploymentResource extends AbstractResource {
                 existingDeployment.setHostID(hostId);
                 existingDeployment.setExecutablePath(executablePath);
                 existingDeployment.setParallelism(parallelism);
+                existingDeployment.setUpdateTime(updatedTime);
                 em.merge(existingDeployment);
             }else {
                 ApplicationDeployment deployment  = new ApplicationDeployment();
@@ -363,6 +383,7 @@ public class AppDeploymentResource extends AbstractResource {
                 deployment.setComputeResource(computeHost);
                 deployment.setExecutablePath(executablePath);
                 deployment.setParallelism(parallelism);
+                deployment.setCreationTime(createdTime);
                 em.persist(deployment);
             }
             em.getTransaction().commit();

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppInterfaceResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppInterfaceResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppInterfaceResource.java
index ca88764..d013a9f 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppInterfaceResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppInterfaceResource.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -40,6 +41,24 @@ public class AppInterfaceResource extends AbstractResource {
     private String interfaceId;
     private String appName;
     private String appDescription;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 
     public String getInterfaceId() {
         return interfaceId;
@@ -283,12 +302,14 @@ public class AppInterfaceResource extends AbstractResource {
             if (existigAppInterface !=  null){
                 existigAppInterface.setAppName(appName);
                 existigAppInterface.setAppDescription(appDescription);
+                existigAppInterface.setUpdateTime(updatedTime);
                 em.merge(existigAppInterface);
             }else {
                 ApplicationInterface applicationInterface = new ApplicationInterface();
                 applicationInterface.setInterfaceID(interfaceId);
                 applicationInterface.setAppName(appName);
                 applicationInterface.setAppDescription(appDescription);
+                applicationInterface.setCreationTime(createdTime);
                 em.persist(applicationInterface);
             }
             em.getTransaction().commit();

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleResource.java
index adc2fa0..3da66c5 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleResource.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -41,6 +42,24 @@ public class AppModuleResource extends AbstractResource {
     private String moduleName;
     private String moduleVersion;
     private String moduleDesc;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 
     public String getModuleId() {
         return moduleId;
@@ -237,6 +256,7 @@ public class AppModuleResource extends AbstractResource {
                 existingModule.setModuleName(moduleName);
                 existingModule.setModuleVersion(moduleVersion);
                 existingModule.setModuleDesc(moduleDesc);
+                existingModule.setUpdateTime(updatedTime);
                 em.merge(existingModule);
             }else {
                 ApplicationModule applicationModule = new ApplicationModule();
@@ -244,6 +264,7 @@ public class AppModuleResource extends AbstractResource {
                 applicationModule.setModuleName(moduleName);
                 applicationModule.setModuleVersion(moduleVersion);
                 applicationModule.setModuleDesc(moduleDesc);
+                applicationModule.setCreationTime(createdTime);
                 em.persist(applicationModule);
             }
             em.getTransaction().commit();

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ComputeResourceResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ComputeResourceResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ComputeResourceResource.java
index 51a1fa1..2ecaeb6 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ComputeResourceResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ComputeResourceResource.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -40,8 +41,26 @@ public class ComputeResourceResource extends AbstractResource {
 	private String resourceDescription;
 	private String resourceId;
 	private String hostName;
-	
-	@Override
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
+
+    @Override
 	public void remove(Object identifier) throws AppCatalogException {
 		EntityManager em = null;
 		try {
@@ -246,8 +265,10 @@ public class ComputeResourceResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingComputeResource == null) {
 				computeResource = new ComputeResource();
+                computeResource.setCreationTime(createdTime);
 			} else {
 				computeResource = existingComputeResource;
+                computeResource.setUpdateTime(updatedTime);
 			}
 			computeResource.setResourceDescription(getResourceDescription());
 			computeResource.setResourceId(getResourceId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementInterfaceResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementInterfaceResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementInterfaceResource.java
index 37b8a9d..c9016ef 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementInterfaceResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/DataMovementInterfaceResource.java
@@ -21,6 +21,7 @@
 
 package org.apache.aiaravata.application.catalog.data.resources;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -47,6 +48,24 @@ public class DataMovementInterfaceResource extends AbstractResource {
 	private String dataMovementProtocol;
 	private String dataMovementInterfaceId;
 	private int priorityOrder;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 	
 	@Override
 	public void remove(Object identifier) throws AppCatalogException {
@@ -218,8 +237,10 @@ public class DataMovementInterfaceResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingDataMovementInterface == null) {
 				dataMovementInterface = new DataMovementInterface();
+                dataMovementInterface.setCreationTime(createdTime);
 			} else {
 				dataMovementInterface = existingDataMovementInterface;
+                dataMovementInterface.setUpdateTime(updatedTime);
 			}
 			dataMovementInterface.setComputeResourceId(getComputeResourceId());
 			ComputeResource computeResource = em.find(ComputeResource.class, getComputeResourceId());


[2/3] adding created time and update time to app catalog

Posted by ch...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/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 db7080d..6a5b88e 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
@@ -1,360 +1,360 @@
-/**
- * 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.resources;
-
-import org.airavata.appcatalog.cpi.AppCatalogException;
-import org.apache.aiaravata.application.catalog.data.model.ComputeResource;
-import org.apache.aiaravata.application.catalog.data.model.DataMovementProtocol;
-import org.apache.aiaravata.application.catalog.data.model.DataMovementProtocolPK;
-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 DataMovementProtocolResource extends AbstractResource {
-
-    private final static Logger logger = LoggerFactory.getLogger(DataMovementProtocolResource.class);
-
-    private String resourceID;
-    private String dataMoveID;
-    private String dataMoveType;
-    private ComputeResourceResource computeHostResource;
-
-    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(DATA_MOVEMENT_PROTOCOL);
-            generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_TYPE, ids.get(DataMoveProtocolConstants.DATA_MOVE_TYPE));
-            generator.setParameter(DataMoveProtocolConstants.RESOURCE_ID, ids.get(DataMoveProtocolConstants.RESOURCE_ID));
-            generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_ID, ids.get(DataMoveProtocolConstants.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(DATA_MOVEMENT_PROTOCOL);
-            generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_TYPE, ids.get(DataMoveProtocolConstants.DATA_MOVE_TYPE));
-            generator.setParameter(DataMoveProtocolConstants.RESOURCE_ID, ids.get(DataMoveProtocolConstants.RESOURCE_ID));
-            generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_ID, ids.get(DataMoveProtocolConstants.DATA_MOVE_ID));
-            Query q = generator.selectQuery(em);
-            DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) q.getSingleResult();
-            DataMovementProtocolResource dataMovementProtocolResource =
-                    (DataMovementProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_PROTOCOL, dataMovementProtocol);
-            em.getTransaction().commit();
-            em.close();
-            return dataMovementProtocolResource;
-        } 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> dataMoveProtocolResourcesList = new ArrayList<Resource>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(DATA_MOVEMENT_PROTOCOL);
-            List results;
-            if (fieldName.equals(DataMoveProtocolConstants.RESOURCE_ID)) {
-                generator.setParameter(DataMoveProtocolConstants.RESOURCE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
-                        DataMovementProtocolResource dataMovementProtocolResource =
-                                (DataMovementProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_PROTOCOL, dataMovementProtocol);
-                        dataMoveProtocolResourcesList.add(dataMovementProtocolResource);
-                    }
-                }
-            } else if (fieldName.equals(DataMoveProtocolConstants.DATA_MOVE_TYPE)) {
-                generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_TYPE, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
-                        DataMovementProtocolResource dataMovementProtocolResource =
-                                (DataMovementProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_PROTOCOL, dataMovementProtocol);
-                        dataMoveProtocolResourcesList.add(dataMovementProtocolResource);
-                    }
-                }
-            } else if (fieldName.equals(DataMoveProtocolConstants.DATA_MOVE_ID)) {
-                generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
-                        DataMovementProtocolResource dataMovementProtocolResource =
-                                (DataMovementProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_PROTOCOL, dataMovementProtocol);
-                        dataMoveProtocolResourcesList.add(dataMovementProtocolResource);
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                em.close();
-                logger.error("Unsupported field name for Data Movement Protocol Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for Data Movement Protocol 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 dataMoveProtocolResourcesList;
-    }
-
-    @Override
-    public List<Resource> getAll() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-    public List<String> getAllIds() throws AppCatalogException {
-        return null;
-    }
-
-    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
-        List<String> dataMovementProtocolIDs = new ArrayList<String>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(DATA_MOVEMENT_PROTOCOL);
-            List results;
-            if (fieldName.equals(DataMoveProtocolConstants.DATA_MOVE_ID)) {
-                generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
-                        dataMovementProtocolIDs.add(dataMovementProtocol.getDataMoveID());
-                    }
-                }
-            } else if (fieldName.equals(DataMoveProtocolConstants.RESOURCE_ID)) {
-                generator.setParameter(DataMoveProtocolConstants.RESOURCE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
-                        dataMovementProtocolIDs.add(dataMovementProtocol.getDataMoveID());
-                    }
-                }
-            } else if (fieldName.equals(DataMoveProtocolConstants.DATA_MOVE_TYPE)) {
-                generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_TYPE, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
-                        dataMovementProtocolIDs.add(dataMovementProtocol.getDataMoveID());
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                em.close();
-                logger.error("Unsupported field name for Data Move Protocol resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for Data Move Protocol 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 dataMovementProtocolIDs;
-    }
-
-    public void save() throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            DataMovementProtocol existingDataMovementProtocol = em.find(DataMovementProtocol.class, new DataMovementProtocolPK(resourceID, dataMoveID, dataMoveType));
-            em.close();
-
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            if (existingDataMovementProtocol != null) {
-                existingDataMovementProtocol.setDataMoveID(dataMoveType);
-                existingDataMovementProtocol.setDataMoveID(dataMoveID);
-                ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
-                existingDataMovementProtocol.setComputeResource(computeResource);
-                existingDataMovementProtocol.setResourceID(resourceID);
-                em.merge(existingDataMovementProtocol);
-            } else {
-                DataMovementProtocol dataMovementProtocol = new DataMovementProtocol();
-                dataMovementProtocol.setDataMoveType(dataMoveType);
-                dataMovementProtocol.setDataMoveID(dataMoveID);
-                dataMovementProtocol.setResourceID(resourceID);
-                ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
-                dataMovementProtocol.setComputeResource(computeResource);
-                em.persist(dataMovementProtocol);
-            }
-            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();
-            DataMovementProtocol dataMovementProtocol = em.find(DataMovementProtocol.class, new DataMovementProtocolPK(
-                    ids.get(DataMoveProtocolConstants.RESOURCE_ID),
-                    ids.get(DataMoveProtocolConstants.DATA_MOVE_ID), ids.get(DataMoveProtocolConstants.DATA_MOVE_TYPE)));
-
-            em.close();
-            return dataMovementProtocol != 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 getDataMoveID() {
-        return dataMoveID;
-    }
-
-    public void setDataMoveID(String dataMoveID) {
-        this.dataMoveID = dataMoveID;
-    }
-
-    public String getDataMoveType() {
-        return dataMoveType;
-    }
-
-    public void setDataMoveType(String dataMoveType) {
-        this.dataMoveType = dataMoveType;
-    }
-
-    public ComputeResourceResource getComputeHostResource() {
-        return computeHostResource;
-    }
-
-    public void setComputeHostResource(ComputeResourceResource computeHostResource) {
-        this.computeHostResource = computeHostResource;
-    }
-}
+///**
+// * 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.resources;
+//
+//import org.airavata.appcatalog.cpi.AppCatalogException;
+//import org.apache.aiaravata.application.catalog.data.model.ComputeResource;
+//import org.apache.aiaravata.application.catalog.data.model.DataMovementProtocol;
+//import org.apache.aiaravata.application.catalog.data.model.DataMovementProtocolPK;
+//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 DataMovementProtocolResource extends AbstractResource {
+//
+//    private final static Logger logger = LoggerFactory.getLogger(DataMovementProtocolResource.class);
+//
+//    private String resourceID;
+//    private String dataMoveID;
+//    private String dataMoveType;
+//    private ComputeResourceResource computeHostResource;
+//
+//    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(DATA_MOVEMENT_PROTOCOL);
+//            generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_TYPE, ids.get(DataMoveProtocolConstants.DATA_MOVE_TYPE));
+//            generator.setParameter(DataMoveProtocolConstants.RESOURCE_ID, ids.get(DataMoveProtocolConstants.RESOURCE_ID));
+//            generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_ID, ids.get(DataMoveProtocolConstants.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(DATA_MOVEMENT_PROTOCOL);
+//            generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_TYPE, ids.get(DataMoveProtocolConstants.DATA_MOVE_TYPE));
+//            generator.setParameter(DataMoveProtocolConstants.RESOURCE_ID, ids.get(DataMoveProtocolConstants.RESOURCE_ID));
+//            generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_ID, ids.get(DataMoveProtocolConstants.DATA_MOVE_ID));
+//            Query q = generator.selectQuery(em);
+//            DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) q.getSingleResult();
+//            DataMovementProtocolResource dataMovementProtocolResource =
+//                    (DataMovementProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_PROTOCOL, dataMovementProtocol);
+//            em.getTransaction().commit();
+//            em.close();
+//            return dataMovementProtocolResource;
+//        } 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> dataMoveProtocolResourcesList = new ArrayList<Resource>();
+//        EntityManager em = null;
+//        try {
+//            em = AppCatalogJPAUtils.getEntityManager();
+//            em.getTransaction().begin();
+//            Query q;
+//            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(DATA_MOVEMENT_PROTOCOL);
+//            List results;
+//            if (fieldName.equals(DataMoveProtocolConstants.RESOURCE_ID)) {
+//                generator.setParameter(DataMoveProtocolConstants.RESOURCE_ID, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
+//                        DataMovementProtocolResource dataMovementProtocolResource =
+//                                (DataMovementProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_PROTOCOL, dataMovementProtocol);
+//                        dataMoveProtocolResourcesList.add(dataMovementProtocolResource);
+//                    }
+//                }
+//            } else if (fieldName.equals(DataMoveProtocolConstants.DATA_MOVE_TYPE)) {
+//                generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_TYPE, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
+//                        DataMovementProtocolResource dataMovementProtocolResource =
+//                                (DataMovementProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_PROTOCOL, dataMovementProtocol);
+//                        dataMoveProtocolResourcesList.add(dataMovementProtocolResource);
+//                    }
+//                }
+//            } else if (fieldName.equals(DataMoveProtocolConstants.DATA_MOVE_ID)) {
+//                generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_ID, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
+//                        DataMovementProtocolResource dataMovementProtocolResource =
+//                                (DataMovementProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_PROTOCOL, dataMovementProtocol);
+//                        dataMoveProtocolResourcesList.add(dataMovementProtocolResource);
+//                    }
+//                }
+//            } else {
+//                em.getTransaction().commit();
+//                em.close();
+//                logger.error("Unsupported field name for Data Movement Protocol Resource.", new IllegalArgumentException());
+//                throw new IllegalArgumentException("Unsupported field name for Data Movement Protocol 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 dataMoveProtocolResourcesList;
+//    }
+//
+//    @Override
+//    public List<Resource> getAll() throws AppCatalogException {
+//        return null;
+//    }
+//
+//    @Override
+//    public List<String> getAllIds() throws AppCatalogException {
+//        return null;
+//    }
+//
+//    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
+//        List<String> dataMovementProtocolIDs = new ArrayList<String>();
+//        EntityManager em = null;
+//        try {
+//            em = AppCatalogJPAUtils.getEntityManager();
+//            em.getTransaction().begin();
+//            Query q;
+//            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(DATA_MOVEMENT_PROTOCOL);
+//            List results;
+//            if (fieldName.equals(DataMoveProtocolConstants.DATA_MOVE_ID)) {
+//                generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_ID, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
+//                        dataMovementProtocolIDs.add(dataMovementProtocol.getDataMoveID());
+//                    }
+//                }
+//            } else if (fieldName.equals(DataMoveProtocolConstants.RESOURCE_ID)) {
+//                generator.setParameter(DataMoveProtocolConstants.RESOURCE_ID, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
+//                        dataMovementProtocolIDs.add(dataMovementProtocol.getDataMoveID());
+//                    }
+//                }
+//            } else if (fieldName.equals(DataMoveProtocolConstants.DATA_MOVE_TYPE)) {
+//                generator.setParameter(DataMoveProtocolConstants.DATA_MOVE_TYPE, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        DataMovementProtocol dataMovementProtocol = (DataMovementProtocol) result;
+//                        dataMovementProtocolIDs.add(dataMovementProtocol.getDataMoveID());
+//                    }
+//                }
+//            } else {
+//                em.getTransaction().commit();
+//                em.close();
+//                logger.error("Unsupported field name for Data Move Protocol resource.", new IllegalArgumentException());
+//                throw new IllegalArgumentException("Unsupported field name for Data Move Protocol 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 dataMovementProtocolIDs;
+//    }
+//
+//    public void save() throws AppCatalogException {
+//        EntityManager em = null;
+//        try {
+//            em = AppCatalogJPAUtils.getEntityManager();
+//            DataMovementProtocol existingDataMovementProtocol = em.find(DataMovementProtocol.class, new DataMovementProtocolPK(resourceID, dataMoveID, dataMoveType));
+//            em.close();
+//
+//            em = AppCatalogJPAUtils.getEntityManager();
+//            em.getTransaction().begin();
+//            if (existingDataMovementProtocol != null) {
+//                existingDataMovementProtocol.setDataMoveID(dataMoveType);
+//                existingDataMovementProtocol.setDataMoveID(dataMoveID);
+//                ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
+//                existingDataMovementProtocol.setComputeResource(computeResource);
+//                existingDataMovementProtocol.setResourceID(resourceID);
+//                em.merge(existingDataMovementProtocol);
+//            } else {
+//                DataMovementProtocol dataMovementProtocol = new DataMovementProtocol();
+//                dataMovementProtocol.setDataMoveType(dataMoveType);
+//                dataMovementProtocol.setDataMoveID(dataMoveID);
+//                dataMovementProtocol.setResourceID(resourceID);
+//                ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
+//                dataMovementProtocol.setComputeResource(computeResource);
+//                em.persist(dataMovementProtocol);
+//            }
+//            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();
+//            DataMovementProtocol dataMovementProtocol = em.find(DataMovementProtocol.class, new DataMovementProtocolPK(
+//                    ids.get(DataMoveProtocolConstants.RESOURCE_ID),
+//                    ids.get(DataMoveProtocolConstants.DATA_MOVE_ID), ids.get(DataMoveProtocolConstants.DATA_MOVE_TYPE)));
+//
+//            em.close();
+//            return dataMovementProtocol != 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 getDataMoveID() {
+//        return dataMoveID;
+//    }
+//
+//    public void setDataMoveID(String dataMoveID) {
+//        this.dataMoveID = dataMoveID;
+//    }
+//
+//    public String getDataMoveType() {
+//        return dataMoveType;
+//    }
+//
+//    public void setDataMoveType(String dataMoveType) {
+//        this.dataMoveType = dataMoveType;
+//    }
+//
+//    public ComputeResourceResource getComputeHostResource() {
+//        return computeHostResource;
+//    }
+//
+//    public void setComputeHostResource(ComputeResourceResource computeHostResource) {
+//        this.computeHostResource = computeHostResource;
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GatewayProfileResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GatewayProfileResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GatewayProfileResource.java
index 47c1c8a..3fe339a 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GatewayProfileResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GatewayProfileResource.java
@@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -39,6 +40,24 @@ public class GatewayProfileResource extends AbstractResource {
     private String gatewayID;
     private String gatewayName;
     private String gatewayDesc;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 
     public void remove(Object identifier) throws AppCatalogException {
         EntityManager em = null;
@@ -220,12 +239,14 @@ public class GatewayProfileResource extends AbstractResource {
             if (existingGatewayProfile != null) {
                 existingGatewayProfile.setGatewayDesc(gatewayDesc);
                 existingGatewayProfile.setGatewayName(gatewayName);
+                existingGatewayProfile.setUpdateTime(updatedTime);
                 em.merge(existingGatewayProfile);
             } else {
                 GatewayProfile gatewayProfile = new GatewayProfile();
                 gatewayProfile.setGatewayID(gatewayID);
                 gatewayProfile.setGatewayName(gatewayName);
                 gatewayProfile.setGatewayDesc(gatewayDesc);
+                gatewayProfile.setCreationTime(createdTime);
                 em.persist(gatewayProfile);
             }
             em.getTransaction().commit();

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpDataMovementResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpDataMovementResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpDataMovementResource.java
index 2b350c9..70b9af9 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpDataMovementResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpDataMovementResource.java
@@ -19,6 +19,7 @@
 
 package org.apache.aiaravata.application.catalog.data.resources;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -38,6 +39,24 @@ public class GridftpDataMovementResource extends AbstractResource {
 	private final static Logger logger = LoggerFactory.getLogger(GridftpDataMovementResource.class);
 	private String dataMovementInterfaceId;
 	private String securityProtocol;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 	
 	@Override
 	public void remove(Object identifier) throws AppCatalogException {
@@ -193,8 +212,10 @@ public class GridftpDataMovementResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingGridftpDataMovement == null) {
 				gridftpDataMovement = new GridftpDataMovement();
+                gridftpDataMovement.setCreationTime(createdTime);
 			} else {
 				gridftpDataMovement = existingGridftpDataMovement;
+                gridftpDataMovement.setUpdateTime(updatedTime);
 			}
 			gridftpDataMovement.setDataMovementInterfaceId(getDataMovementInterfaceId());
 			gridftpDataMovement.setSecurityProtocol(getSecurityProtocol());

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpEndpointResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpEndpointResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpEndpointResource.java
index d325fdf..8364711 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpEndpointResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/GridftpEndpointResource.java
@@ -19,6 +19,7 @@
 
 package org.apache.aiaravata.application.catalog.data.resources;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -43,6 +44,24 @@ public class GridftpEndpointResource extends AbstractResource {
 	private String endpoint;
 	private String dataMovementInterfaceId;
 	private GridftpDataMovementResource gridftpDataMovementResource;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 	
 	@Override
 	public void remove(Object identifier) throws AppCatalogException {
@@ -214,8 +233,10 @@ public class GridftpEndpointResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingGridftpEndpoint == null) {
 				gridftpEndpoint = new GridftpEndpoint();
+                gridftpEndpoint.setCreationTime(createdTime);
 			} else {
 				gridftpEndpoint = existingGridftpEndpoint;
+                gridftpEndpoint.setUpdateTime(updatedTime);
 			}
 			gridftpEndpoint.setEndpoint(getEndpoint());
 			gridftpEndpoint.setDataMovementInterfaceId(getDataMovementInterfaceId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionInterfaceResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionInterfaceResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionInterfaceResource.java
index 745dd93..8654789 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionInterfaceResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionInterfaceResource.java
@@ -21,6 +21,7 @@
 
 package org.apache.aiaravata.application.catalog.data.resources;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -47,6 +48,24 @@ public class JobSubmissionInterfaceResource extends AbstractResource {
 	private ComputeResourceResource computeHostResource;
 	private String jobSubmissionProtocol;
 	private int priorityOrder;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 	
 	@Override
 	public void remove(Object identifier) throws AppCatalogException {
@@ -218,8 +237,10 @@ public class JobSubmissionInterfaceResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingJobSubmissionInterface == null) {
 				jobSubmissionInterface = new JobSubmissionInterface();
+                jobSubmissionInterface.setCreationTime(createdTime);
 			} else {
 				jobSubmissionInterface = existingJobSubmissionInterface;
+                jobSubmissionInterface.setUpdateTime(updatedTime);
 			}
 			jobSubmissionInterface.setJobSubmissionInterfaceId(getJobSubmissionInterfaceId());
 			jobSubmissionInterface.setComputeResourceId(getComputeResourceId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionProtocolResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionProtocolResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionProtocolResource.java
index 6c965a2..d6134af 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionProtocolResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/JobSubmissionProtocolResource.java
@@ -1,359 +1,359 @@
-/**
- * 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.resources;
-
-import org.airavata.appcatalog.cpi.AppCatalogException;
-import org.apache.aiaravata.application.catalog.data.model.ComputeResource;
-import org.apache.aiaravata.application.catalog.data.model.JobSubmissionProtocol;
-import org.apache.aiaravata.application.catalog.data.model.JobSubmissionProtocolPK;
-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 JobSubmissionProtocolResource extends AbstractResource {
-
-    private final static Logger logger = LoggerFactory.getLogger(JobSubmissionProtocolResource.class);
-
-    private String resourceID;
-    private String submissionID;
-    private String jobType;
-    private ComputeResourceResource computeHostResource;
-
-    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(JOB_SUBMISSION_PROTOCOL);
-            generator.setParameter(JobSubmissionProtocolConstants.RESOURCE_ID, ids.get(JobSubmissionProtocolConstants.RESOURCE_ID));
-            generator.setParameter(JobSubmissionProtocolConstants.SUBMISSION_ID, ids.get(JobSubmissionProtocolConstants.SUBMISSION_ID));
-            generator.setParameter(JobSubmissionProtocolConstants.JOB_TYPE, ids.get(JobSubmissionProtocolConstants.JOB_TYPE));
-            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(JOB_SUBMISSION_PROTOCOL);
-            generator.setParameter(JobSubmissionProtocolConstants.RESOURCE_ID, ids.get(JobSubmissionProtocolConstants.RESOURCE_ID));
-            generator.setParameter(JobSubmissionProtocolConstants.SUBMISSION_ID, ids.get(JobSubmissionProtocolConstants.SUBMISSION_ID));
-            generator.setParameter(JobSubmissionProtocolConstants.JOB_TYPE, ids.get(JobSubmissionProtocolConstants.JOB_TYPE));
-            Query q = generator.selectQuery(em);
-            JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) q.getSingleResult();
-            JobSubmissionProtocolResource jobSubmissionProtocolResource =
-                    (JobSubmissionProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.JOB_SUBMISSION_PROTOCOL, jobSubmissionProtocol);
-            em.getTransaction().commit();
-            em.close();
-            return jobSubmissionProtocolResource;
-        } 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> jobSubmissionProtocolResourceList = new ArrayList<Resource>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(JOB_SUBMISSION_PROTOCOL);
-            List results;
-            if (fieldName.equals(JobSubmissionProtocolConstants.SUBMISSION_ID)) {
-                generator.setParameter(JobSubmissionProtocolConstants.SUBMISSION_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
-                        JobSubmissionProtocolResource jobSubmissionProtocolResource =
-                                (JobSubmissionProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.JOB_SUBMISSION_PROTOCOL, jobSubmissionProtocol);
-                        jobSubmissionProtocolResourceList.add(jobSubmissionProtocolResource);
-                    }
-                }
-            } else if (fieldName.equals(JobSubmissionProtocolConstants.JOB_TYPE)) {
-                generator.setParameter(JobSubmissionProtocolConstants.JOB_TYPE, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
-                        JobSubmissionProtocolResource jobSubmissionProtocolResource =
-                                (JobSubmissionProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.JOB_SUBMISSION_PROTOCOL, jobSubmissionProtocol);
-                        jobSubmissionProtocolResourceList.add(jobSubmissionProtocolResource);
-                    }
-                }
-            } else if (fieldName.equals(HostIPAddressConstants.RESOURCE_ID)) {
-                generator.setParameter(HostIPAddressConstants.RESOURCE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
-                        JobSubmissionProtocolResource jobSubmissionProtocolResource =
-                                (JobSubmissionProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.JOB_SUBMISSION_PROTOCOL, jobSubmissionProtocol);
-                        jobSubmissionProtocolResourceList.add(jobSubmissionProtocolResource);
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                em.close();
-                logger.error("Unsupported field name for Job Submission Protocol Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for Job Submission Protocol 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 jobSubmissionProtocolResourceList;
-    }
-
-    @Override
-    public List<Resource> getAll() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-    public List<String> getAllIds() throws AppCatalogException {
-        return null;
-    }
-
-    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
-        List<String> jobSubmissionProtocolIDs = new ArrayList<String>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(JOB_SUBMISSION_PROTOCOL);
-            List results;
-            if (fieldName.equals(JobSubmissionProtocolConstants.SUBMISSION_ID)) {
-                generator.setParameter(JobSubmissionProtocolConstants.SUBMISSION_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
-                        jobSubmissionProtocolIDs.add(jobSubmissionProtocol.getSubmissionID());
-                    }
-                }
-            } else if (fieldName.equals(JobSubmissionProtocolConstants.RESOURCE_ID)) {
-                generator.setParameter(JobSubmissionProtocolConstants.RESOURCE_ID, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
-                        jobSubmissionProtocolIDs.add(jobSubmissionProtocol.getSubmissionID());
-                    }
-                }
-            } else if (fieldName.equals(JobSubmissionProtocolConstants.JOB_TYPE)) {
-                generator.setParameter(JobSubmissionProtocolConstants.JOB_TYPE, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
-                        jobSubmissionProtocolIDs.add(jobSubmissionProtocol.getSubmissionID());
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                em.close();
-                logger.error("Unsupported field name for Job Submission Protocol resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for Job Submission Protocol 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 jobSubmissionProtocolIDs;
-    }
-
-    public void save() throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            JobSubmissionProtocol existingJobSubProtocol = em.find(JobSubmissionProtocol.class, new JobSubmissionProtocolPK(resourceID, submissionID, jobType));
-            em.close();
-
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
-            if (existingJobSubProtocol != null) {
-                existingJobSubProtocol.setJobType(jobType);
-                existingJobSubProtocol.setSubmissionID(submissionID);
-                existingJobSubProtocol.setComputeResource(computeResource);
-                existingJobSubProtocol.setResourceID(resourceID);
-                em.merge(existingJobSubProtocol);
-            } else {
-                JobSubmissionProtocol jobSubmissionProtocol = new JobSubmissionProtocol();
-                jobSubmissionProtocol.setJobType(jobType);
-                jobSubmissionProtocol.setSubmissionID(submissionID);
-                jobSubmissionProtocol.setResourceID(resourceID);
-                jobSubmissionProtocol.setComputeResource(computeResource);
-                em.persist(jobSubmissionProtocol);
-            }
-            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();
-            JobSubmissionProtocol jobSubmissionProtocol = em.find(JobSubmissionProtocol.class, new JobSubmissionProtocolPK(ids.get(JobSubmissionProtocolConstants.RESOURCE_ID),
-                    ids.get(JobSubmissionProtocolConstants.SUBMISSION_ID), ids.get(JobSubmissionProtocolConstants.JOB_TYPE)));
-
-            em.close();
-            return jobSubmissionProtocol != 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 getJobType() {
-        return jobType;
-    }
-
-    public void setJobType(String jobType) {
-        this.jobType = jobType;
-    }
-
-    public ComputeResourceResource getComputeHostResource() {
-        return computeHostResource;
-    }
-
-    public void setComputeHostResource(ComputeResourceResource computeHostResource) {
-        this.computeHostResource = computeHostResource;
-    }
-}
+///**
+// * 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.resources;
+//
+//import org.airavata.appcatalog.cpi.AppCatalogException;
+//import org.apache.aiaravata.application.catalog.data.model.ComputeResource;
+//import org.apache.aiaravata.application.catalog.data.model.JobSubmissionProtocol;
+//import org.apache.aiaravata.application.catalog.data.model.JobSubmissionProtocolPK;
+//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 JobSubmissionProtocolResource extends AbstractResource {
+//
+//    private final static Logger logger = LoggerFactory.getLogger(JobSubmissionProtocolResource.class);
+//
+//    private String resourceID;
+//    private String submissionID;
+//    private String jobType;
+//    private ComputeResourceResource computeHostResource;
+//
+//    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(JOB_SUBMISSION_PROTOCOL);
+//            generator.setParameter(JobSubmissionProtocolConstants.RESOURCE_ID, ids.get(JobSubmissionProtocolConstants.RESOURCE_ID));
+//            generator.setParameter(JobSubmissionProtocolConstants.SUBMISSION_ID, ids.get(JobSubmissionProtocolConstants.SUBMISSION_ID));
+//            generator.setParameter(JobSubmissionProtocolConstants.JOB_TYPE, ids.get(JobSubmissionProtocolConstants.JOB_TYPE));
+//            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(JOB_SUBMISSION_PROTOCOL);
+//            generator.setParameter(JobSubmissionProtocolConstants.RESOURCE_ID, ids.get(JobSubmissionProtocolConstants.RESOURCE_ID));
+//            generator.setParameter(JobSubmissionProtocolConstants.SUBMISSION_ID, ids.get(JobSubmissionProtocolConstants.SUBMISSION_ID));
+//            generator.setParameter(JobSubmissionProtocolConstants.JOB_TYPE, ids.get(JobSubmissionProtocolConstants.JOB_TYPE));
+//            Query q = generator.selectQuery(em);
+//            JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) q.getSingleResult();
+//            JobSubmissionProtocolResource jobSubmissionProtocolResource =
+//                    (JobSubmissionProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.JOB_SUBMISSION_PROTOCOL, jobSubmissionProtocol);
+//            em.getTransaction().commit();
+//            em.close();
+//            return jobSubmissionProtocolResource;
+//        } 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> jobSubmissionProtocolResourceList = new ArrayList<Resource>();
+//        EntityManager em = null;
+//        try {
+//            em = AppCatalogJPAUtils.getEntityManager();
+//            em.getTransaction().begin();
+//            Query q;
+//            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(JOB_SUBMISSION_PROTOCOL);
+//            List results;
+//            if (fieldName.equals(JobSubmissionProtocolConstants.SUBMISSION_ID)) {
+//                generator.setParameter(JobSubmissionProtocolConstants.SUBMISSION_ID, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
+//                        JobSubmissionProtocolResource jobSubmissionProtocolResource =
+//                                (JobSubmissionProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.JOB_SUBMISSION_PROTOCOL, jobSubmissionProtocol);
+//                        jobSubmissionProtocolResourceList.add(jobSubmissionProtocolResource);
+//                    }
+//                }
+//            } else if (fieldName.equals(JobSubmissionProtocolConstants.JOB_TYPE)) {
+//                generator.setParameter(JobSubmissionProtocolConstants.JOB_TYPE, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
+//                        JobSubmissionProtocolResource jobSubmissionProtocolResource =
+//                                (JobSubmissionProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.JOB_SUBMISSION_PROTOCOL, jobSubmissionProtocol);
+//                        jobSubmissionProtocolResourceList.add(jobSubmissionProtocolResource);
+//                    }
+//                }
+//            } else if (fieldName.equals(HostIPAddressConstants.RESOURCE_ID)) {
+//                generator.setParameter(HostIPAddressConstants.RESOURCE_ID, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
+//                        JobSubmissionProtocolResource jobSubmissionProtocolResource =
+//                                (JobSubmissionProtocolResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.JOB_SUBMISSION_PROTOCOL, jobSubmissionProtocol);
+//                        jobSubmissionProtocolResourceList.add(jobSubmissionProtocolResource);
+//                    }
+//                }
+//            } else {
+//                em.getTransaction().commit();
+//                em.close();
+//                logger.error("Unsupported field name for Job Submission Protocol Resource.", new IllegalArgumentException());
+//                throw new IllegalArgumentException("Unsupported field name for Job Submission Protocol 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 jobSubmissionProtocolResourceList;
+//    }
+//
+//    @Override
+//    public List<Resource> getAll() throws AppCatalogException {
+//        return null;
+//    }
+//
+//    @Override
+//    public List<String> getAllIds() throws AppCatalogException {
+//        return null;
+//    }
+//
+//    public List<String> getIds(String fieldName, Object value) throws AppCatalogException {
+//        List<String> jobSubmissionProtocolIDs = new ArrayList<String>();
+//        EntityManager em = null;
+//        try {
+//            em = AppCatalogJPAUtils.getEntityManager();
+//            em.getTransaction().begin();
+//            Query q;
+//            AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(JOB_SUBMISSION_PROTOCOL);
+//            List results;
+//            if (fieldName.equals(JobSubmissionProtocolConstants.SUBMISSION_ID)) {
+//                generator.setParameter(JobSubmissionProtocolConstants.SUBMISSION_ID, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
+//                        jobSubmissionProtocolIDs.add(jobSubmissionProtocol.getSubmissionID());
+//                    }
+//                }
+//            } else if (fieldName.equals(JobSubmissionProtocolConstants.RESOURCE_ID)) {
+//                generator.setParameter(JobSubmissionProtocolConstants.RESOURCE_ID, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
+//                        jobSubmissionProtocolIDs.add(jobSubmissionProtocol.getSubmissionID());
+//                    }
+//                }
+//            } else if (fieldName.equals(JobSubmissionProtocolConstants.JOB_TYPE)) {
+//                generator.setParameter(JobSubmissionProtocolConstants.JOB_TYPE, value);
+//                q = generator.selectQuery(em);
+//                results = q.getResultList();
+//                if (results.size() != 0) {
+//                    for (Object result : results) {
+//                        JobSubmissionProtocol jobSubmissionProtocol = (JobSubmissionProtocol) result;
+//                        jobSubmissionProtocolIDs.add(jobSubmissionProtocol.getSubmissionID());
+//                    }
+//                }
+//            } else {
+//                em.getTransaction().commit();
+//                em.close();
+//                logger.error("Unsupported field name for Job Submission Protocol resource.", new IllegalArgumentException());
+//                throw new IllegalArgumentException("Unsupported field name for Job Submission Protocol 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 jobSubmissionProtocolIDs;
+//    }
+//
+//    public void save() throws AppCatalogException {
+//        EntityManager em = null;
+//        try {
+//            em = AppCatalogJPAUtils.getEntityManager();
+//            JobSubmissionProtocol existingJobSubProtocol = em.find(JobSubmissionProtocol.class, new JobSubmissionProtocolPK(resourceID, submissionID, jobType));
+//            em.close();
+//
+//            em = AppCatalogJPAUtils.getEntityManager();
+//            em.getTransaction().begin();
+//            ComputeResource computeResource = em.find(ComputeResource.class, resourceID);
+//            if (existingJobSubProtocol != null) {
+//                existingJobSubProtocol.setJobType(jobType);
+//                existingJobSubProtocol.setSubmissionID(submissionID);
+//                existingJobSubProtocol.setComputeResource(computeResource);
+//                existingJobSubProtocol.setResourceID(resourceID);
+//                em.merge(existingJobSubProtocol);
+//            } else {
+//                JobSubmissionProtocol jobSubmissionProtocol = new JobSubmissionProtocol();
+//                jobSubmissionProtocol.setJobType(jobType);
+//                jobSubmissionProtocol.setSubmissionID(submissionID);
+//                jobSubmissionProtocol.setResourceID(resourceID);
+//                jobSubmissionProtocol.setComputeResource(computeResource);
+//                em.persist(jobSubmissionProtocol);
+//            }
+//            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();
+//            JobSubmissionProtocol jobSubmissionProtocol = em.find(JobSubmissionProtocol.class, new JobSubmissionProtocolPK(ids.get(JobSubmissionProtocolConstants.RESOURCE_ID),
+//                    ids.get(JobSubmissionProtocolConstants.SUBMISSION_ID), ids.get(JobSubmissionProtocolConstants.JOB_TYPE)));
+//
+//            em.close();
+//            return jobSubmissionProtocol != 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 getJobType() {
+//        return jobType;
+//    }
+//
+//    public void setJobType(String jobType) {
+//        this.jobType = jobType;
+//    }
+//
+//    public ComputeResourceResource getComputeHostResource() {
+//        return computeHostResource;
+//    }
+//
+//    public void setComputeHostResource(ComputeResourceResource computeHostResource) {
+//        this.computeHostResource = computeHostResource;
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/LocalSubmissionResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/LocalSubmissionResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/LocalSubmissionResource.java
index 6774b04..e954fae 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/LocalSubmissionResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/LocalSubmissionResource.java
@@ -21,6 +21,7 @@
 
 package org.apache.aiaravata.application.catalog.data.resources;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -42,6 +43,24 @@ public class LocalSubmissionResource extends AbstractResource {
 	private String resourceJobManagerId;
 	private ResourceJobManagerResource resourceJobManagerResource;
 	private String jobSubmissionInterfaceId;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 	
 	@Override
 	public void remove(Object identifier) throws AppCatalogException {
@@ -197,8 +216,10 @@ public class LocalSubmissionResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingLocalSubmission == null) {
 				localSubmission = new LocalSubmission();
+                localSubmission.setCreationTime(createdTime);
 			} else {
 				localSubmission = existingLocalSubmission;
+                localSubmission.setUpdateTime(updatedTime);
 			}
 			localSubmission.setResourceJobManagerId(getResourceJobManagerId());
 			ResourceJobManager resourceJobManager = em.find(ResourceJobManager.class, getResourceJobManagerId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ResourceJobManagerResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ResourceJobManagerResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ResourceJobManagerResource.java
index 7ba0141..3addb71 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ResourceJobManagerResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ResourceJobManagerResource.java
@@ -21,6 +21,7 @@
 
 package org.apache.aiaravata.application.catalog.data.resources;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -42,6 +43,24 @@ public class ResourceJobManagerResource extends AbstractResource {
 	private String pushMonitoringEndpoint;
 	private String jobManagerBinPath;
 	private String resourceJobManagerType;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 	
 	@Override
 	public void remove(Object identifier) throws AppCatalogException {
@@ -197,8 +216,10 @@ public class ResourceJobManagerResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingResourceJobManager == null) {
 				resourceJobManager = new ResourceJobManager();
+                resourceJobManager.setCreationTime(createdTime);
 			} else {
 				resourceJobManager = existingResourceJobManager;
+                resourceJobManager.setUpdateTime(updatedTime);
 			}
 			resourceJobManager.setResourceJobManagerId(getResourceJobManagerId());
 			resourceJobManager.setPushMonitoringEndpoint(getPushMonitoringEndpoint());

http://git-wip-us.apache.org/repos/asf/airavata/blob/404913ac/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ScpDataMovementResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ScpDataMovementResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ScpDataMovementResource.java
index b1fccfe..8c995b6 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ScpDataMovementResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ScpDataMovementResource.java
@@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -40,6 +41,24 @@ public class ScpDataMovementResource extends AbstractResource {
 	private String securityProtocol;
 	private String alternativeScpHostname;
 	private int sshPort;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
 	
 	@Override
 	public void remove(Object identifier) throws AppCatalogException {
@@ -195,8 +214,10 @@ public class ScpDataMovementResource extends AbstractResource {
 			em.getTransaction().begin();
 			if (existingScpDataMovement == null) {
 				scpDataMovement = new ScpDataMovement();
+                scpDataMovement.setCreationTime(createdTime);
 			} else {
 				scpDataMovement = existingScpDataMovement;
+                scpDataMovement.setUpdateTime(updatedTime);
 			}
 			scpDataMovement.setQueueDescription(getQueueDescription());
 			scpDataMovement.setDataMovementInterfaceId(getDataMovementInterfaceId());