airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chath...@apache.org
Subject git commit: inital commit to registry cpi - AIRAVATA-1006
Date Wed, 19 Feb 2014 22:09:25 GMT
Repository: airavata
Updated Branches:
  refs/heads/master b1a6edc2a -> 985151fc1


inital commit to registry cpi - AIRAVATA-1006


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

Branch: refs/heads/master
Commit: 985151fc195dac2aed284087e3a72babac44542d
Parents: b1a6edc
Author: chathuri <chathuri@apache.org>
Authored: Wed Feb 19 17:09:18 2014 -0500
Committer: chathuri <chathuri@apache.org>
Committed: Wed Feb 19 17:09:18 2014 -0500

----------------------------------------------------------------------
 .../registry/jpa/impl/ExperimentRegistry.java   |  56 +--
 .../registry/jpa/impl/RegistryImpl.java         |  76 +++-
 .../registry/jpa/model/ErrorDetail.java         |  11 +
 .../registry/jpa/model/JobDetail.java           |  11 +
 .../registry/jpa/model/QosParam.java            |   2 +-
 .../jpa/resources/AbstractResource.java         |   1 +
 .../jpa/resources/ErrorDetailResource.java      |  11 +
 .../jpa/resources/ExperimentResource.java       |  70 +++-
 .../jpa/resources/JobDetailResource.java        |  81 +++-
 .../jpa/resources/TaskDetailResource.java       |  75 ++++
 .../registry/jpa/resources/Utils.java           |   2 +
 .../resources/WorkflowNodeDetailResource.java   |  52 +++
 .../jpa/utils/ThriftDataModelConversion.java    | 417 ++++++++++++++-----
 .../src/main/resources/registry-derby.sql       |  40 +-
 .../src/main/resources/registry-mysql.sql       |  40 +-
 .../airavata/registry/cpi/ChildDataType.java    |  21 +-
 .../apache/airavata/registry/cpi/DataType.java  |  23 +-
 .../airavata/registry/cpi/ParentDataType.java   |   2 +-
 .../airavata/registry/cpi/utils/Constants.java  |  20 +-
 .../airavata/registry/cpi/utils/StatusType.java |  10 +
 20 files changed, 801 insertions(+), 220 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index 894fd46..e642cea 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -23,8 +23,8 @@ package org.apache.airavata.persistance.registry.jpa.impl;
 
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.model.experiment.BasicMetadata;
-import org.apache.airavata.model.experiment.ConfigurationData;
+import org.apache.airavata.model.workspace.experiment.Experiment;
+import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
 import org.apache.airavata.persistance.registry.jpa.Resource;
 import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.resources.GatewayResource;
@@ -36,28 +36,28 @@ import org.slf4j.LoggerFactory;
 import java.sql.Timestamp;
 import java.util.*;
 
-//import org.apache.airavata.persistance.registry.jpa.utils.ThriftDataModelConversion;
+import org.apache.airavata.persistance.registry.jpa.utils.ThriftDataModelConversion;
 
 public class ExperimentRegistry {
     private GatewayRegistry gatewayRegistry;
     private UserReg userReg;
     private final static Logger logger = LoggerFactory.getLogger(ExperimentRegistry.class);
 
-    public String add(BasicMetadata basicMetadata) {
+    public String add(Experiment experiment) {
         String experimentID = "";
         try {
             gatewayRegistry = new GatewayRegistry();
             GatewayResource gateway = gatewayRegistry.getDefaultGateway();
             userReg = new UserReg();
             WorkerResource worker = userReg.getSysteUser();
-            experimentID = getExperimentID(basicMetadata.getExperimentName());
+            experimentID = getExperimentID(experiment.getName());
 //            ExperimentMetadataResource exBasicData = gateway.createBasicMetada(experimentID);
-//            exBasicData.setExperimentName(basicMetadata.getExperimentName());
-//            exBasicData.setDescription(basicMetadata.getExperimentDescription());
-//            exBasicData.setExecutionUser(basicMetadata.getUserName());
+//            exBasicData.setExperimentName(experiment.getExperimentName());
+//            exBasicData.setDescription(experiment.getExperimentDescription());
+//            exBasicData.setExecutionUser(experiment.getUserName());
 //            exBasicData.setSubmittedDate(getCurrentTimestamp());
-//            exBasicData.setShareExp(basicMetadata.isSetShareExperimentPublicly());
-//            ProjectResource projectResource = worker.getProject(basicMetadata.getProjectID());
+//            exBasicData.setShareExp(experiment.isSetShareExperimentPublicly());
+//            ProjectResource projectResource = worker.getProject(experiment.getProjectID());
 //            exBasicData.setProject(projectResource);
 //            exBasicData.save();
         } catch (ApplicationSettingsException e) {
@@ -66,13 +66,13 @@ public class ExperimentRegistry {
         return experimentID;
     }
 
-    public void add(ConfigurationData configurationData, String experimentID) {
+    public void add(UserConfigurationData configurationData, String experimentID) {
         try {
             gatewayRegistry = new GatewayRegistry();
             GatewayResource gateway = gatewayRegistry.getDefaultGateway();
 //            ExperimentMetadataResource exBasicData = (ExperimentMetadataResource) gateway.get(ResourceType.EXPERIMENT_METADATA, experimentID);
 //            ExperimentConfigDataResource exConfigData = (ExperimentConfigDataResource) exBasicData.create(ResourceType.EXPERIMENT_CONFIG_DATA);
-//            BasicMetadata updatedBasicMetadata = configurationData.getBasicMetadata();
+//            BasicMetadata updatedBasicMetadata = configurationData.getExperiment();
 //            if (updatedBasicMetadata != null) {
 //                if (updatedBasicMetadata.getExperimentName() != null && !updatedBasicMetadata.getExperimentName().equals("")) {
 //                    exBasicData.setExperimentName(updatedBasicMetadata.getExperimentName());
@@ -151,10 +151,10 @@ public class ExperimentRegistry {
     public void update(Object experimentObject, String expId) {
         try {
             gatewayRegistry = new GatewayRegistry();
-            if (experimentObject instanceof BasicMetadata) {
-                updateBasicData((BasicMetadata) experimentObject, expId);
-            } else if (experimentObject instanceof ConfigurationData) {
-                updateExpConfigData((ConfigurationData) experimentObject, expId);
+            if (experimentObject instanceof Experiment) {
+                updateBasicData((Experiment) experimentObject, expId);
+            } else if (experimentObject instanceof UserConfigurationData) {
+                updateExpConfigData((UserConfigurationData) experimentObject, expId);
             }
 
         } catch (ApplicationSettingsException e) {
@@ -260,7 +260,7 @@ public class ExperimentRegistry {
         }
     }
 
-    public void updateBasicData(BasicMetadata basicMetadata, String expId) throws ApplicationSettingsException {
+    public void updateBasicData(Experiment experiment, String expId) throws ApplicationSettingsException {
         GatewayResource gateway = gatewayRegistry.getDefaultGateway();
         WorkerResource worker = userReg.getSysteUser();
 //        ExperimentMetadataResource exBasicData = (ExperimentMetadataResource) gateway.get(ResourceType.EXPERIMENT_METADATA, expId);
@@ -273,11 +273,11 @@ public class ExperimentRegistry {
 //        exBasicData.save();
     }
 
-    public void updateExpConfigData(ConfigurationData configData, String expId) throws ApplicationSettingsException {
+    public void updateExpConfigData(UserConfigurationData configData, String expId) throws ApplicationSettingsException {
         GatewayResource gateway = gatewayRegistry.getDefaultGateway();
 //        ExperimentMetadataResource exBasicData = (ExperimentMetadataResource) gateway.get(ResourceType.EXPERIMENT_METADATA, expId);
 //        ExperimentConfigDataResource exConfigResource = (ExperimentConfigDataResource) exBasicData.get(ResourceType.EXPERIMENT_CONFIG_DATA, expId);
-//        BasicMetadata updatedBasicMetadata = configData.getBasicMetadata();
+//        BasicMetadata updatedBasicMetadata = configData.getExperiment();
 //        if (updatedBasicMetadata != null) {
 //            if (updatedBasicMetadata.getExperimentName() != null && !updatedBasicMetadata.getExperimentName().equals("")) {
 //                exBasicData.setExperimentName(updatedBasicMetadata.getExperimentName());
@@ -346,16 +346,16 @@ public class ExperimentRegistry {
 //        exConfigResource.save();
     }
 
-    public List<BasicMetadata> getExperimentMetaDataList (String fieldName, Object value){
-        List<BasicMetadata> metadataList = new ArrayList<BasicMetadata>();
+    public List<Experiment> getExperimentMetaDataList (String fieldName, Object value){
+        List<Experiment> metadataList = new ArrayList<Experiment>();
         try {
-            if (fieldName.equals(Constants.FieldConstants.BasicMetadataConstants.USER_NAME)){
+            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)){
                 UserReg userRegistry = new UserReg();
                 WorkerResource worker = userRegistry.getExistingUser(ServerSettings.getSystemUserGateway(), (String)value);
                 List<Resource> resources = worker.get(ResourceType.EXPERIMENT);
                 for (Resource resource : resources){
 //                    ExperimentMetadataResource ex =  (ExperimentMetadataResource)resource;
-//                    BasicMetadata basicMetadata = ThriftDataModelConversion.getBasicMetadata(ex);
+//                    BasicMetadata basicMetadata = ThriftDataModelConversion.getExperiment(ex);
 //                    metadataList.add(basicMetadata);
                 }
                 return metadataList;
@@ -368,8 +368,8 @@ public class ExperimentRegistry {
         return metadataList;
     }
 
-    public List<ConfigurationData> getConfigurationDataList (String fieldName, Object value){
-        List<ConfigurationData> configDataList = new ArrayList<ConfigurationData>();
+    public List<UserConfigurationData> getConfigurationDataList (String fieldName, Object value){
+        List<UserConfigurationData> configDataList = new ArrayList<UserConfigurationData>();
         try {
             gatewayRegistry = new GatewayRegistry();
             GatewayResource gateway = gatewayRegistry.getDefaultGateway();
@@ -397,7 +397,7 @@ public class ExperimentRegistry {
             GatewayResource gateway = gatewayRegistry.getDefaultGateway();
 //            ExperimentMetadataResource exBasicData = (ExperimentMetadataResource) gateway.get(ResourceType.EXPERIMENT_METADATA, expId);
 //            if (fieldName == null){
-//                return ThriftDataModelConversion.getBasicMetadata(exBasicData);
+//                return ThriftDataModelConversion.getExperiment(exBasicData);
 //            }else if (fieldName.equals(Constants.FieldConstants.BasicMetadataConstants.USER_NAME)){
 //                return exBasicData.getExecutionUser();
 //            }else if (fieldName.equals(Constants.FieldConstants.BasicMetadataConstants.EXPERIMENT_NAME)){
@@ -457,7 +457,7 @@ public class ExperimentRegistry {
     public List<String> getExperimentIDs (String fieldName, Object value) {
         List<String> expIDs = new ArrayList<String>();
         try {
-            if (fieldName.equals(Constants.FieldConstants.BasicMetadataConstants.GATEWAY)) {
+            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)) {
                 GatewayResource gateway = gatewayRegistry.getExistingGateway((String) value);
                 if (gateway == null) {
                     logger.error("You should use an existing gateway in order to retrieve experiments..");
@@ -469,7 +469,7 @@ public class ExperimentRegistry {
 //                        expIDs.add(expID);
 //                    }
                 }
-            } else if (fieldName.equals(Constants.FieldConstants.BasicMetadataConstants.USER_NAME)) {
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
                 WorkerResource workerResource = userReg.getExistingUser(ServerSettings.getSystemUserGateway(), (String)value);
                 List<Resource> resources = workerResource.get(ResourceType.EXPERIMENT);
                 for (Resource resource : resources) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
index 4657283..d6f8e7b 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
@@ -21,8 +21,8 @@
 
 package org.apache.airavata.persistance.registry.jpa.impl;
 
-import org.apache.airavata.model.experiment.BasicMetadata;
-import org.apache.airavata.model.experiment.ConfigurationData;
+import org.apache.airavata.model.workspace.experiment.Experiment;
+import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
 import org.apache.airavata.registry.cpi.ChildDataType;
 import org.apache.airavata.registry.cpi.DataType;
 import org.apache.airavata.registry.cpi.ParentDataType;
@@ -30,7 +30,6 @@ import org.apache.airavata.registry.cpi.Registry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.sql.rowset.serial.SerialStruct;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -50,8 +49,8 @@ public class RegistryImpl implements Registry {
     @Override
     public Object add(ParentDataType dataType, Object newObjectToAdd) {
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
-                return experimentRegistry.add((BasicMetadata) newObjectToAdd);
+            case EXPERIMENT:
+                return experimentRegistry.add((Experiment) newObjectToAdd);
             default:
                 logger.error("Unsupported top level type..", new UnsupportedOperationException());
                 throw new UnsupportedOperationException();
@@ -73,15 +72,48 @@ public class RegistryImpl implements Registry {
     public void add(ChildDataType dataType, Object newObjectToAdd, String dependentIdentifier) {
         switch (dataType){
             case EXPERIMENT_CONFIGURATION_DATA:
-                experimentRegistry.add((ConfigurationData)newObjectToAdd, (String)dependentIdentifier);
+                experimentRegistry.add((UserConfigurationData)newObjectToAdd, (String)dependentIdentifier);
                 break;
-            case EXPERIMENT_SUMMARY:
+            case EXPERIMENT_INPUT:
                 // no thrift model yet
                 break;
-            case EXPERIMENT_GENERATED_DATA:
+            case EXPERIMENT_OUTPUT:
                 // no thrift model yet
                 break;
-            case EXECUTION_ERROR:
+            case TASK_DETAIL:
+                // no thrift model yet
+                break;
+            case ERROR_DETAIL:
+                // no thrift model yet
+                break;
+            case APPLICATION_INPUT:
+                // no thrift model yet
+                break;
+            case APPLICATION_OUTPUT:
+                // no thrift model yet
+                break;
+            case NODE_INPUT:
+                // no thrift model yet
+                break;
+            case JOB_DETAIL:
+                // no thrift model yet
+                break;
+            case DATA_TRANSFER_DETAIL:
+                // no thrift model yet
+                break;
+            case STATUS:
+                // no thrift model yet
+                break;
+            case ADVANCE_INPUT_DATA_HANDLING:
+                // no thrift model yet
+                break;
+            case COMPUTATIONAL_RESOURCE_SCHEDULING:
+                // no thrift model yet
+                break;
+            case ADVANCE_OUTPUT_DATA_HANDLING:
+                // no thrift model yet
+                break;
+            case QOS_PARAM:
                 // no thrift model yet
                 break;
             default:
@@ -104,7 +136,7 @@ public class RegistryImpl implements Registry {
     @Override
     public void update(DataType dataType, Object newObjectToUpdate, String identifier) {
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
+            case EXPERIMENT:
                 experimentRegistry.update(newObjectToUpdate, identifier);
                 break;
             case EXPERIMENT_CONFIGURATION_DATA:
@@ -132,7 +164,7 @@ public class RegistryImpl implements Registry {
     @Override
     public void update(DataType dataType, String identifier, String fieldName, Object value) {
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
+            case EXPERIMENT:
                 experimentRegistry.updateExpBasicMetadataField(identifier, fieldName, value);
                 break;
             case EXPERIMENT_CONFIGURATION_DATA:
@@ -157,7 +189,7 @@ public class RegistryImpl implements Registry {
     public Object get(DataType dataType, String identifier) {
 
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
+            case EXPERIMENT:
                 return experimentRegistry.getBasicMetaData(identifier, null);
             case EXPERIMENT_CONFIGURATION_DATA:
                 return experimentRegistry.getConfigData(identifier, null);
@@ -180,15 +212,15 @@ public class RegistryImpl implements Registry {
     public List<Object> get(DataType dataType, String fieldName, Object value) {
         List<Object> result = new ArrayList<Object>();
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
-                List<BasicMetadata> experimentMetaDataList = experimentRegistry.getExperimentMetaDataList(fieldName, value);
-                for (BasicMetadata basicMetadata : experimentMetaDataList){
-                    result.add(basicMetadata);
+            case EXPERIMENT:
+                List<Experiment> experimentMetaDataList = experimentRegistry.getExperimentMetaDataList(fieldName, value);
+                for (Experiment experiment : experimentMetaDataList){
+                    result.add(experiment);
                 }
                 return result;
             case EXPERIMENT_CONFIGURATION_DATA:
-                List<ConfigurationData> configurationDataList = experimentRegistry.getConfigurationDataList(fieldName, value);
-                for (ConfigurationData configData : configurationDataList){
+                List<UserConfigurationData> configurationDataList = experimentRegistry.getConfigurationDataList(fieldName, value);
+                for (UserConfigurationData configData : configurationDataList){
                     result.add(configData);
                 }
                 return result;
@@ -212,7 +244,7 @@ public class RegistryImpl implements Registry {
     @Override
     public Object getValue(DataType dataType, String identifier, String field) {
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
+            case EXPERIMENT:
                 return experimentRegistry.getBasicMetaData(identifier, field);
             case EXPERIMENT_CONFIGURATION_DATA:
                 return experimentRegistry.getConfigData(identifier, field);
@@ -236,7 +268,7 @@ public class RegistryImpl implements Registry {
     @Override
     public List<String> getIds(DataType dataType, String fieldName, Object value) {
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
+            case EXPERIMENT:
                 return experimentRegistry.getExperimentIDs(fieldName, value);
             case EXPERIMENT_CONFIGURATION_DATA:
                 return experimentRegistry.getExperimentIDs(fieldName, value);
@@ -256,7 +288,7 @@ public class RegistryImpl implements Registry {
     @Override
     public void remove(DataType dataType, String identifier) {
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
+            case EXPERIMENT:
                 experimentRegistry.removeExperiment(identifier);
                 break;
             case EXPERIMENT_CONFIGURATION_DATA:
@@ -278,7 +310,7 @@ public class RegistryImpl implements Registry {
     @Override
     public boolean isExist(DataType dataType, String identifier) {
         switch (dataType){
-            case EXPERIMENT_BASIC_DATA:
+            case EXPERIMENT:
                 return experimentRegistry.isExperimentBasicDataExist(identifier);
             case EXPERIMENT_CONFIGURATION_DATA:
                 return experimentRegistry.isExperimentConfigDataExist(identifier);

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ErrorDetail.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ErrorDetail.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ErrorDetail.java
index 6c6e6cd..a99aa70 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ErrorDetail.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/ErrorDetail.java
@@ -51,6 +51,9 @@ public class ErrorDetail {
     private String correctiveAction;
     @Column(name = "ACTIONABLE_GROUP")
     private String actionableGroup;
+    @Column(name = "JOB_ID")
+    private String jobId;
+
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "EXPERIMENT_ID")
@@ -175,4 +178,12 @@ public class ErrorDetail {
     public void setCorrectiveAction(String correctiveAction) {
         this.correctiveAction = correctiveAction;
     }
+
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/JobDetail.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/JobDetail.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/JobDetail.java
index a04e722..ba718a6 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/JobDetail.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/JobDetail.java
@@ -38,6 +38,9 @@ public class JobDetail {
     private String jobDescription;
     @Column(name = "CREATION_TIME")
     private Timestamp creationTime;
+    @Column(name = "COMPUTE_RESOURCE_CONSUMED")
+    private String computeResourceConsumed;
+
 
     @ManyToOne(cascade= CascadeType.MERGE)
     @JoinColumn(name = "TASK_ID")
@@ -82,4 +85,12 @@ public class JobDetail {
     public void setTask(TaskDetail task) {
         this.task = task;
     }
+
+    public String getComputeResourceConsumed() {
+        return computeResourceConsumed;
+    }
+
+    public void setComputeResourceConsumed(String computeResourceConsumed) {
+        this.computeResourceConsumed = computeResourceConsumed;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/QosParam.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/QosParam.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/QosParam.java
index 9c73497..32fa94a 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/QosParam.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/QosParam.java
@@ -38,7 +38,7 @@ public class QosParam {
     private String startExecutionAt;
     @Column(name = "EXECUTE_BEFORE")
     private String executeBefore;
-    @Column(name = "EXECUTE_BEFORE")
+    @Column(name = "NO_OF_RETRIES")
     private int noOfRetries;
 
     @ManyToOne(cascade= CascadeType.MERGE)

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java
index c824c46..f90a5b1 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java
@@ -205,6 +205,7 @@ public abstract class AbstractResource implements Resource {
 		public static final String ERROR_ID = "error_id";
 		public static final String EXPERIMENT_ID = "experiment_id";
 		public static final String TASK_ID = "task_id";
+		public static final String JOB_ID = "job_id";
 		public static final String NODE_INSTANCE_ID = "node_instance_id";
 		public static final String CREATION_TIME = "creation_time";
 		public static final String ACTUAL_ERROR_MESSAGE = "actual_error_message";

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ErrorDetailResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ErrorDetailResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ErrorDetailResource.java
index 63d9d0f..3b958db 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ErrorDetailResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ErrorDetailResource.java
@@ -48,6 +48,7 @@ public class ErrorDetailResource extends AbstractResource {
     private String errorCategory;
     private String correctiveAction;
     private String actionableGroup;
+    private String jobId;
 
     public int getErrorId() {
         return errorId;
@@ -137,6 +138,14 @@ public class ErrorDetailResource extends AbstractResource {
         this.nodeDetail = nodeDetail;
     }
 
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
+
     @Override
     public Resource create(ResourceType type) {
         logger.error("Unsupported resource type for error details data resource.", new UnsupportedOperationException());
@@ -184,6 +193,7 @@ public class ErrorDetailResource extends AbstractResource {
         errorDetail.setErrorCategory(errorCategory);
         errorDetail.setCorrectiveAction(correctiveAction);
         errorDetail.setActionableGroup(actionableGroup);
+        errorDetail.setJobId(jobId);
         if (existingErrorDetail != null){
             existingErrorDetail.setErrorID(errorId);
             existingErrorDetail.setExperiment(experiment);
@@ -196,6 +206,7 @@ public class ErrorDetailResource extends AbstractResource {
             existingErrorDetail.setErrorCategory(errorCategory);
             existingErrorDetail.setCorrectiveAction(correctiveAction);
             existingErrorDetail.setActionableGroup(actionableGroup);
+            existingErrorDetail.setJobId(jobId);
             errorDetail = em.merge(existingErrorDetail);
         }else {
             em.merge(errorDetail);

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java
index f0ae728..1e3273b 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java
@@ -32,6 +32,7 @@ import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
 import org.apache.airavata.persistance.registry.jpa.model.*;
 import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.registry.cpi.utils.StatusType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -564,13 +565,64 @@ public class ExperimentResource extends AbstractResource {
 		this.project = project;
 	}
 
-//    public ExperimentDataResource getData(){
-//    	if (isExists(ResourceType.EXPERIMENT_DATA, getExpID())){
-//    		return (ExperimentDataResource) get(ResourceType.EXPERIMENT_DATA, getExpID());
-//    	}else{
-//    		ExperimentDataResource data = (ExperimentDataResource) create(ResourceType.EXPERIMENT_DATA);
-//            data.save();
-//			return data;
-//    	}
-//    }
+    public List<ExperimentInputResource> getExperimentInputs (){
+        List<ExperimentInputResource> expInputs = new ArrayList<ExperimentInputResource>();
+        List<Resource> resources = get(ResourceType.EXPERIMENT_INPUT);
+        for (Resource resource : resources) {
+            expInputs.add((ExperimentInputResource) resource);
+        }
+        return expInputs;
+    }
+
+    public List<ExperimentOutputResource> getExperimentOutputs (){
+        List<ExperimentOutputResource> expOutputs = new ArrayList<ExperimentOutputResource>();
+        List<Resource> resources = get(ResourceType.EXPERIMENT_OUTPUT);
+        for (Resource resource : resources) {
+            expOutputs.add((ExperimentOutputResource) resource);
+        }
+        return expOutputs;
+    }
+
+    public StatusResource getExperimentStatus(){
+        List<Resource> resources = get(ResourceType.STATUS);
+        for (Resource resource : resources) {
+            StatusResource expStatus = (StatusResource) resource;
+            if(expStatus.getStatusType().equals(StatusType.EXPERIMENT)){
+                return expStatus;
+            }
+        }
+        return null;
+    }
+
+    public List<StatusResource> getWorkflowNodeStatuses(){
+        List<StatusResource> statuses = new ArrayList<StatusResource>();
+        List<Resource> resources = get(ResourceType.STATUS);
+        for (Resource resource : resources) {
+            StatusResource workflowNodeStatus = (StatusResource) resource;
+            if(workflowNodeStatus.getStatusType().equals(StatusType.WORKFLOW_NODE)){
+                statuses.add(workflowNodeStatus);
+            }
+        }
+        return statuses;
+    }
+
+    public List<WorkflowNodeDetailResource> getWorkflowNodeDetails (){
+        List<WorkflowNodeDetailResource> workflowNodeDetailResourceList = new ArrayList<WorkflowNodeDetailResource>();
+        List<Resource> resources = get(ResourceType.WORKFLOW_NODE_DETAIL);
+        for (Resource resource : resources) {
+            WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource) resource;
+            workflowNodeDetailResourceList.add(nodeDetailResource);
+        }
+        return workflowNodeDetailResourceList;
+    }
+
+    public List<ErrorDetailResource> getErrorDetails (){
+        List<ErrorDetailResource> errorDetailResources = new ArrayList<ErrorDetailResource>();
+        List<Resource> resources = get(ResourceType.ERROR_DETAIL);
+        for (Resource resource : resources) {
+            ErrorDetailResource errorDetailResource = (ErrorDetailResource) resource;
+            errorDetailResources.add(errorDetailResource);
+        }
+        return errorDetailResources;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/JobDetailResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/JobDetailResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/JobDetailResource.java
index 13a889e..cf9be66 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/JobDetailResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/JobDetailResource.java
@@ -24,11 +24,9 @@ package org.apache.airavata.persistance.registry.jpa.resources;
 import org.apache.airavata.persistance.registry.jpa.Resource;
 import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
-import org.apache.airavata.persistance.registry.jpa.model.JobDetail;
-import org.apache.airavata.persistance.registry.jpa.model.JobDetails_PK;
-import org.apache.airavata.persistance.registry.jpa.model.Status;
-import org.apache.airavata.persistance.registry.jpa.model.TaskDetail;
+import org.apache.airavata.persistance.registry.jpa.model.*;
 import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.registry.cpi.utils.StatusType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,6 +42,7 @@ public class JobDetailResource extends AbstractResource {
     private TaskDetailResource taskDetailResource;
     private String jobDescription;
     private Timestamp creationTime;
+    private String computeResourceConsumed;
 
     public String getJobId() {
         return jobId;
@@ -77,6 +76,14 @@ public class JobDetailResource extends AbstractResource {
         this.creationTime = creationTime;
     }
 
+    public String getComputeResourceConsumed() {
+        return computeResourceConsumed;
+    }
+
+    public void setComputeResourceConsumed(String computeResourceConsumed) {
+        this.computeResourceConsumed = computeResourceConsumed;
+    }
+
     @Override
     public Resource create(ResourceType type) {
         switch (type){
@@ -84,6 +91,10 @@ public class JobDetailResource extends AbstractResource {
                 StatusResource statusResource = new StatusResource();
                 statusResource.setJobId(jobId);
                 return statusResource;
+            case ERROR_DETAIL:
+                ErrorDetailResource errorDetailResource = new ErrorDetailResource();
+                errorDetailResource.setJobId(jobId);
+                return errorDetailResource;
             default:
                 logger.error("Unsupported resource type for job details data resource.", new UnsupportedOperationException());
                 throw new UnsupportedOperationException();
@@ -103,6 +114,12 @@ public class JobDetailResource extends AbstractResource {
                 q = generator.deleteQuery(em);
                 q.executeUpdate();
                 break;
+            case ERROR_DETAIL:
+                generator = new QueryGenerator(STATUS);
+                generator.setParameter(ErrorDetailConstants.JOB_ID, name);
+                q = generator.deleteQuery(em);
+                q.executeUpdate();
+                break;
             default:
                 logger.error("Unsupported resource type for job details resource.", new IllegalArgumentException());
                 break;
@@ -127,6 +144,15 @@ public class JobDetailResource extends AbstractResource {
                 em.getTransaction().commit();
                 em.close();
                 return statusResource;
+            case ERROR_DETAIL:
+                generator = new QueryGenerator(ERROR_DETAIL);
+                generator.setParameter(ErrorDetailConstants.JOB_ID, name);
+                q = generator.selectQuery(em);
+                ErrorDetail errorDetail = (ErrorDetail)q.getSingleResult();
+                ErrorDetailResource errorDetailResource = (ErrorDetailResource)Utils.getResource(ResourceType.ERROR_DETAIL, errorDetail);
+                em.getTransaction().commit();
+                em.close();
+                return errorDetailResource;
             default:
                 em.getTransaction().commit();
                 em.close();
@@ -158,6 +184,20 @@ public class JobDetailResource extends AbstractResource {
                     }
                 }
                 break;
+            case ERROR_DETAIL:
+                generator = new QueryGenerator(ERROR_DETAIL);
+                generator.setParameter(ErrorDetailConstants.JOB_ID, jobId);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        ErrorDetail errorDetail = (ErrorDetail) result;
+                        ErrorDetailResource errorDetailResource =
+                                (ErrorDetailResource)Utils.getResource(ResourceType.ERROR_DETAIL, errorDetail);
+                        resourceList.add(errorDetailResource);
+                    }
+                }
+                break;
             default:
                 em.getTransaction().commit();
                 em.close();
@@ -184,12 +224,14 @@ public class JobDetailResource extends AbstractResource {
         jobDetail.setTaskId(taskDetailResource.getTaskId());
         jobDetail.setCreationTime(creationTime);
         jobDetail.setJobDescription(jobDescription);
+        jobDetail.setComputeResourceConsumed(computeResourceConsumed);
         if (existingJobDetail != null){
             existingJobDetail.setJobId(jobId);
             existingJobDetail.setTask(taskDetail);
             existingJobDetail.setTaskId(taskDetailResource.getTaskId());
             existingJobDetail.setCreationTime(creationTime);
             existingJobDetail.setJobDescription(jobDescription);
+            existingJobDetail.setComputeResourceConsumed(computeResourceConsumed);
             jobDetail = em.merge(existingJobDetail);
         }else {
             em.merge(jobDetail);
@@ -197,4 +239,35 @@ public class JobDetailResource extends AbstractResource {
         em.getTransaction().commit();
         em.close();
     }
+
+    public StatusResource getJobStatus(){
+        List<Resource> resources = get(ResourceType.STATUS);
+        for (Resource resource : resources) {
+            StatusResource jobStatus = (StatusResource) resource;
+            if(jobStatus.getStatusType().equals(StatusType.JOB)){
+                return jobStatus;
+            }
+        }
+        return null;
+    }
+
+    public StatusResource getApplicationStatus(){
+        List<Resource> resources = get(ResourceType.STATUS);
+        for (Resource resource : resources) {
+            StatusResource appStatus = (StatusResource) resource;
+            if(appStatus.getStatusType().equals(StatusType.APPLICATION)){
+                return appStatus;
+            }
+        }
+        return null;
+    }
+
+    public List<ErrorDetailResource> getErrorDetails (){
+        List<ErrorDetailResource> errorDetailResources = new ArrayList<ErrorDetailResource>();
+        List<Resource> resources = get(ResourceType.ERROR_DETAIL);
+        for(Resource resource : resources){
+            errorDetailResources.add((ErrorDetailResource)resource);
+        }
+        return errorDetailResources;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java
index e1f0a21..d64c05c 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java
@@ -26,6 +26,7 @@ import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
 import org.apache.airavata.persistance.registry.jpa.model.*;
 import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.registry.cpi.utils.StatusType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -446,4 +447,78 @@ public class TaskDetailResource extends AbstractResource {
         em.getTransaction().commit();
         em.close();
     }
+
+    public List<ApplicationInputResource> getApplicationInputs() {
+        List<ApplicationInputResource> applicationInputResources = new ArrayList<ApplicationInputResource>();
+        List<Resource> resources = get(ResourceType.APPLICATION_INPUT);
+        for (Resource resource : resources) {
+            ApplicationInputResource inputResource = (ApplicationInputResource) resource;
+            applicationInputResources.add(inputResource);
+        }
+        return applicationInputResources;
+    }
+
+    public List<ApplicationOutputResource> getApplicationOutputs(){
+        List<ApplicationOutputResource> outputResources = new ArrayList<ApplicationOutputResource>();
+        List<Resource> resources = get(ResourceType.APPLICATION_OUTPUT);
+        for (Resource resource : resources) {
+            ApplicationOutputResource outputResource = (ApplicationOutputResource) resource;
+            outputResources.add(outputResource);
+        }
+        return outputResources;
+    }
+
+    public StatusResource getTaskStatus(){
+        List<Resource> resources = get(ResourceType.STATUS);
+        for (Resource resource : resources) {
+            StatusResource taskStatus = (StatusResource) resource;
+            if(taskStatus.getStatusType().equals(StatusType.TASK)){
+                return taskStatus;
+            }
+        }
+        return null;
+    }
+
+    public List<JobDetailResource> getJobDetailList(){
+        List<JobDetailResource> jobDetailResources = new ArrayList<JobDetailResource>();
+        List<Resource> resources = get(ResourceType.JOB_DETAIL);
+        for (Resource resource : resources) {
+            JobDetailResource jobDetailResource = (JobDetailResource) resource;
+            jobDetailResources.add(jobDetailResource);
+        }
+        return jobDetailResources;
+    }
+
+    public List<DataTransferDetailResource> getDataTransferDetailList(){
+        List<DataTransferDetailResource> transferDetails = new ArrayList<DataTransferDetailResource>();
+        List<Resource> resources = get(ResourceType.DATA_TRANSFER_DETAIL);
+        for (Resource resource : resources) {
+            DataTransferDetailResource transferDetailResource = (DataTransferDetailResource) resource;
+            transferDetails.add(transferDetailResource);
+        }
+        return transferDetails;
+    }
+
+    public List<ErrorDetailResource> getErrorDetailList(){
+        List<ErrorDetailResource> errorDetailResources = new ArrayList<ErrorDetailResource>();
+        List<Resource> resources = get(ResourceType.ERROR_DETAIL);
+        for (Resource resource : resources) {
+            ErrorDetailResource errorDetailResource = (ErrorDetailResource) resource;
+            errorDetailResources.add(errorDetailResource);
+        }
+        return errorDetailResources;
+    }
+
+    public ComputationSchedulingResource getComputationScheduling (String taskId){
+        return  (ComputationSchedulingResource)get(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING, taskId);
+    }
+
+    public AdvanceInputDataHandlingResource getInputDataHandling (String taskId){
+        return  (AdvanceInputDataHandlingResource)get(ResourceType.ADVANCE_INPUT_DATA_HANDLING, taskId);
+    }
+
+    public AdvancedOutputDataHandlingResource getOutputDataHandling (String taskId){
+        return  (AdvancedOutputDataHandlingResource)get(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, taskId);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
index e4c8265..597a036 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
@@ -636,6 +636,7 @@ public class Utils {
         WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource)createWorkflowNodeDetail(o.getNodeDetails());
         errorDetailResource.setNodeDetail(nodeDetailResource);
         errorDetailResource.setErrorId(o.getErrorID());
+        errorDetailResource.setJobId(o.getJobId());
         errorDetailResource.setCreationTime(o.getCreationTime());
         errorDetailResource.setActualErrorMsg(o.getActualErrorMsg());
         errorDetailResource.setUserFriendlyErrorMsg(o.getUserFriendlyErrorMsg());
@@ -697,6 +698,7 @@ public class Utils {
         jobDetailResource.setJobDescription(o.getJobDescription());
         jobDetailResource.setJobId(o.getJobId());
         jobDetailResource.setCreationTime(o.getCreationTime());
+        jobDetailResource.setComputeResourceConsumed(o.getComputeResourceConsumed());
         return jobDetailResource;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkflowNodeDetailResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkflowNodeDetailResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkflowNodeDetailResource.java
index cc3e2c2..48ae4e6 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkflowNodeDetailResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkflowNodeDetailResource.java
@@ -26,6 +26,7 @@ import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
 import org.apache.airavata.persistance.registry.jpa.model.*;
 import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.registry.cpi.utils.StatusType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -325,4 +326,55 @@ public class WorkflowNodeDetailResource extends AbstractResource {
         em.getTransaction().commit();
         em.close();
     }
+
+    public List<NodeInputResource> getNodeInputs(){
+        List<NodeInputResource> nodeInputResourceList = new ArrayList<NodeInputResource>();
+        List<Resource> resources = get(ResourceType.NODE_INPUT);
+        for (Resource resource : resources) {
+            NodeInputResource nodeInputResource = (NodeInputResource) resource;
+            nodeInputResourceList.add(nodeInputResource);
+        }
+        return nodeInputResourceList;
+    }
+
+    public List<NodeOutputResource> getNodeOutputs(){
+        List<NodeOutputResource> outputResources = new ArrayList<NodeOutputResource>();
+        List<Resource> resources = get(ResourceType.NODE_OUTPUT);
+        for (Resource resource : resources) {
+            NodeOutputResource nodeOutputResource = (NodeOutputResource) resource;
+            outputResources.add(nodeOutputResource);
+        }
+        return outputResources;
+    }
+
+    public StatusResource getWorkflowNodeStatus(){
+        List<Resource> resources = get(ResourceType.STATUS);
+        for (Resource resource : resources) {
+            StatusResource nodeStatus = (StatusResource) resource;
+            if(nodeStatus.getStatusType().equals(StatusType.WORKFLOW_NODE)){
+                return nodeStatus;
+            }
+        }
+        return null;
+    }
+
+    public List<TaskDetailResource> getTaskDetails(){
+        List<TaskDetailResource> taskDetailResources = new ArrayList<TaskDetailResource>();
+        List<Resource> resources = get(ResourceType.TASK_DETAIL);
+        for (Resource resource : resources) {
+            TaskDetailResource taskDetailResource = (TaskDetailResource) resource;
+            taskDetailResources.add(taskDetailResource);
+        }
+        return taskDetailResources;
+    }
+
+    public List<ErrorDetailResource> getErrorDetails(){
+        List<ErrorDetailResource> errorDetails = new ArrayList<ErrorDetailResource>();
+        List<Resource> resources = get(ResourceType.TASK_DETAIL);
+        for (Resource resource : resources) {
+            ErrorDetailResource errorDetailResource = (ErrorDetailResource) resource;
+            errorDetails.add(errorDetailResource);
+        }
+        return errorDetails;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
index d5c425b..9d837a3 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/utils/ThriftDataModelConversion.java
@@ -1,54 +1,280 @@
-///*
-// *
-// * Licensed to the Apache Software Foundation (ASF) under one
-// * or more contributor license agreements.  See the NOTICE file
-// * distributed with this work for additional information
-// * regarding copyright ownership.  The ASF licenses this file
-// * to you under the Apache License, Version 2.0 (the
-// * "License"); you may not use this file except in compliance
-// * with the License.  You may obtain a copy of the License at
-// *
-// *   http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing,
-// * software distributed under the License is distributed on an
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// * KIND, either express or implied.  See the License for the
-// * specific language governing permissions and limitations
-// * under the License.
-// *
-// */
-//
-//package org.apache.airavata.persistance.registry.jpa.utils;
-//
-//import org.apache.airavata.model.experiment.*;
-//import org.apache.airavata.persistance.registry.jpa.Resource;
-//import org.apache.airavata.persistance.registry.jpa.ResourceType;
-//import org.apache.airavata.persistance.registry.jpa.resources.ExperimentConfigDataResource;
-//import org.apache.airavata.persistance.registry.jpa.resources.ExperimentInputResource;
-//import org.apache.airavata.persistance.registry.jpa.resources.ExperimentMetadataResource;
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-//
-//import java.util.HashMap;
-//import java.util.List;
-//import java.util.Map;
-//
-//public class ThriftDataModelConversion {
-//    private final static Logger logger = LoggerFactory.getLogger(ThriftDataModelConversion.class);
-//
-//    public static BasicMetadata getBasicMetadata (ExperimentMetadataResource exmetadata){
-//        BasicMetadata bsmd = new BasicMetadata();
-//        bsmd.setUserName(exmetadata.getExecutionUser());
-//        bsmd.setShareExperimentPublicly(exmetadata.isShareExp());
-//        bsmd.setExperimentDescription(exmetadata.getDescription());
-//        bsmd.setExperimentName(exmetadata.getExperimentName());
-//        return bsmd;
-//    }
-//
+/*
+*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+
+package org.apache.airavata.persistance.registry.jpa.utils;
+
+import org.apache.airavata.model.workspace.experiment.*;
+import org.apache.airavata.persistance.registry.jpa.resources.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ThriftDataModelConversion {
+    private final static Logger logger = LoggerFactory.getLogger(ThriftDataModelConversion.class);
+
+    public static Experiment getExperiment(ExperimentResource experimentResource){
+        Experiment experiment = new Experiment();
+        experiment.setProjectID(experimentResource.getProject().getName());
+        experiment.setCreationTime(experimentResource.getCreationTime().getTime());
+        experiment.setUserName(experimentResource.getWorker().getUser());
+        experiment.setName(experimentResource.getExpName());
+        experiment.setDescription(experimentResource.getDescription());
+        experiment.setApplicationId(experimentResource.getApplicationId());
+        experiment.setApplicationVersion(experimentResource.getApplicationVersion());
+        experiment.setWorkflowTemplateId(experimentResource.getWorkflowTemplateId());
+        experiment.setWorkflowTemplateVersion(experimentResource.getWorkflowTemplateVersion());
+        experiment.setWorkflowExecutionInstanceId(experimentResource.getWorkflowExecutionId());
+        List<ExperimentInputResource> experimentInputs = experimentResource.getExperimentInputs();
+        experiment.setExperimentInputs(getExpInputs(experimentInputs));
+        List<ExperimentOutputResource> experimentOutputs = experimentResource.getExperimentOutputs();
+        experiment.setExperimentOutputs(getExpOutputs(experimentOutputs));
+        StatusResource experimentStatus = experimentResource.getExperimentStatus();
+        experiment.setExperimentStatus(getExperimentStatus(experimentStatus));
+        List<StatusResource> changeList = experimentResource.getWorkflowNodeStatuses();
+        experiment.setStateChangeList(getWorkflowNodeStatusList(changeList));
+        List<WorkflowNodeDetailResource> workflowNodeDetails = experimentResource.getWorkflowNodeDetails();
+
+//        experiment.setWorkflowNodeDetailsList();
+
+        return experiment;
+    }
+
+    public static DataObjectType getInputOutput(Object object){
+        DataObjectType dataObjectType = new DataObjectType();
+        if (object instanceof  ExperimentInputResource){
+            ExperimentInputResource expInput = (ExperimentInputResource) object;
+            dataObjectType.setKey(expInput.getExperimentKey());
+            dataObjectType.setValue(expInput.getValue());
+            dataObjectType.setType(expInput.getInputType());
+            dataObjectType.setMetaData(expInput.getMetadata());
+            return dataObjectType;
+        }else if (object instanceof ExperimentOutputResource){
+            ExperimentOutputResource expOutput = (ExperimentOutputResource)object;
+            dataObjectType.setKey(expOutput.getExperimentKey());
+            dataObjectType.setValue(expOutput.getValue());
+            dataObjectType.setType(expOutput.getOutputType());
+            dataObjectType.setMetaData(expOutput.getMetadata());
+            return dataObjectType;
+        }else if (object instanceof NodeInputResource){
+            NodeInputResource nodeInputResource = (NodeInputResource)object;
+            dataObjectType.setKey(nodeInputResource.getInputKey());
+            dataObjectType.setValue(nodeInputResource.getValue());
+            dataObjectType.setType(nodeInputResource.getInputType());
+            dataObjectType.setMetaData(nodeInputResource.getMetadata());
+            return dataObjectType;
+        }else if (object instanceof NodeOutputResource){
+            NodeOutputResource nodeOutputResource = (NodeOutputResource)object;
+            dataObjectType.setKey(nodeOutputResource.getOutputKey());
+            dataObjectType.setValue(nodeOutputResource.getValue());
+            dataObjectType.setType(nodeOutputResource.getOutputType());
+            dataObjectType.setMetaData(nodeOutputResource.getMetadata());
+            return dataObjectType;
+        }else if (object instanceof ApplicationInputResource){
+            ApplicationInputResource inputResource = (ApplicationInputResource)object;
+            dataObjectType.setKey(inputResource.getInputKey());
+            dataObjectType.setValue(inputResource.getValue());
+            dataObjectType.setType(inputResource.getInputType());
+            dataObjectType.setMetaData(inputResource.getMetadata());
+            return dataObjectType;
+        }else if (object instanceof ApplicationOutputResource){
+            ApplicationOutputResource outputResource = (ApplicationOutputResource)object;
+            dataObjectType.setKey(outputResource.getOutputKey());
+            dataObjectType.setValue(outputResource.getValue());
+            dataObjectType.setType(outputResource.getOutputType());
+            dataObjectType.setMetaData(outputResource.getMetadata());
+            return dataObjectType;
+        }else {
+            return null;
+        }
+    }
+
+    public static List<DataObjectType> getExpInputs (List<ExperimentInputResource> exInputList){
+        List<DataObjectType> expInputs = new ArrayList<DataObjectType>();
+        for (ExperimentInputResource inputResource : exInputList){
+            DataObjectType exInput = getInputOutput(inputResource);
+            expInputs.add(exInput);
+        }
+        return expInputs;
+    }
+
+    public static List<DataObjectType> getExpOutputs (List<ExperimentOutputResource> experimentOutputResourceList){
+        List<DataObjectType> exOutputs = new ArrayList<DataObjectType>();
+        for (ExperimentOutputResource outputResource : experimentOutputResourceList){
+            DataObjectType output = getInputOutput(outputResource);
+            exOutputs.add(output);
+        }
+        return exOutputs;
+    }
+
+    public static List<DataObjectType> getNodeInputs (List<NodeInputResource> nodeInputResources){
+        List<DataObjectType> nodeInputs = new ArrayList<DataObjectType>();
+        for (NodeInputResource inputResource : nodeInputResources){
+            DataObjectType nodeInput = getInputOutput(inputResource);
+            nodeInputs.add(nodeInput);
+        }
+        return nodeInputs;
+    }
+
+    public static List<DataObjectType> getNodeOutputs (List<NodeOutputResource> nodeOutputResourceList){
+        List<DataObjectType> nodeOutputs = new ArrayList<DataObjectType>();
+        for (NodeOutputResource outputResource : nodeOutputResourceList){
+            DataObjectType output = getInputOutput(outputResource);
+            nodeOutputs.add(output);
+        }
+        return nodeOutputs;
+    }
+
+    public static List<DataObjectType> getApplicationInputs (List<ApplicationInputResource> applicationInputResources){
+        List<DataObjectType> appInputs = new ArrayList<DataObjectType>();
+        for (ApplicationInputResource inputResource : applicationInputResources){
+            DataObjectType appInput = getInputOutput(inputResource);
+            appInputs.add(appInput);
+        }
+        return appInputs;
+    }
+
+    public static List<DataObjectType> getApplicationOutputs (List<ApplicationOutputResource> outputResources){
+        List<DataObjectType> appOutputs = new ArrayList<DataObjectType>();
+        for (ApplicationOutputResource outputResource : outputResources){
+            DataObjectType output = getInputOutput(outputResource);
+            appOutputs.add(output);
+        }
+        return appOutputs;
+    }
+
+    public static ExperimentStatus getExperimentStatus(StatusResource status){
+        ExperimentStatus experimentStatus = new ExperimentStatus();
+        experimentStatus.setExperimentState(ExperimentState.valueOf(status.getState()));
+        experimentStatus.setTimeOfStateChange(status.getStatusUpdateTime().getTime());
+        return experimentStatus;
+    }
+
+    public static WorkflowNodeStatus getWorkflowNodeStatus (StatusResource status){
+        WorkflowNodeStatus workflowNodeStatus = new WorkflowNodeStatus();
+        workflowNodeStatus.setWorkflowNodeState(WorkflowNodeState.valueOf(status.getState()));
+        workflowNodeStatus.setTimeOfStateChange(status.getStatusUpdateTime().getTime());
+        return workflowNodeStatus;
+    }
+
+    public static TaskStatus getTaskStatus (StatusResource status){
+        TaskStatus taskStatus = new TaskStatus();
+        taskStatus.setExecutionState(TaskState.valueOf(status.getState()));
+        taskStatus.setTimeOfStateChange(status.getStatusUpdateTime().getTime());
+        return taskStatus;
+    }
+
+    public static JobStatus getJobStatus (StatusResource status){
+        JobStatus jobStatus = new JobStatus();
+        jobStatus.setJobState(JobState.valueOf(status.getState()));
+        jobStatus.setTimeOfStateChange(status.getStatusUpdateTime().getTime());
+        return jobStatus;
+    }
+
+    public static ApplicationStatus getApplicationStatus (StatusResource status){
+        ApplicationStatus applicationStatus = new ApplicationStatus();
+        applicationStatus.setApplicationState(status.getState());
+        applicationStatus.setTimeOfStateChange(status.getStatusUpdateTime().getTime());
+        return applicationStatus;
+    }
+
+    public static List<WorkflowNodeStatus> getWorkflowNodeStatusList(List<StatusResource> statuses){
+        List<WorkflowNodeStatus> wfNodeStatuses = new ArrayList<WorkflowNodeStatus>();
+        for (StatusResource statusResource : statuses){
+            wfNodeStatuses.add(getWorkflowNodeStatus(statusResource));
+        }
+        return wfNodeStatuses;
+    }
+
+    public static WorkflowNodeDetails getWorkflowNodeDetails(WorkflowNodeDetailResource nodeDetailResource){
+        WorkflowNodeDetails wfNode = new WorkflowNodeDetails();
+        wfNode.setNodeInstanceId(nodeDetailResource.getNodeInstanceId());
+        wfNode.setCreationTime(nodeDetailResource.getCreationTime().getTime());
+        wfNode.setNodeName(nodeDetailResource.getNodeName());
+        List<NodeInputResource> nodeInputs = nodeDetailResource.getNodeInputs();
+        wfNode.setNodeInputs(getNodeInputs(nodeInputs));
+        List<NodeOutputResource> nodeOutputs = nodeDetailResource.getNodeOutputs();
+        wfNode.setNodeOutputs(getNodeOutputs(nodeOutputs));
+        List<TaskDetailResource> taskDetails = nodeDetailResource.getTaskDetails();
+
+        //get taskdetails
+        //get workflownodestatus
+        //geterrordetails
+        return wfNode;
+    }
+
+    public static TaskDetails getTaskDetail (TaskDetailResource taskDetailResource){
+        TaskDetails taskDetails = new TaskDetails();
+        taskDetails.setTaskID(taskDetailResource.getTaskId());
+        taskDetails.setApplicationId(taskDetailResource.getApplicationId());
+        taskDetails.setApplicationVersion(taskDetailResource.getApplicationVersion());
+        List<ApplicationInputResource> applicationInputs = taskDetailResource.getApplicationInputs();
+        taskDetails.setApplicationInputs(getApplicationInputs(applicationInputs));
+        List<ApplicationOutputResource> applicationOutputs = taskDetailResource.getApplicationOutputs();
+        taskDetails.setApplicationOutputs(getApplicationOutputs(applicationOutputs));
+        ComputationSchedulingResource computationScheduling = taskDetailResource.getComputationScheduling(taskDetailResource.getTaskId());
+        taskDetails.setTaskScheduling(getComputationalResourceScheduling(computationScheduling));
+        AdvanceInputDataHandlingResource inputDataHandling = taskDetailResource.getInputDataHandling(taskDetailResource.getTaskId());
+        taskDetails.setAdvancedInputDataHandling(getAdvanceInputDataHandling(inputDataHandling));
+        AdvancedOutputDataHandlingResource outputDataHandling = taskDetailResource.getOutputDataHandling(taskDetailResource.getTaskId());
+        taskDetails.setAdvancedOutputDataHandling(getAdvanceOutputDataHandling(outputDataHandling));
+        taskDetails.setTaskStatus(getTaskStatus(taskDetailResource.getTaskStatus()));
+        List<JobDetailResource> jobDetailList = taskDetailResource.getJobDetailList();
+        return taskDetails;
+    }
+
+    public static JobDetails getJobDetail(JobDetailResource jobDetailResource){
+        JobDetails jobDetails = new JobDetails();
+        jobDetails.setJobID(jobDetailResource.getJobId());
+        jobDetails.setJobDescription(jobDetailResource.getJobDescription());
+        jobDetails.setCreationTime(jobDetailResource.getCreationTime().getTime());
+        StatusResource jobStatus = jobDetailResource.getJobStatus();
+        jobDetails.setJobStatus(getJobStatus(jobStatus));
+        StatusResource applicationStatus = jobDetailResource.getApplicationStatus();
+        jobDetails.setApplicationStatus(getApplicationStatus(applicationStatus));
+        List<ErrorDetailResource> errorDetails = jobDetailResource.getErrorDetails();
+        return jobDetails;
+
+    }
+
+    public static ErrorDetails getErrorDetails (ErrorDetailResource resource){
+        ErrorDetails errorDetails = new ErrorDetails();
+        errorDetails.setErrorID(String.valueOf(resource.getErrorId()));
+        errorDetails.setCreationTime(resource.getCreationTime().getTime());
+        errorDetails.setActualErrorMessage(resource.getActualErrorMsg());
+        errorDetails.setUserFriendlyMessage(resource.getUserFriendlyErrorMsg());
+        errorDetails.setErrorCategory(ErrorCategory.valueOf(resource.getErrorCategory()));
+        errorDetails.setTransientOrPersistent(resource.isTransientPersistent());
+        errorDetails.setCorrectiveAction(CorrectiveAction.valueOf(resource.getCorrectiveAction()));
+        errorDetails.setActionableGroup(ActionableGroup.valueOf(resource.getActionableGroup()));
+//        errorDetails.setRootCauseErrorIdList();
+        return errorDetails;
+
+    }
+
+
 //    public static ConfigurationData getConfigurationData (ExperimentConfigDataResource excd){
 //        ConfigurationData configData = new ConfigurationData();
-//        configData.setBasicMetadata(getBasicMetadata(excd.getExMetadata()));
+//        configData.setBasicMetadata(getExperiment(excd.getExMetadata()));
 //        configData.setApplicationId(excd.getApplicationID());
 //        configData.setApplicationVersion(excd.getApplicationVersion());
 //        configData.setWorkflowTemplateId(excd.getWorkflowTemplateId());
@@ -60,55 +286,44 @@
 //        configData.setQosParams(getQOSParams(excd));
 //        return configData;
 //    }
-//
-//    public static Map<String, String> getExperimentInputs (ExperimentMetadataResource exmdr){
-//        List<Resource> resources = exmdr.get(ResourceType.EXPERIMENT_INPUT);
-//        Map<String, String> exInputs = new HashMap<String, String>();
-//        for (Resource resource : resources){
-//            ExperimentInputResource exInput = (ExperimentInputResource)resource;
-//            exInputs.put(exInput.getExperimentKey(), exInput.getValue());
-//        }
-//        return exInputs;
-//    }
-//
-//    public static ComputationalResourceScheduling getComputationalResourceScheduling (ExperimentConfigDataResource excdr){
-//        ComputationalResourceScheduling scheduling = new ComputationalResourceScheduling();
-//        scheduling.setAiravataAutoSchedule(excdr.isAiravataAutoSchedule());
-//        scheduling.setOverrideManualScheduledParams(excdr.isOverrideManualSchedule());
-//        scheduling.setResourceHostId(excdr.getResourceHostID());
-//        scheduling.setTotalCPUCount(excdr.getCpuCount());
-//        scheduling.setNodeCount(excdr.getNodeCount());
-//        scheduling.setNumberOfThreads(excdr.getNumberOfThreads());
-//        scheduling.setQueueName(excdr.getQueueName());
-//        scheduling.setWallTimeLimit(excdr.getWallTimeLimit());
-//        scheduling.setJobStartTime((int)excdr.getJobStartTime().getTime());
-//        scheduling.setTotalPhysicalMemory(excdr.getPhysicalMemory());
-//        scheduling.setComputationalProjectAccount(excdr.getProjectAccount());
-//        return scheduling;
-//    }
-//
-//    public static AdvancedInputDataHandling getAdvanceInputDataHandling(ExperimentConfigDataResource excd){
-//        AdvancedInputDataHandling adih = new AdvancedInputDataHandling();
-//        adih.setStageInputFilesToWorkingDir(excd.isStageInputsToWDir());
-//        adih.setWorkingDirectoryParent(excd.getWorkingDirParent());
-//        adih.setUniqueWorkingDirectory(excd.getWorkingDir());
-//        adih.setCleanUpWorkingDirAfterJob(excd.isCleanAfterJob());
-//        return adih;
-//    }
-//
-//    public static AdvancedOutputDataHandling getAdvanceOutputDataHandling(ExperimentConfigDataResource excd){
-//        AdvancedOutputDataHandling outputDataHandling = new AdvancedOutputDataHandling();
-//        outputDataHandling.setOutputdataDir(excd.getOutputDataDir());
-//        outputDataHandling.setDataRegistryURL(excd.getDataRegURL());
-//        outputDataHandling.setPersistOutputData(excd.isPersistOutputData());
-//        return outputDataHandling;
-//    }
-//
-//    public static QualityOfServiceParams getQOSParams (ExperimentConfigDataResource excd){
-//        QualityOfServiceParams qosParams = new QualityOfServiceParams();
-//        qosParams.setStartExecutionAt(excd.getStartExecutionAt());
-//        qosParams.setExecuteBefore(excd.getExecuteBefore());
-//        qosParams.setNumberofRetries(excd.getNumberOfRetries());
-//        return qosParams;
-//    }
-//}
+
+
+    public static ComputationalResourceScheduling getComputationalResourceScheduling (ComputationSchedulingResource csr){
+        ComputationalResourceScheduling scheduling = new ComputationalResourceScheduling();
+        scheduling.setResourceHostId(csr.getResourceHostId());
+        scheduling.setTotalCPUCount(csr.getCpuCount());
+        scheduling.setNodeCount(csr.getNodeCount());
+        scheduling.setNumberOfThreads(csr.getNumberOfThreads());
+        scheduling.setQueueName(csr.getQueueName());
+        scheduling.setWallTimeLimit(csr.getWalltimeLimit());
+        scheduling.setJobStartTime((int)csr.getJobStartTime().getTime());
+        scheduling.setTotalPhysicalMemory(csr.getPhysicalMemory());
+        scheduling.setComputationalProjectAccount(csr.getProjectName());
+        return scheduling;
+    }
+
+    public static AdvancedInputDataHandling getAdvanceInputDataHandling(AdvanceInputDataHandlingResource adhr){
+        AdvancedInputDataHandling adih = new AdvancedInputDataHandling();
+        adih.setStageInputFilesToWorkingDir(adhr.isStageInputFiles());
+        adih.setParentWorkingDirectory(adhr.getWorkingDirParent());
+        adih.setUniqueWorkingDirectory(adhr.getWorkingDir());
+        adih.setCleanUpWorkingDirAfterJob(adhr.isCleanAfterJob());
+        return adih;
+    }
+
+    public static AdvancedOutputDataHandling getAdvanceOutputDataHandling(AdvancedOutputDataHandlingResource adodh){
+        AdvancedOutputDataHandling outputDataHandling = new AdvancedOutputDataHandling();
+        outputDataHandling.setOutputDataDir(adodh.getOutputDataDir());
+        outputDataHandling.setDataRegistryURL(adodh.getDataRegUrl());
+        outputDataHandling.setPersistOutputData(adodh.isPersistOutputData());
+        return outputDataHandling;
+    }
+
+    public static QualityOfServiceParams getQOSParams (QosParamResource qos){
+        QualityOfServiceParams qosParams = new QualityOfServiceParams();
+        qosParams.setStartExecutionAt(qos.getStartExecutionAt());
+        qosParams.setExecuteBefore(qos.getExecuteBefore());
+        qosParams.setNumberofRetries(qos.getNoOfRetries());
+        return qosParams;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql b/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
index fd88e4d..9313c27 100644
--- a/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
+++ b/modules/registry/airavata-jpa-registry/src/main/resources/registry-derby.sql
@@ -187,25 +187,6 @@ CREATE TABLE TASK_DETAIL
         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE ERROR_DETAIL
-(
-         ERROR_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-         EXPERIMENT_ID VARCHAR(255),
-         TASK_ID VARCHAR(255),
-         NODE_INSTANCE_ID VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,,
-         ACTUAL_ERROR_MESSAGE CLOB,
-         USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
-         TRANSIENT_OR_PERSISTENT SMALLINT,
-         ERROR_CATEGORY VARCHAR(255),
-         CORRECTIVE_ACTION VARCHAR(255),
-         ACTIONABLE_GROUP VARCHAR(255),
-         PRIMARY KEY(ERROR_ID),
-         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
-         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
-
 CREATE TABLE APPLICATION_INPUT
 (
         TASK_ID VARCHAR(255),
@@ -256,6 +237,7 @@ CREATE TABLE JOB_DETAIL
         TASK_ID VARCHAR(255),
         JOB_DESCRIPTION VARCHAR(255),
         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+        COMPUTE_RESOURCE_CONSUMED VARCHAR(255),
         PRIMARY KEY (TASK_ID, JOB_ID),
         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
 );
@@ -270,6 +252,26 @@ CREATE TABLE DATA_TRANSFER_DETAIL
         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
 );
 
+CREATE TABLE ERROR_DETAIL
+(
+         ERROR_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+         EXPERIMENT_ID VARCHAR(255),
+         TASK_ID VARCHAR(255),
+         NODE_INSTANCE_ID VARCHAR(255),
+         JOB_ID VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,,
+         ACTUAL_ERROR_MESSAGE CLOB,
+         USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
+         TRANSIENT_OR_PERSISTENT SMALLINT,
+         ERROR_CATEGORY VARCHAR(255),
+         CORRECTIVE_ACTION VARCHAR(255),
+         ACTIONABLE_GROUP VARCHAR(255),
+         PRIMARY KEY(ERROR_ID),
+         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
+         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
 CREATE TABLE STATUS
 (
         STATUS_ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/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 304cad6..1b2039c 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
@@ -187,24 +187,7 @@ CREATE TABLE TASK_DETAIL
         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
 );
 
-CREATE TABLE ERROR_DETAIL
-(
-         ERROR_ID INTEGER NOT NULL AUTO_INCREMENT,
-         EXPERIMENT_ID VARCHAR(255),
-         TASK_ID VARCHAR(255),
-         NODE_INSTANCE_ID VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT NOW(),
-         ACTUAL_ERROR_MESSAGE LONGTEXT,
-         USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
-         TRANSIENT_OR_PERSISTENT SMALLINT,
-         ERROR_CATEGORY VARCHAR(255),
-         CORRECTIVE_ACTION VARCHAR(255),
-         ACTIONABLE_GROUP VARCHAR(255),
-         PRIMARY KEY(ERROR_ID),
-         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
-         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
-         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
-);
+
 
 CREATE TABLE APPLICATION_INPUT
 (
@@ -256,6 +239,7 @@ CREATE TABLE JOB_DETAIL
         TASK_ID VARCHAR(255),
         JOB_DESCRIPTION VARCHAR(255),
         CREATION_TIME TIMESTAMP DEFAULT NOW(),
+        COMPUTE_RESOURCE_CONSUMED VARCHAR(255),
         PRIMARY KEY (TASK_ID, JOB_ID),
         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
 );
@@ -270,6 +254,26 @@ CREATE TABLE DATA_TRANSFER_DETAIL
         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE
 );
 
+CREATE TABLE ERROR_DETAIL
+(
+         ERROR_ID INTEGER NOT NULL AUTO_INCREMENT,
+         EXPERIMENT_ID VARCHAR(255),
+         TASK_ID VARCHAR(255),
+         NODE_INSTANCE_ID VARCHAR(255),
+         JOB_ID VARCHAR(255),
+         CREATION_TIME TIMESTAMP DEFAULT NOW(),
+         ACTUAL_ERROR_MESSAGE LONGTEXT,
+         USER_FRIEDNLY_ERROR_MSG VARCHAR(255),
+         TRANSIENT_OR_PERSISTENT SMALLINT,
+         ERROR_CATEGORY VARCHAR(255),
+         CORRECTIVE_ACTION VARCHAR(255),
+         ACTIONABLE_GROUP VARCHAR(255),
+         PRIMARY KEY(ERROR_ID),
+         FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE,
+         FOREIGN KEY (TASK_ID) REFERENCES TASK_DETAIL(TASK_ID) ON DELETE CASCADE,
+         FOREIGN KEY (NODE_INSTANCE_ID) REFERENCES WORKFLOW_NODE_DETAIL(NODE_INSTANCE_ID) ON DELETE CASCADE
+);
+
 CREATE TABLE STATUS
 (
         STATUS_ID INTEGER NOT NULL AUTO_INCREMENT,

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ChildDataType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ChildDataType.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ChildDataType.java
index 749e974..27c1231 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ChildDataType.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ChildDataType.java
@@ -1,10 +1,21 @@
 package org.apache.airavata.registry.cpi;
 
 public enum ChildDataType {
-    EXPERIMENT_SUMMARY,
+    EXPERIMENT_INPUT,
+    EXPERIMENT_OUTPUT,
+    WORKFLOW_NODE_DETAIL,
+    TASK_DETAIL,
+    ERROR_DETAIL,
+    APPLICATION_INPUT,
+    APPLICATION_OUTPUT,
+    NODE_INPUT,
+    NODE_OUTPUT,
+    JOB_DETAIL,
+    DATA_TRANSFER_DETAIL,
+    STATUS,
     EXPERIMENT_CONFIGURATION_DATA,
-    EXPERIMENT_GENERATED_DATA,
-    MONITORING_DATA,
-    PROVENANCE_DATA,
-    EXECUTION_ERROR
+    COMPUTATIONAL_RESOURCE_SCHEDULING,
+    ADVANCE_INPUT_DATA_HANDLING,
+    ADVANCE_OUTPUT_DATA_HANDLING,
+    QOS_PARAM
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataType.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataType.java
index b9099ce..99d23ee 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataType.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataType.java
@@ -5,11 +5,22 @@ public enum DataType {
     GROUP,
     USER,
     PROJECT,
-    EXPERIMENT_BASIC_DATA,
-    EXPERIMENT_SUMMARY,
+    EXPERIMENT,
+    EXPERIMENT_INPUT,
+    EXPERIMENT_OUTPUT,
+    WORKFLOW_NODE_DETAIL,
+    TASK_DETAIL,
+    ERROR_DETAIL,
+    APPLICATION_INPUT,
+    APPLICATION_OUTPUT,
+    NODE_INPUT,
+    NODE_OUTPUT,
+    JOB_DETAIL,
+    DATA_TRANSFER_DETAIL,
+    STATUS,
     EXPERIMENT_CONFIGURATION_DATA,
-    EXPERIMENT_GENERATED_DATA,
-    MONITORING_DATA,
-    PROVENANCE_DATA,
-    EXECUTION_ERROR
+    COMPUTATIONAL_RESOURCE_SCHEDULING,
+    ADVANCE_INPUT_DATA_HANDLING,
+    ADVANCE_OUTPUT_DATA_HANDLING,
+    QOS_PARAM
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ParentDataType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ParentDataType.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ParentDataType.java
index ea210d5..0432d49 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ParentDataType.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ParentDataType.java
@@ -5,7 +5,7 @@ public enum ParentDataType {
     GROUP,
     USER,
     PROJECT,
-    EXPERIMENT_BASIC_DATA
+    EXPERIMENT
 }
 
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
index 6919a08..4828e0f 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
@@ -23,23 +23,31 @@ package org.apache.airavata.registry.cpi.utils;
 
 public class Constants {
     public final class FieldConstants {
-        public final class BasicMetadataConstants {
+        public final class ExperimentConstants {
             public static final String EXPERIMENT_NAME = "experimentName";
             public static final String USER_NAME = "userName";
             public static final String GATEWAY = "gateway";
             public static final String EXPERIMENT_DESC = "experimentDescription";
             public static final String SHARE_EXP_PUBLIC = "shareExperimentPublicly";
             public static final String PROJECT_NAME = "project";
-            public static final String SUBMITTED_DATE = "submitted_date";
-        }
-
-        public final class ConfigurationDataConstants {
-            public static final String EXPERIMENT_ID = "experimentId";
+            public static final String CREATION_TIME = "creationTime";
             public static final String APPLICATION_ID = "applicationId";
             public static final String APPLICATION_VERSION = "applicationVersion";
             public static final String WORKFLOW_TEMPLATE_ID = "workflowTemplateId";
             public static final String WORKFLOW_TEMPLATE_VERSION = "worklfowTemplateVersion";
+            public static final String USER_CONFIGURATION_DATA = "userConfigurationData";
+            public static final String WORKFLOW_EXECUTION_ID = "workflowExecutionInstanceId";
             public static final String EXPERIMENT_INPUTS = "experimentInputs";
+            public static final String EXPERIMENT_OUTPUTS = "experimentOutputs";
+            public static final String EXPERIMENT_STATUS = "experimentStatus";
+            public static final String STATE_CHANGE_LIST = "stateChangeList";
+            public static final String WORKFLOW_NODE_LIST = "workflowNodeDetailsList";
+            public static final String ERROR_DETAIL_LIST = "errors";
+
+        }
+
+        public final class ConfigurationDataConstants {
+            public static final String EXPERIMENT_ID = "experimentId";
             public static final String COMPUTATIONAL_RESOURCE_SCHEDULING = "computationalResourceScheduling";
             public static final String ADVANCED_INPUT_HANDLING = "advanceInputDataHandling";
             public static final String ADVANCED_OUTPUT_HANDLING = "advanceOutputDataHandling";

http://git-wip-us.apache.org/repos/asf/airavata/blob/985151fc/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/StatusType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/StatusType.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/StatusType.java
new file mode 100644
index 0000000..ced8013
--- /dev/null
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/StatusType.java
@@ -0,0 +1,10 @@
+package org.apache.airavata.registry.cpi.utils;
+
+public enum StatusType {
+    EXPERIMENT,
+    WORKFLOW_NODE,
+    TASK,
+    JOB,
+    DATA_TRANSFER,
+    APPLICATION
+}


Mime
View raw message