You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2015/06/22 14:01:39 UTC

[1/9] airavata git commit: fixing add methods in experiment registry class

Repository: airavata
Updated Branches:
  refs/heads/master cb5d3aef0 -> f9032d4dd


fixing add methods in experiment registry class


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

Branch: refs/heads/master
Commit: 7ca8104a11013e24a83ccc976980cd40394916b4
Parents: cb5d3ae
Author: Supun Nakandala <sc...@apache.org>
Authored: Sun Jun 21 18:19:36 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Sun Jun 21 18:19:36 2015 +0530

----------------------------------------------------------------------
 .../catalog/impl/ExperimentCatalogImpl.java     |  30 +-
 .../catalog/impl/ExperimentRegistry.java        | 880 ++++++++++---------
 .../catalog/resources/ExperimentResource.java   |   5 +
 3 files changed, 497 insertions(+), 418 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/7ca8104a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
index e52e56a..33b1f15 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
@@ -23,13 +23,17 @@ package org.apache.airavata.registry.core.experiment.catalog.impl;
 
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.ErrorModel;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.experiment.ExperimentSummaryModel;
 import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.model.process.ProcessModel;
+import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.ExperimentStatus;
+import org.apache.airavata.model.status.ProcessStatus;
+import org.apache.airavata.model.status.TaskStatus;
 import org.apache.airavata.model.task.TaskModel;
 import org.apache.airavata.model.workspace.Gateway;
 import org.apache.airavata.model.workspace.Project;
@@ -112,7 +116,7 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                 case PROJECT:
                     return projectRegistry.addProject((Project)newObjectToAdd, gatewayId);
                 case EXPERIMENT:
-                    return experimentRegistry.addExperiment((ExperimentModel) newObjectToAdd, gatewayId);
+                    return experimentRegistry.addExperiment((ExperimentModel) newObjectToAdd);
                 case GATEWAY:
                     return gatewayRegistry.addGateway((Gateway)newObjectToAdd);
                 default:
@@ -143,24 +147,32 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
             switch (dataType) {
                 case USER_CONFIGURATION_DATA:
                     return experimentRegistry.addUserConfigData((UserConfigurationDataModel) newObjectToAdd, (String) dependentIdentifier);
+                case EXPERIMENT_INPUT:
+                    return experimentRegistry.addExpInputs((List<InputDataObjectType>) newObjectToAdd, (String) dependentIdentifier);
                 case EXPERIMENT_OUTPUT:
                     return experimentRegistry.addExpOutputs((List<OutputDataObjectType>) newObjectToAdd, (String) dependentIdentifier);
                 case EXPERIMENT_STATUS:
-                    return experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToAdd, (String) dependentIdentifier);
+                    return experimentRegistry.addExperimentStatus((ExperimentStatus) newObjectToAdd, (String) dependentIdentifier);
                 case EXPERIMENT_ERROR:
-                    return experimentRegistry.updateExperimentError((ErrorModel) newObjectToAdd, (String) dependentIdentifier);
+                    return experimentRegistry.addExperimentError((ErrorModel) newObjectToAdd, (String) dependentIdentifier);
+                case PROCESS:
+                    return experimentRegistry.addProcess((ProcessModel) newObjectToAdd, (String) dependentIdentifier);
                 case PROCESS_RESOURCE_SCHEDULE:
-                    return experimentRegistry.addUserConfigData((UserConfigurationDataModel) newObjectToAdd, (String) dependentIdentifier);
+                    return experimentRegistry.addProcessResourceSchedule((ComputationalResourceSchedulingModel) newObjectToAdd, (String) dependentIdentifier);
+                case PROCESS_INPUT:
+                    return experimentRegistry.addProcessInputs((List<InputDataObjectType>) newObjectToAdd, (String) dependentIdentifier);
                 case PROCESS_OUTPUT:
-                    return experimentRegistry.addExpOutputs((List<OutputDataObjectType>) newObjectToAdd, (String) dependentIdentifier);
+                    return experimentRegistry.addProcessOutputs((List<OutputDataObjectType>) newObjectToAdd, (String) dependentIdentifier);
                 case PROCESS_STATUS:
-                    return experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToAdd, (String) dependentIdentifier);
+                    return experimentRegistry.addProcessStatus((ProcessStatus) newObjectToAdd, (String) dependentIdentifier);
                 case PROCESS_ERROR:
-                    return experimentRegistry.updateExperimentError((ErrorModel) newObjectToAdd, (String) dependentIdentifier);
+                    return experimentRegistry.addProcessError((ErrorModel) newObjectToAdd, (String) dependentIdentifier);
+                case TASK:
+                    return experimentRegistry.addTask((TaskModel) newObjectToAdd, (String) dependentIdentifier);
                 case TASK_STATUS:
-                    return experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToAdd, (String) dependentIdentifier);
+                    return experimentRegistry.addTaskStatus((TaskStatus) newObjectToAdd, (String) dependentIdentifier);
                 case TASK_ERROR:
-                    return experimentRegistry.updateExperimentError((ErrorModel) newObjectToAdd, (String) dependentIdentifier);
+                    return experimentRegistry.addTaskError((ErrorModel) newObjectToAdd, (String) dependentIdentifier);
                 default:
                     logger.error("Unsupported dependent data type...", new UnsupportedOperationException());
                     throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/airavata/blob/7ca8104a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 7c31498..09b06e7 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -21,6 +21,7 @@
 
 package org.apache.airavata.registry.core.experiment.catalog.impl;
 
+import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.model.application.io.InputDataObjectType;
 import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.commons.ErrorModel;
@@ -31,10 +32,7 @@ import org.apache.airavata.model.experiment.UserConfigurationDataModel;
 import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.process.ProcessModel;
 import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
-import org.apache.airavata.model.status.ExperimentState;
-import org.apache.airavata.model.status.ExperimentStatus;
-import org.apache.airavata.model.status.JobStatus;
-import org.apache.airavata.model.status.TaskStatus;
+import org.apache.airavata.model.status.*;
 import org.apache.airavata.model.task.TaskModel;
 import org.apache.airavata.registry.core.experiment.catalog.ExpCatResourceUtils;
 import org.apache.airavata.registry.core.experiment.catalog.ExperimentCatResource;
@@ -46,6 +44,7 @@ import org.apache.airavata.registry.cpi.ExperimentCatalogModelType;
 import org.apache.airavata.registry.cpi.RegistryException;
 import org.apache.airavata.registry.cpi.ResultOrderType;
 import org.apache.airavata.registry.cpi.utils.Constants;
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -70,260 +69,405 @@ public class ExperimentRegistry {
 
     }
 
-    public String addExperiment(ExperimentModel experiment, String gatewayId) throws RegistryException {
-//        String experimentID;
-//        try {
-//            if (!ExpCatResourceUtils.isUserExist(experiment.getUserName())) {
-//                ExpCatResourceUtils.addUser(experiment.getUserName(), null);
-//            }
-//
-//            experimentID = getExperimentID(experiment.getExperimentName());
-//            experiment.setExperimentId(experimentID);
-//            ExperimentResource experimentResource = new ExperimentResource();
-//            experimentResource.setExpID(experimentID);
-//            experimentResource.setExpName(experiment.getExperimentName());
-//            experimentResource.setExecutionUser(experiment.getUserName());
-//            experimentResource.setGatewayId(gatewayId);
-//            experimentResource.setGatewayExecutionId(experiment.getGatewayExecutionId());
-//            experimentResource.setEnableEmailNotifications(experiment.isEnableEmailNotification());
-//            if (!workerResource.isProjectExists(experiment.getProjectId())) {
-//                logger.error("Project does not exist in the system..");
-//                throw new Exception("Project does not exist in the system, Please create the project first...");
-//            }
-//            experimentResource.setProjectId(experiment.getProjectId());
-//            experimentResource.setCreationTime(AiravataUtils.getTime(experiment.getCreationTime()));
-//            experimentResource.setDescription(experiment.getDescription());
-//            experimentResource.setApplicationId(experiment.getExecutionId());
-//            experimentResource.save();
-//
-//            List<String> emailAddresses = experiment.getEmailAddresses();
-//            if (emailAddresses != null && !emailAddresses.isEmpty()){
-//                for (String email : emailAddresses){
-//                    NotificationEmailResource emailResource = new NotificationEmailResource();
-//                    emailResource.setExperimentId(experimentID);
-//                    emailResource.setEmailAddress(email);
-//                    emailResource.save();
-//                }
-//            }
-//
-//            List<InputDataObjectType> experimentInputs = experiment.getExperimentInputs();
-//            if (experimentInputs != null) {
-//                addExpInputs(experimentInputs, experimentResource);
-//            }
-//
-//            UserConfigurationDataModel userConfigurationData = experiment.getUserConfigurationData();
-//            if (userConfigurationData != null) {
-//                addUserConfigData(userConfigurationData, experimentID);
-//            }
-//
-//            List<OutputDataObjectType> experimentOutputs = experiment.getExperimentOutputs();
-//            if (experimentOutputs != null && !experimentOutputs.isEmpty()) {
-//                //TODO: short change.
-////                for (DataObjectType output : experimentOutputs){
-////                    output.setValue("");
-////                }
-//                addExpOutputs(experimentOutputs, experimentID);
-//            }
-//
-////            ExperimentStatus experimentStatus = experiment.getExperimentStatus();
-////            if (experimentStatus != null){
-////                updateExperimentStatus(experimentStatus, experimentID);
-////            }else {
-//            ExperimentStatus experimentStatus = new ExperimentStatus();
-//            experimentStatus.setState(ExperimentState.CREATED);
-//            updateExperimentStatus(experimentStatus, experimentID);
-////            }
-//
-////            List<WorkflowNodeDetails> workflowNodeDetailsList = experiment.getWorkflowNodeDetailsList();
-////            if (workflowNodeDetailsList != null && !workflowNodeDetailsList.isEmpty()) {
-////                for (WorkflowNodeDetails wf : workflowNodeDetailsList) {
-////                    addWorkflowNodeDetails(wf, experimentID);
-////                }
-////            }
-//            List<ErrorModel> errors = experiment.getErrors();
-//            if (errors != null && !errors.isEmpty()) {
-//                for (ErrorModel errror : errors) {
-//                    addErrorDetails(errror, experimentID);
-//                }
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while saving experiment to registry", e);
-//            throw new RegistryException(e);
-//        }
-//        return experimentID;
-        return null;
+    //CPI Add Methods
+
+    public String addExperiment(ExperimentModel experiment) throws RegistryException {
+        String experimentId;
+        try {
+            if (!ExpCatResourceUtils.isUserExist(experiment.getUserName())) {
+                ExpCatResourceUtils.addUser(experiment.getUserName(), null);
+            }
+            if (!workerResource.isProjectExists(experiment.getProjectId())) {
+                logger.error("Project does not exist in the system..");
+                throw new Exception("Project does not exist in the system, Please create the project first...");
+            }
+            experimentId = getExperimentID(experiment.getExperimentName());
+            experiment.setExperimentId(experimentId);
+            ExperimentResource experimentResource = new ExperimentResource();
+            experimentResource.setExperimentId(experimentId);
+            experimentResource.setProjectId(experiment.getProjectId());
+            experimentResource.setExperimentType(experiment.getExperimentType().toString());
+            experimentResource.setUserName(experiment.getUserName());
+            experimentResource.setExperimentName(experiment.getExperimentName());
+            experimentResource.setCreationTime(AiravataUtils.getTime(experiment.getCreationTime()));
+            experimentResource.setDescription(experiment.getDescription());
+            experimentResource.setExecutionId(experiment.getExecutionId());
+            experimentResource.setGatewayExecutionId(experiment.getGatewayExecutionId());
+            if(experiment.isEnableEmailNotification()){
+                experimentResource.setEnableEmailNotification(true);
+                if(experiment.getEmailAddresses() != null){
+                    experimentResource.setEmailAddresses(StringUtils.join(experiment.getEmailAddresses(), ","));
+                }
+            }else{
+                experimentResource.setEnableEmailNotification(false);
+            }
+            experimentResource.save();
+            if(experiment.getUserConfigurationData() != null) {
+                addUserConfigData(experiment.getUserConfigurationData(), experimentId);
+            }
+            if(experiment.getExperimentInputs() != null && experiment.getExperimentInputs().size() > 0) {
+                addExpInputs(experiment.getExperimentInputs(), experimentId);
+            }
+            if(experiment.getExperimentOutputs() != null && experiment.getExperimentOutputs().size() > 0) {
+                addExpOutputs(experiment.getExperimentOutputs(), experimentId);
+            }
+
+            ExperimentStatus experimentStatus = new ExperimentStatus();
+            experimentStatus.setState(ExperimentState.CREATED);
+            addExperimentStatus(experimentStatus, experimentId);
+
+            List<ErrorModel> errors = experiment.getErrors();
+            if (errors != null && !errors.isEmpty()) {
+                for (ErrorModel errror : errors) {
+                    addExperimentError(errror, experimentId);
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error while saving experiment to registry", e);
+            throw new RegistryException(e);
+        }
+        return experimentId;
     }
 
-    public String addUserConfigData(UserConfigurationDataModel configurationData, String experimentID) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(experimentID);
-//            ConfigDataResource configData = (ConfigDataResource) experiment.create(ResourceType.CONFIG_DATA);
-//            configData.setExperimentId(experimentID);
-//            configData.setAiravataAutoSchedule(configurationData.isAiravataAutoSchedule());
-//            configData.setOverrideManualParams(configurationData.isOverrideManualScheduledParams());
-//            configData.setShareExp(configurationData.isShareExperimentPublicly());
-//            configData.setUserDn(configurationData.getUserDN());
-//            configData.setGenerateCert(configurationData.isGenerateCert());
-//            configData.save();
-//            ComputationalResourceSchedulingModel resourceScheduling = configurationData.getComputationalResourceScheduling();
-//            if (resourceScheduling != null) {
-//                addComputationScheduling(resourceScheduling, experiment);
-//            }
-////            AdvancedInputDataHandling inputDataHandling = configurationData.getAdvanceInputDataHandling();
-////            if (inputDataHandling != null) {
-////                addInputDataHandling(inputDataHandling, experiment);
-////            }
-////
-////            AdvancedOutputDataHandling outputDataHandling = configurationData.getAdvanceOutputDataHandling();
-////            if (outputDataHandling != null) {
-////                addOutputDataHandling(outputDataHandling, experiment);
-////            }
-////
-////            QualityOfServiceParams qosParams = configurationData.getQosParams();
-////            if (qosParams != null) {
-////                addQosParams(qosParams, experiment);
-////            }
-//        } catch (Exception e) {
-//            logger.error("Unable to save user config data", e);
-//            throw new RegistryException(e);
-//        }
-//        return experimentID;
-        return null;
+    public String addUserConfigData(UserConfigurationDataModel configurationData, String experimentId) throws RegistryException {
+        try {
+            UserConfigurationDataResource configDataResource = new UserConfigurationDataResource();
+            configDataResource.setExperimentId(experimentId);
+            configDataResource.setAiravataAutoSchedule(configurationData.isAiravataAutoSchedule());
+            configDataResource.setOverrideManualScheduledParams(configurationData.isOverrideManualScheduledParams());
+            configDataResource.setShareExperimentPublically(configurationData.isShareExperimentPublicly());
+            configDataResource.setThrottleResources(configurationData.isThrottleResources());
+            configDataResource.setUserDn(configurationData.getUserDN());
+            configDataResource.setGenerateCert(configurationData.isGenerateCert());
+            configDataResource.setResourceHostId(configurationData.getComputationalResourceScheduling().getResourceHostId());
+            configDataResource.setTotalCpuCount(configurationData.getComputationalResourceScheduling().getTotalCPUCount());
+            configDataResource.setNodeCount(configurationData.getComputationalResourceScheduling().getNodeCount());
+            configDataResource.setNumberOfThreads(configurationData.getComputationalResourceScheduling().getNumberOfThreads());
+            configDataResource.setQueueName(configurationData.getComputationalResourceScheduling().getQueueName());
+            configDataResource.setWallTimeLimit(configurationData.getComputationalResourceScheduling().getWallTimeLimit());
+            configDataResource.setTotalPhysicalMemory(configurationData.getComputationalResourceScheduling().getTotalPhysicalMemory());
+            configDataResource.save();
+        } catch (Exception e) {
+            logger.error("Unable to save user config data", e);
+            throw new RegistryException(e);
+        }
+        return experimentId;
     }
 
-//    public void addQosParams(QualityOfServiceParams qosParams, ExperimentCatResource resource) throws RegistryException {
-//        try {
-//            QosParamResource qosr = new QosParamResource();
-//            if (resource instanceof ExperimentResource) {
-//                ExperimentResource experiment = (ExperimentResource) resource;
-//                qosr.setProcessId(experiment.getExpID());
-//            }
-//            if (resource instanceof TaskDetailResource) {
-//                TaskDetailResource taskDetailResource = (TaskDetailResource) resource;
-//                qosr.setTaskId(taskDetailResource.getTaskId());
-//                String nodeId = taskDetailResource.getNodeId();
-//                ExperimentResource experimentResource = new ExperimentResource();
-//                WorkflowNodeDetailResource workflowNode = experimentResource.getWorkflowNode(nodeId);
-//                qosr.setProcessId(workflowNode.getProcessId());
-//            }
-//            qosr.setStartExecutionAt(qosParams.getStartExecutionAt());
-//            qosr.setExecuteBefore(qosParams.getExecuteBefore());
-//            qosr.setNoOfRetries(qosParams.getNumberofRetries());
-//            qosr.save();
-//        } catch (Exception e) {
-//            logger.error("Unable to save QOS params", e);
-//            throw new RegistryException(e);
-//        }
-//
-//    }
+    public String addExpInputs(List<InputDataObjectType> exInputs, String experimentId) throws RegistryException {
+        try {
+            for (InputDataObjectType input : exInputs) {
+                ExperimentInputResource resource = new ExperimentInputResource();
+                resource.setExperimentId(experimentId);
+                resource.setInputName(input.getName());
+                resource.setInputValue(input.getValue());
+                if (input.getType() != null) {
+                    resource.setDataType(input.getType().toString());
+                }
+                resource.setMetadata(input.getMetaData());
+                resource.setApplicationArgument(input.getApplicationArgument());
+                resource.setInputOrder(input.getInputOrder());
+                resource.setIsRequired(input.isIsRequired());
+                resource.setIsRequired(input.isRequiredToAddedToCommandLine());
+                resource.save();
+            }
+        } catch (Exception e) {
+            logger.error("Unable to save experiment inputs", e);
+            throw new RegistryException(e);
+        }
+        return experimentId;
+    }
 
-//    public void addOutputDataHandling(AdvancedOutputDataHandling outputDataHandling, ExperimentCatResource resource) throws RegistryException {
-//        AdvancedOutputDataHandlingResource adodh = new AdvancedOutputDataHandlingResource();
-//        try {
-//            if (resource instanceof ExperimentResource) {
-//                ExperimentResource experiment = (ExperimentResource) resource;
-//                adodh.setProcessId(experiment.getExpID());
-//            }
-//            if (resource instanceof TaskDetailResource) {
-//                TaskDetailResource taskDetailResource = (TaskDetailResource) resource;
-//                String nodeId = taskDetailResource.getNodeId();
-//                ExperimentResource experimentResource = new ExperimentResource();
-//                WorkflowNodeDetailResource workflowNode = experimentResource.getWorkflowNode(nodeId);
-//                adodh.setProcessId(workflowNode.getProcessId());
-//                adodh.setTaskId(taskDetailResource.getTaskId());
-//            }
-//            adodh.setOutputDataDir(outputDataHandling.getOutputDataDir());
-//            adodh.setDataRegUrl(outputDataHandling.getDataRegistryURL());
-//            adodh.setPersistOutputData(outputDataHandling.isPersistOutputData());
-//            adodh.save();
-//        } catch (Exception e) {
-//            logger.error("Unable to save output data handling data", e);
-//            throw new RegistryException(e);
-//        }
-//
-//    }
+    public String addExpOutputs(List<OutputDataObjectType> exOutput, String expId) throws RegistryException {
+        try {
+            for (OutputDataObjectType output : exOutput) {
+                ExperimentOutputResource resource = new ExperimentOutputResource();
+                resource.setExperimentId(expId);
+                resource.setOutputName(output.getName());
+                resource.setOutputValue(output.getValue());
+                if (output.getType() != null) {
+                    resource.setDataType(output.getType().toString());
+                }
+                resource.setApplicationArgument(output.getApplicationArgument());
+                resource.setIsRequired(output.isIsRequired());
+                resource.setRequiredToAddedToCmd(output.isRequiredToAddedToCommandLine());
+                resource.setDataMovement(output.isDataMovement());
+                resource.setLocation(output.getLocation());
+                resource.setSearchQuery(output.getSearchQuery());
+                resource.save();
+            }
+        } catch (Exception e) {
+            logger.error("Error while adding experiment outputs...", e);
+            throw new RegistryException(e);
+        }
+        return expId;
+    }
 
-//    public void addInputDataHandling(AdvancedInputDataHandling inputDataHandling, ExperimentCatResource resource) throws RegistryException {
-//        AdvanceInputDataHandlingResource adidh = new AdvanceInputDataHandlingResource();
-//        try {
-//            if (resource instanceof ExperimentResource) {
-//                ExperimentResource experiment = (ExperimentResource) resource;
-//                adidh.setProcessId(experiment.getExpID());
-//            }
-//            if (resource instanceof TaskDetailResource) {
-//                TaskDetailResource taskDetailResource = (TaskDetailResource) resource;
-//                String nodeId = taskDetailResource.getNodeId();
-//                ExperimentResource experimentResource = new ExperimentResource();
-//                WorkflowNodeDetailResource workflowNode = experimentResource.getWorkflowNode(nodeId);
-//                adidh.setProcessId(workflowNode.getProcessId());
-//                adidh.setTaskId(taskDetailResource.getTaskId());
-//            }
-//            adidh.setWorkingDir(inputDataHandling.getUniqueWorkingDirectory());
-//            adidh.setWorkingDirParent(inputDataHandling.getParentWorkingDirectory());
-//            adidh.setStageInputFiles(inputDataHandling.isSetStageInputFilesToWorkingDir());
-//            adidh.setCleanAfterJob(inputDataHandling.isCleanUpWorkingDirAfterJob());
-//            adidh.save();
-//        } catch (Exception e) {
-//            logger.error("Unable to save input data handling data", e);
-//            throw new RegistryException(e);
-//        }
-//
-//    }
+    public String addExperimentStatus(ExperimentStatus experimentStatus, String expId) throws RegistryException {
+        try {
+            ExperimentResource experiment = new ExperimentResource();
+            experiment.setExperimentId(expId);
+            ExperimentStatusResource status = experiment.getExperimentStatus();
+            if (status == null) {
+                status = (ExperimentStatusResource) experiment.create(ResourceType.EXPERIMENT_STATUS);
+            }
+            if (isValidStatusTransition(ExperimentState.valueOf(status.getState()), experimentStatus.getState())) {
+                status.setStatusId(getStatusID(expId));
+                status.setExperimentId(expId);
+                status.setTimeOfStateChange(AiravataUtils.getTime(experimentStatus.getTimeOfStateChange()));
+                status.setState(experimentStatus.getState().toString());
+                status.setReason(experimentStatus.getReason());
+                status.save();
+                logger.debug(expId, "Added experiment {} status to {}.", expId, experimentStatus.toString());
+            }
+        } catch (Exception e) {
+            logger.error(expId, "Error while adding experiment status...", e);
+            throw new RegistryException(e);
+        }
+        return expId;
+    }
 
-    public void addComputationScheduling(ComputationalResourceSchedulingModel resourceScheduling, ExperimentCatResource resource) throws RegistryException {
-//        ComputationSchedulingResource cmsr = new ComputationSchedulingResource();
-//        try {
-//            if (resource instanceof ExperimentResource) {
-//                ExperimentResource experiment = (ExperimentResource) resource;
-//                cmsr.setExperimentId(experiment.getExpID());
-//            }
-//            if (resource instanceof TaskDetailResource) {
-//                TaskDetailResource taskDetailResource = (TaskDetailResource) resource;
-//                String nodeId = taskDetailResource.getNodeId();
-//                ExperimentResource experimentResource = new ExperimentResource();
-//                WorkflowNodeDetailResource workflowNode = experimentResource.getWorkflowNode(nodeId);
-//                cmsr.setExperimentId(workflowNode.getExperimentId());
-//                cmsr.setTaskId(taskDetailResource.getTaskId());
-//            }
-//            cmsr.setResourceHostId(resourceScheduling.getResourceHostId());
-//            cmsr.setCpuCount(resourceScheduling.getTotalCPUCount());
-//            cmsr.setNodeCount(resourceScheduling.getNodeCount());
-//            cmsr.setNumberOfThreads(resourceScheduling.getNumberOfThreads());
-//            cmsr.setQueueName(resourceScheduling.getQueueName());
-//            cmsr.setWalltimeLimit(resourceScheduling.getWallTimeLimit());
-//            cmsr.setPhysicalMemory(resourceScheduling.getTotalPhysicalMemory());
-//            cmsr.setChessisName(resourceScheduling.getChessisNumber());
-//            cmsr.save();
-//        } catch (Exception e) {
-//            logger.error("Unable to save computational scheduling data", e);
-//            throw new RegistryException(e);
-//        }
+    public String addExperimentError(ErrorModel experimentError, String expId) throws RegistryException {
+        try {
+            ExperimentErrorResource error = new ExperimentErrorResource();
+            error.setErrorId(getErrorID(expId));
+            error.setExperimentId(expId);
+            error.setCreationTime(AiravataUtils.getTime(experimentError.getCreationTime()));
+            error.setActualErrorMessage(experimentError.getActualErrorMessage());
+            error.setUserFriendlyMessage(experimentError.getUserFriendlyMessage());
+            error.setTransientOrPersistent(experimentError.isTransientOrPersistent());
+            if(experimentError.getRootCauseErrorIdList() != null) {
+                error.setRootCauseErrorIdList(StringUtils.join(experimentError.getRootCauseErrorIdList(), ","));
+            }
+            error.save();
+        } catch (Exception e) {
+            logger.error(expId, "Error while updating experiment status...", e);
+            throw new RegistryException(e);
+        }
+        return expId;
+    }
 
+    public String addProcess(ProcessModel process, String expId) throws RegistryException {
+        try {
+            ProcessResource processResource = new ProcessResource();
+            processResource.setProcessId(getProcessID(expId));
+            processResource.setExperimentId(expId);
+            processResource.setCreationTime(AiravataUtils.getTime(process.getCreationTime()));
+            processResource.setLastUpdateTime(AiravataUtils.getTime(process.getLastUpdateTime()));
+            processResource.setProcessDetail(process.getProcessDetail());
+            processResource.setApplicationInterfaceId(process.getApplicationInterfaceId());
+            processResource.setTaskDag(process.getTaskDag());
+            processResource.save();
+
+            if(process.getResourceSchedule() != null) {
+                addProcessResourceSchedule(process.getResourceSchedule(), process.getProcessId());
+            }
+            if(process.getProcessInputs() !=  null && process.getProcessInputs().size() > 0) {
+                addProcessInputs(process.getProcessInputs(), process.getProcessId());
+            }
+            if(process.getProcessOutputs() != null && process.getProcessOutputs().size() > 0) {
+                addProcessOutputs(process.getProcessOutputs(), process.getProcessId());
+            }
+
+            ProcessStatus processStatus = new ProcessStatus();
+            processStatus.setState(ProcessState.CREATED);
+            addProcessStatus(processStatus, process.getProcessId());
+
+            if(process.getProcessError() != null) {
+                addProcessError(process.getProcessError(), process.getProcessId());
+            }
+        } catch (Exception e) {
+            logger.error(expId, "Error while adding process...", e);
+            throw new RegistryException(e);
+        }
+        return expId;
     }
 
-    public void addExpInputs(List<InputDataObjectType> exInputs, ExperimentResource experimentResource) throws RegistryException {
-//        try {
-//            for (InputDataObjectType input : exInputs) {
-//                ExperimentInputResource resource = (ExperimentInputResource) experimentResource.create(ResourceType.EXPERIMENT_INPUT);
-//                resource.setExperimentId(experimentResource.getExpID());
-//                resource.setExperimentKey(input.getName());
-//                resource.setValue(input.getValue());
-//                if (input.getType() != null) {
-//                    resource.setDataType(input.getType().toString());
-//                }
-//                resource.setMetadata(input.getMetaData());
-//                resource.setAppArgument(input.getApplicationArgument());
-//                resource.setInputOrder(input.getInputOrder());
-//                resource.setRequired(input.isIsRequired());
-//                resource.setRequiredToCMD(input.isRequiredToAddedToCommandLine());
-//                resource.save();
-//            }
-//        } catch (Exception e) {
-//            logger.error("Unable to save experiment inputs", e);
-//            throw new RegistryException(e);
-//        }
+
+    public String addProcessResourceSchedule(ComputationalResourceSchedulingModel resourceSchedule, String processID) throws RegistryException {
+        try {
+            ProcessResourceScheduleResource processResourceSchedule = new ProcessResourceScheduleResource();
+            processResourceSchedule.setProcessId(processID);
+            processResourceSchedule.setResourceHostId(resourceSchedule.getResourceHostId());
+            processResourceSchedule.setTotalCpuCount(resourceSchedule.getTotalCPUCount());
+            processResourceSchedule.setNodeCount(resourceSchedule.getNodeCount());
+            processResourceSchedule.setNumberOfThreads(resourceSchedule.getNumberOfThreads());
+            processResourceSchedule.setQueueName(resourceSchedule.getQueueName());
+            processResourceSchedule.setWallTimeLimit(resourceSchedule.getWallTimeLimit());
+            processResourceSchedule.setTotalPhysicalMemory(resourceSchedule.getTotalPhysicalMemory());
+            processResourceSchedule.save();
+        } catch (Exception e) {
+            logger.error("Unable to save user config data", e);
+            throw new RegistryException(e);
+        }
+        return processID;
+    }
+
+    public String addProcessInputs(List<InputDataObjectType> processInputs, String processID) throws RegistryException {
+        try {
+            for (InputDataObjectType input : processInputs) {
+                ProcessInputResource resource = new ProcessInputResource();
+                resource.setProcessId(processID);
+                resource.setInputName(input.getName());
+                resource.setInputValue(input.getValue());
+                if (input.getType() != null) {
+                    resource.setDataType(input.getType().toString());
+                }
+                resource.setMetadata(input.getMetaData());
+                resource.setApplicationArgument(input.getApplicationArgument());
+                resource.setInputOrder(input.getInputOrder());
+                resource.setIsRequired(input.isIsRequired());
+                resource.setIsRequired(input.isRequiredToAddedToCommandLine());
+                resource.save();
+            }
+            return processID;
+        } catch (Exception e) {
+            logger.error("Unable to save process inputs", e);
+            throw new RegistryException(e);
+        }
     }
 
+    public String addProcessOutputs(List<OutputDataObjectType> processOutput, String processID) throws RegistryException {
+        try {
+            for (OutputDataObjectType output : processOutput) {
+                ProcessOutputResource resource = new ProcessOutputResource();
+                resource.setProcessId(processID);
+                resource.setOutputName(output.getName());
+                resource.setOutputValue(output.getValue());
+                if (output.getType() != null) {
+                    resource.setDataType(output.getType().toString());
+                }
+                resource.setApplicationArgument(output.getApplicationArgument());
+                resource.setIsRequired(output.isIsRequired());
+                resource.setRequiredToAddedToCmd(output.isRequiredToAddedToCommandLine());
+                resource.setDataMovement(output.isDataMovement());
+                resource.setLocation(output.getLocation());
+                resource.setSearchQuery(output.getSearchQuery());
+                resource.save();
+            }
+            return processID;
+        } catch (Exception e) {
+            logger.error("Error while adding process outputs...", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public String addProcessStatus(ProcessStatus processStatus, String processID) throws RegistryException {
+        try {
+            ProcessResource processResource = new ProcessResource();
+            processResource.setProcessId(processID);
+            ProcessStatusResource status = processResource.getProcessStatus();
+            if (status == null) {
+                status = (ProcessStatusResource) processResource.create(ResourceType.EXPERIMENT_STATUS);
+            }
+            if (isValidStatusTransition(ProcessState.valueOf(status.getState()), processStatus.getState())) {
+                status.setStatusId(getStatusID(processID));
+                status.setProcessId(processID);
+                status.setTimeOfStateChange(AiravataUtils.getTime(processStatus.getTimeOfStateChange()));
+                status.setState(processStatus.getState().toString());
+                status.setReason(processStatus.getReason());
+                status.save();
+                logger.debug(processID, "Added process {} status to {}.", processID, processStatus.toString());
+            }
+        } catch (Exception e) {
+            logger.error(processID, "Error while adding process status...", e);
+            throw new RegistryException(e);
+        }
+        return processID;
+    }
+
+    public String addProcessError(ErrorModel processError, String processID) throws RegistryException {
+        try {
+            ProcessErrorResource error = new ProcessErrorResource();
+            error.setProcessId(processID);
+            error.setErrorId(getErrorID(processID));
+            error.setCreationTime(AiravataUtils.getTime(processError.getCreationTime()));
+            error.setActualErrorMessage(processError.getActualErrorMessage());
+            error.setUserFriendlyMessage(processError.getUserFriendlyMessage());
+            error.setTransientOrPersistent(processError.isTransientOrPersistent());
+            if(processError.getRootCauseErrorIdList() != null) {
+                error.setRootCauseErrorIdList(StringUtils.join(processError.getRootCauseErrorIdList(), ","));
+            }
+            error.save();
+        } catch (Exception e) {
+            logger.error(processID, "Error while adding process status...", e);
+            throw new RegistryException(e);
+        }
+        return processID;
+    }
+
+    public String addTask(TaskModel task, String processID) throws RegistryException {
+        try {
+            TaskResource taskResource = new TaskResource();
+            taskResource.setParentProcessId(getProcessID(processID));
+            taskResource.setTaskType(task.getTaskType().toString());
+            taskResource.setCreationTime(AiravataUtils.getTime(task.getCreationTime()));
+            taskResource.setLastUpdateTime(AiravataUtils.getTime(task.getLastUpdateTime()));
+            taskResource.setTaskDetail(task.getTaskDetail());
+            taskResource.setTaskInternalStore(task.getTaskInternalStore());
+            taskResource.save();
+
+            TaskStatus taskStatus = new TaskStatus();
+            taskStatus.setState(TaskState.CREATED);
+            addTaskStatus(taskStatus, task.getTaskId());
+
+            if(task.getTaskError() != null) {
+                addTaskError(task.getTaskError(), task.getTaskId());
+            }
+        } catch (Exception e) {
+            logger.error(processID, "Error while adding task...", e);
+            throw new RegistryException(e);
+        }
+        return processID;
+    }
+
+    public String addTaskStatus(TaskStatus taskStatus, String taskID) throws RegistryException {
+        try {
+            TaskResource taskResource = new TaskResource();
+            taskResource.setTaskId(taskID);
+            TaskStatusResource status = taskResource.getTaskStatus();
+            if (status == null) {
+                status = new TaskStatusResource();
+            }
+            if (isValidStatusTransition(ProcessState.valueOf(status.getState()), taskStatus.getState())) {
+                status.setStatusId(getStatusID(taskID));
+                status.setTaskId(taskID);
+                status.setTimeOfStateChange(AiravataUtils.getTime(taskStatus.getTimeOfStateChange()));
+                status.setState(taskStatus.getState().toString());
+                status.setReason(taskStatus.getReason());
+                status.save();
+                logger.debug(taskID, "Added task {} status to {}.", taskID, taskStatus.toString());
+            }
+        } catch (Exception e) {
+            logger.error(taskID, "Error while adding task status...", e);
+            throw new RegistryException(e);
+        }
+        return taskID;
+    }
+
+    public String addTaskError(ErrorModel taskError, String taskId) throws RegistryException {
+        try {
+            TaskErrorResource error = new TaskErrorResource();
+            error.setTaskId(taskId);
+            error.setErrorId(getErrorID(taskId));
+            error.setCreationTime(AiravataUtils.getTime(taskError.getCreationTime()));
+            error.setActualErrorMessage(taskError.getActualErrorMessage());
+            error.setUserFriendlyMessage(taskError.getUserFriendlyMessage());
+            error.setTransientOrPersistent(taskError.isTransientOrPersistent());
+            if(taskError.getRootCauseErrorIdList() != null) {
+                error.setRootCauseErrorIdList(StringUtils.join(taskError.getRootCauseErrorIdList(), ","));
+            }
+            error.save();
+        } catch (Exception e) {
+            logger.error(taskId, "Error while adding task status...", e);
+            throw new RegistryException(e);
+        }
+        return taskId;
+    }
+
+
+    //CPI Update Methods
+
     public void updateExpInputs(List<InputDataObjectType> exInputs, ExperimentResource experimentResource) throws RegistryException {
 //        try {
 //            List<ExperimentInputResource> experimentInputs = experimentResource.getExperimentInputs();
@@ -350,34 +494,6 @@ public class ExperimentRegistry {
 
     }
 
-    public String addExpOutputs(List<OutputDataObjectType> exOutput, String expId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(expId);
-//            for (OutputDataObjectType output : exOutput) {
-//                ExperimentOutputResource resource = (ExperimentOutputResource) experiment.create(ResourceType.EXPERIMENT_OUTPUT);
-//                resource.setExperimentId(expId);
-//                resource.setExperimentKey(output.getName());
-//                resource.setValue(output.getValue());
-//                if (output.getType() != null) {
-//                    resource.setDataType(output.getType().toString());
-//                }
-//                resource.setRequired(output.isIsRequired());
-//                resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
-//                resource.setDataMovement(output.isDataMovement());
-//                resource.setDataNameLocation(output.getLocation());
-//                resource.setAppArgument(output.getApplicationArgument());
-//                resource.setSearchQuery(output.getSearchQuery());
-////                resource.setMetadata(output.get());
-//                resource.save();
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while adding experiment outputs...", e);
-//            throw new RegistryException(e);
-//        }
-//        return expId;
-        return null;
-    }
-
     public void updateExpOutputs(List<OutputDataObjectType> exOutput, String expId) throws RegistryException {
 //        try {
 //            ExperimentResource experiment = gatewayResource.getExperiment(expId);
@@ -408,94 +524,6 @@ public class ExperimentRegistry {
 //        }
     }
 
-    public String addNodeOutputs(List<OutputDataObjectType> wfOutputs, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment((String) ids.getTopLevelIdentifier());
-//            WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) ids.getSecondLevelIdentifier());
-//            for (OutputDataObjectType output : wfOutputs) {
-//                NodeOutputResource resource = (NodeOutputResource) workflowNode.create(ResourceType.NODE_OUTPUT);
-//                resource.setNodeId(workflowNode.getNodeInstanceId());
-//                resource.setOutputKey(output.getName());
-//                resource.setValue(output.getValue());
-//                if (output.getType() != null) {
-//                    resource.setDataType(output.getType().toString());
-//                }
-//                resource.setRequired(output.isIsRequired());
-//                resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
-//                resource.setDataMovement(output.isDataMovement());
-//                resource.setDataNameLocation(output.getLocation());
-//                resource.setAppArgument(output.getApplicationArgument());
-//                resource.setSearchQuery(output.getSearchQuery());
-////                resource.setMetadata(output.getMetaData());
-//                resource.save();
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while adding node outputs...", e);
-//            throw new RegistryException(e);
-//        }
-//        return (String) ids.getSecondLevelIdentifier();
-        return null;
-    }
-
-    public void updateNodeOutputs(List<OutputDataObjectType> wfOutputs, String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode(nodeId);
-//            List<NodeOutputResource> nodeOutputs = workflowNode.getNodeOutputs();
-//            for (OutputDataObjectType output : wfOutputs) {
-//                for (NodeOutputResource resource : nodeOutputs) {
-//                    resource.setNodeId(workflowNode.getNodeInstanceId());
-//                    resource.setOutputKey(output.getName());
-//                    resource.setValue(output.getValue());
-//                    if (output.getType() != null) {
-//                        resource.setDataType(output.getType().toString());
-//                    }
-//                    resource.setRequired(output.isIsRequired());
-//                    resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
-//                    resource.setDataMovement(output.isDataMovement());
-//                    resource.setDataNameLocation(output.getLocation());
-//                    resource.setAppArgument(output.getApplicationArgument());
-//                    resource.setSearchQuery(output.getSearchQuery());
-////                    resource.setMetadata(output.getMetaData());
-//                    resource.save();
-//                }
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating node outputs...", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public String addApplicationOutputs(List<OutputDataObjectType> appOutputs, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) ids.getTopLevelIdentifier());
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getSecondLevelIdentifier());
-//            for (OutputDataObjectType output : appOutputs) {
-//                ApplicationOutputResource resource = (ApplicationOutputResource) taskDetail.create(ResourceType.APPLICATION_OUTPUT);
-//                resource.setTaskId(taskDetail.getTaskId());
-//                resource.setOutputKey(output.getName());
-//                resource.setValue(output.getValue());
-//                if (output.getType() != null) {
-//                    resource.setDataType(output.getType().toString());
-//                }
-//                resource.setRequired(output.isIsRequired());
-//                resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
-//                resource.setDataMovement(output.isDataMovement());
-//                resource.setDataNameLocation(output.getLocation());
-//                resource.setAppArgument(output.getApplicationArgument());
-//                resource.setSearchQuery(output.getSearchQuery());
-////                resource.setMetadata(output.getMetaData());
-//                resource.save();
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while adding application outputs...", e);
-//            throw new RegistryException(e);
-//        }
-//        return (String) ids.getSecondLevelIdentifier();
-        return null;
-    }
-
     public String updateExperimentStatus(ExperimentStatus experimentStatus, String expId) throws RegistryException {
 //        try {
 //            ExperimentResource experiment = gatewayResource.getExperiment(expId);
@@ -1427,24 +1455,30 @@ public class ExperimentRegistry {
         return null;
     }
 
-    public String getNodeInstanceID(String nodeName) {
-        String node = nodeName.replaceAll("\\s", "");
-        return node + "_" + UUID.randomUUID();
-    }
 
     public String getExperimentID(String experimentName) {
         String exp = experimentName.replaceAll("\\s", "");
         return exp + "_" + UUID.randomUUID();
     }
 
-    public String getTaskID(String nodeName) {
-        String node = nodeName.replaceAll("\\s", "");
-        return node + "_" + UUID.randomUUID();
+    public String getProcessID(String experimentId) {
+        String process = experimentId.replaceAll("\\s", "");
+        return process + "_" + UUID.randomUUID();
+    }
+
+    public String getTaskID(String processId) {
+        String taskId = processId.replaceAll("\\s", "");
+        return taskId + "_" + UUID.randomUUID();
+    }
+
+    public String getStatusID(String parentId) {
+        String status = parentId.replaceAll("\\s", "");
+        return status + "_" + UUID.randomUUID();
     }
 
-    public String getDataTransferID(String taskId) {
-        String task = taskId.replaceAll("\\s", "");
-        return task + "_" + UUID.randomUUID();
+    public String getErrorID(String parentId) {
+        String error = parentId.replaceAll("\\s", "");
+        return error + "_" + UUID.randomUUID();
     }
 
     public void updateExperimentField(String expID, String fieldName, Object value) throws RegistryException {
@@ -2823,45 +2857,73 @@ public class ExperimentRegistry {
         }
     }
 
-    public boolean isValidStatusTransition(ExperimentState oldState, ExperimentState nextState) {
-        if (nextState == null) {
-            return false;
-        }
-        switch (oldState) {
-            case CREATED:
-                return true;
-            case VALIDATED:
-                return nextState != ExperimentState.CREATED;
-            case SCHEDULED:
-                return nextState != ExperimentState.CREATED
-                        || nextState != ExperimentState.VALIDATED;
-            case LAUNCHED:
-                return nextState != ExperimentState.CREATED
-                        || nextState != ExperimentState.VALIDATED
-                        || nextState != ExperimentState.SCHEDULED;
-            case EXECUTING:
-                return nextState != ExperimentState.CREATED
-                        || nextState != ExperimentState.VALIDATED
-                        || nextState != ExperimentState.SCHEDULED
-                        || nextState != ExperimentState.LAUNCHED;
-
-            case CANCELING:
-                return nextState == ExperimentState.CANCELING
-                        || nextState == ExperimentState.CANCELED
-                        || nextState == ExperimentState.COMPLETED
-                        || nextState == ExperimentState.FAILED;
-            case CANCELED:
-                return nextState == ExperimentState.CANCELED;
-            case COMPLETED:
-                return nextState == ExperimentState.COMPLETED;
-            case FAILED:
-                return nextState == ExperimentState.FAILED;
-            //case SUSPENDED:  // We don't change state to SUSPEND
-//            case UNKNOWN:
-//                return true;
-            default:
+    public boolean isValidStatusTransition(Object object1, Object object2) {
+        if(object1 instanceof ExperimentState && object2 instanceof ExperimentState){
+            ExperimentState oldState = (ExperimentState) object1;
+            ExperimentState nextState = (ExperimentState) object2;
+            if (nextState == null) {
+                return false;
+            }
+            switch (oldState) {
+                case CREATED:
+                    return true;
+                case VALIDATED:
+                    return nextState != ExperimentState.CREATED;
+                case SCHEDULED:
+                    return nextState != ExperimentState.CREATED
+                            || nextState != ExperimentState.VALIDATED;
+                case LAUNCHED:
+                    return nextState != ExperimentState.CREATED
+                            || nextState != ExperimentState.VALIDATED
+                            || nextState != ExperimentState.SCHEDULED;
+                case EXECUTING:
+                    return nextState != ExperimentState.CREATED
+                            || nextState != ExperimentState.VALIDATED
+                            || nextState != ExperimentState.SCHEDULED
+                            || nextState != ExperimentState.LAUNCHED;
+
+                case CANCELING:
+                    return nextState == ExperimentState.CANCELING
+                            || nextState == ExperimentState.CANCELED
+                            || nextState == ExperimentState.COMPLETED
+                            || nextState == ExperimentState.FAILED;
+                case CANCELED:
+                    return nextState == ExperimentState.CANCELED;
+                case COMPLETED:
+                    return nextState == ExperimentState.COMPLETED;
+                case FAILED:
+                    return nextState == ExperimentState.FAILED;
+                default:
+                    return false;
+            }
+        }else if(object1 instanceof ProcessState && object2 instanceof ProcessState){
+            ProcessState oldState = (ProcessState) object1;
+            ProcessState nextState = (ProcessState) object2;
+            if (nextState == null) {
+                return false;
+            }
+            //TODO
+            switch (oldState) {
+                case CREATED:
+                    return true;
+                default:
+                    return false;
+            }
+        }else if(object1 instanceof TaskState && object2 instanceof TaskState){
+            TaskState oldState = (TaskState) object1;
+            TaskState nextState = (TaskState) object2;
+            if (nextState == null) {
                 return false;
+            }
+            //TODO
+            switch (oldState) {
+                case CREATED:
+                    return true;
+                default:
+                    return false;
+            }
         }
+        return false;
     }
 
     public Object getExperimentInputs(String identifier) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/7ca8104a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
index 1702f4a..ae29a0d 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
@@ -558,4 +558,9 @@ public class ExperimentResource extends AbstractExpCatResource {
         }
         return processResources;
     }
+
+    public ProcessResource getProcess(String processID) throws RegistryException {
+        ExperimentCatResource resource = get(ResourceType.PROCESS, processID);
+        return (ProcessResource)resource;
+    }
 }


[8/9] airavata git commit: Fixing isExists CPI methods in experiment registry

Posted by sc...@apache.org.
Fixing isExists CPI methods in experiment registry


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

Branch: refs/heads/master
Commit: 99808c54d607e6ba1c530da03afffe08aec5904e
Parents: 11a208b
Author: Supun Nakandala <sc...@apache.org>
Authored: Mon Jun 22 13:45:36 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Mon Jun 22 13:45:36 2015 +0530

----------------------------------------------------------------------
 .../catalog/impl/ExperimentCatalogImpl.java     |    8 +-
 .../catalog/impl/ExperimentRegistry.java        | 1192 +-----------------
 2 files changed, 68 insertions(+), 1132 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/99808c54/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
index 22b4e02..95707f3 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
@@ -636,13 +636,13 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                 case EXPERIMENT:
                     return experimentRegistry.isExperimentExist((String) identifier);
                 case USER_CONFIGURATION_DATA:
-                    return experimentRegistry.isExperimentConfigDataExist((String) identifier);
+                    return experimentRegistry.isUserConfigDataExist((String) identifier);
                 case PROCESS:
-                    return experimentRegistry.isWFNodeExist((String) identifier);
+                    return experimentRegistry.isProcessExist((String) identifier);
                 case PROCESS_RESOURCE_SCHEDULE:
-                    return experimentRegistry.isComputationalSchedulingExist(dataType, (String) identifier);
+                    return experimentRegistry.isProcessResourceScheduleExist((String) identifier);
                 case TASK:
-                    return experimentRegistry.isTaskDetailExist((String) identifier);
+                    return experimentRegistry.isTaskExist((String) identifier);
                 default:
                     logger.error("Unsupported data type...", new UnsupportedOperationException());
                     throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/airavata/blob/99808c54/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 44bf0e6..a855808 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -29,18 +29,14 @@ import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.experiment.ExperimentStatistics;
 import org.apache.airavata.model.experiment.ExperimentSummaryModel;
 import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.job.JobModel;
 import org.apache.airavata.model.process.ProcessModel;
 import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.*;
 import org.apache.airavata.model.task.TaskModel;
 import org.apache.airavata.registry.core.experiment.catalog.ExpCatResourceUtils;
-import org.apache.airavata.registry.core.experiment.catalog.ExperimentCatResource;
 import org.apache.airavata.registry.core.experiment.catalog.ResourceType;
 import org.apache.airavata.registry.core.experiment.catalog.resources.*;
 import org.apache.airavata.registry.core.experiment.catalog.utils.ThriftDataModelConversion;
-import org.apache.airavata.registry.cpi.CompositeIdentifier;
-import org.apache.airavata.registry.cpi.ExperimentCatalogModelType;
 import org.apache.airavata.registry.cpi.RegistryException;
 import org.apache.airavata.registry.cpi.ResultOrderType;
 import org.apache.airavata.registry.cpi.utils.Constants;
@@ -478,7 +474,7 @@ public class ExperimentRegistry {
             existingExperiment.setProjectId(experiment.getProjectId());
             existingExperiment.setCreationTime(AiravataUtils.getTime(experiment.getCreationTime()));
             existingExperiment.setDescription(experiment.getDescription());
-            existingExperiment.setApplicationId(experiment.getExecutionId());
+            existingExperiment.setExecutionId(experiment.getExecutionId());
             existingExperiment.setEnableEmailNotification(experiment.isEnableEmailNotification());
 
             existingExperiment.save();
@@ -788,7 +784,8 @@ public class ExperimentRegistry {
 
     public void updateUserConfigDataField(String expID, String fieldName, Object value) throws RegistryException {
         try {
-            ExperimentResource experiment = gatewayResource.getExperiment(expID);
+            ExperimentResource experiment = new ExperimentResource();
+            experiment.setExperimentId(expID);
             UserConfigurationDataResource exConfigData = (UserConfigurationDataResource)
                     experiment.get(ResourceType.USER_CONFIGURATION_DATA, expID);
             if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
@@ -801,7 +798,7 @@ public class ExperimentRegistry {
                 exConfigData.setShareExperimentPublically((Boolean) value);
                 exConfigData.save();
             } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)) {
-                updateSchedulingData((ComputationalResourceSchedulingModel) value, experiment);
+                updateComputeResourceScheduling((ComputationalResourceSchedulingModel) value, expID);
             } else {
                 logger.error("Unsupported field type for Experiment config data");
             }
@@ -812,6 +809,20 @@ public class ExperimentRegistry {
         }
     }
 
+    public void updateComputeResourceScheduling(ComputationalResourceSchedulingModel value, String expID) throws RegistryException {
+        ExperimentResource experiment = new ExperimentResource();
+        experiment.setExperimentId(expID);
+        UserConfigurationDataResource configDataResource = experiment.getUserConfigurationDataResource();
+        configDataResource.setResourceHostId(value.getResourceHostId());
+        configDataResource.setTotalCpuCount(value.getTotalCPUCount());
+        configDataResource.setNodeCount(value.getNodeCount());
+        configDataResource.setNumberOfThreads(value.getNumberOfThreads());
+        configDataResource.setQueueName(value.getQueueName());
+        configDataResource.setWallTimeLimit(value.getWallTimeLimit());
+        configDataResource.setTotalPhysicalMemory(value.getTotalPhysicalMemory());
+        configDataResource.save();
+    }
+
     //CPI get methods
     public Object getExperiment(String expId, String fieldName) throws RegistryException {
         try {
@@ -1230,304 +1241,56 @@ public class ExperimentRegistry {
     }
 
 
-    // ids - taskId + jobid
-    public void updateJobDetails(JobModel jobDetails, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            String taskId = (String) ids.getTopLevelIdentifier();
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail(taskId);
-//            String jobId = (String) ids.getSecondLevelIdentifier();
-//            JobDetailResource jobDetail = taskDetail.getJobDetail(jobId);
-//            jobDetail.setTaskId(taskDetail.getTaskId());
-//            jobDetail.setJobDescription(jobDetails.getJobDescription());
-//            jobDetail.setCreationTime(AiravataUtils.getTime(jobDetails.getCreationTime()));
-//            jobDetail.setComputeResourceConsumed(jobDetails.getComputeResourceConsumed());
-//            jobDetail.setJobName(jobDetails.getJobName());
-//            jobDetail.setWorkingDir(jobDetails.getWorkingDir());
-//            jobDetail.save();
-//            JobStatus jobStatus = jobDetails.getJobStatus();
-//            if (jobStatus != null) {
-//                JobStatus status = getJobStatus(ids);
-//                if (status != null) {
-//                    updateJobStatus(jobStatus, ids);
-//                } else {
-//                    addJobStatus(jobStatus, ids);
-//                }
-//            }
-//            JobStatus applicationStatus = jobDetails.getJobStatus();
-//            if (applicationStatus != null) {
-//                JobStatus appStatus = getJobStatus(ids);
-//                if (appStatus != null) {
-//                    updateJobStatus(applicationStatus, ids);
-//                } else {
-//                    addJobStatus(applicationStatus, ids);
-//                }
-//            }
-////            List<ErrorDetails> errors = jobDetails.getErrors();
-////            if (errors != null && !errors.isEmpty()) {
-////                for (ErrorDetails error : errors) {
-////                    addErrorDetails(error, jobId);
-////                }
-////            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating job details...", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-//    public String addDataTransferDetails(DataTransferDetails transferDetails, String taskId) throws RegistryException {
-//        try {
-//            if (transferDetails.getTransferDescription() == null){
-//                throw new RegistryException("Data transfer description cannot be empty");
-//            }
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail(taskId);
-//            DataTransferDetailResource resource = (DataTransferDetailResource) taskDetail.create(ResourceType.DATA_TRANSFER_DETAIL);
-//            resource.setTaskId(taskId);
-//            resource.setTransferId(getDataTransferID(taskId));
-//
-//            resource.setTransferDescription(transferDetails.getTransferDescription());
-//            resource.setCreationTime(AiravataUtils.getTime(transferDetails.getCreationTime()));
-//            resource.save();
-//            String transferId = resource.getTransferId();
-//            TransferStatus transferStatus = transferDetails.getTransferStatus();
-//            if (transferStatus != null) {
-//                TransferStatus status = getDataTransferStatus(transferId);
-//                if (status != null) {
-//                    updateTransferStatus(transferStatus, transferId);
-//                } else {
-//                    CompositeIdentifier ids = new CompositeIdentifier(taskId, transferId);
-//                    addTransferStatus(transferStatus, ids);
-//                }
-//            }
-//            return resource.getTransferId();
-//        } catch (Exception e) {
-//            logger.error("Error while adding transfer details...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-
-//    public String updateDataTransferDetails(DataTransferDetails transferDetails, String transferId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL);
-//            DataTransferDetailResource resource = taskDetail.getDataTransferDetail(transferId);
-////            resource.setTaskDetailResource(taskDetail);
-//            resource.setTransferDescription(transferDetails.getTransferDescription());
-//            resource.setCreationTime(AiravataUtils.getTime(transferDetails.getCreationTime()));
-//            resource.save();
-//            String taskId = resource.getTaskId();
-//            TransferStatus transferStatus = transferDetails.getTransferStatus();
-//            if (transferStatus != null) {
-//                TransferStatus status = getDataTransferStatus(transferId);
-//                if (status != null) {
-//                    updateTransferStatus(transferStatus, transferId);
-//                } else {
-//                    CompositeIdentifier ids = new CompositeIdentifier(taskId, transferId);
-//                    addTransferStatus(transferStatus, ids);
-//                }
-//            }
-//            return resource.getTransferId();
-//        } catch (Exception e) {
-//            logger.error("Error while updating transfer details...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-
-    /**
-     * @param scheduling computational resource object
-     * @param ids        contains expId and taskId, if it is an experiment, task id can be null
-     * @return scheduling id
-     */
-    public String addComputationalResourceScheduling(ComputationalResourceSchedulingModel scheduling, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment((String) ids.getTopLevelIdentifier());
-//            ComputationSchedulingResource schedulingResource = (ComputationSchedulingResource) experiment.create(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING);
-//            if (ids.getSecondLevelIdentifier() != null) {
-//                WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = nodeDetailResource.getTaskDetail((String) ids.getSecondLevelIdentifier());
-//                schedulingResource.setTaskId(taskDetail.getTaskId());
-//            }
-//            schedulingResource.setExperimentId(experiment.getExpID());
-//            schedulingResource.setResourceHostId(scheduling.getResourceHostId());
-//            schedulingResource.setCpuCount(scheduling.getTotalCPUCount());
-//            schedulingResource.setNodeCount(scheduling.getNodeCount());
-//            schedulingResource.setNumberOfThreads(scheduling.getNumberOfThreads());
-//            schedulingResource.setQueueName(scheduling.getQueueName());
-//            schedulingResource.setWalltimeLimit(scheduling.getWallTimeLimit());
-//            schedulingResource.setPhysicalMemory(scheduling.getTotalPhysicalMemory());
-//            schedulingResource.setChessisName(scheduling.getChessisNumber());
-//            schedulingResource.save();
-//            return String.valueOf(schedulingResource.getSchedulingId());
-//        } catch (Exception e) {
-//            logger.error("Error while adding scheduling parameters...", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
+    //isExists CPI methods
+    public boolean isExperimentExist(String expID) throws RegistryException {
+        try {
+            return gatewayResource.isExists(ResourceType.EXPERIMENT, expID);
+        } catch (Exception e) {
+            logger.error("Error while retrieving experiment...", e);
+            throw new RegistryException(e);
+        }
     }
 
-//    /**
-//     * @param dataHandling advanced input data handling object
-//     * @param ids          contains expId and taskId
-//     * @return data handling id
-//     */
-//    public String addInputDataHandling(AdvancedInputDataHandling dataHandling, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment((String) ids.getTopLevelIdentifier());
-//            AdvanceInputDataHandlingResource dataHandlingResource = (AdvanceInputDataHandlingResource) experiment.create(ResourceType.ADVANCE_INPUT_DATA_HANDLING);
-//            if (ids.getSecondLevelIdentifier() != null) {
-//                WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = nodeDetailResource.getTaskDetail((String) ids.getSecondLevelIdentifier());
-//                dataHandlingResource.setTaskId(taskDetail.getTaskId());
-//            }
-//            dataHandlingResource.setProcessId(experiment.getExpID());
-//            dataHandlingResource.setWorkingDir(dataHandling.getUniqueWorkingDirectory());
-//            dataHandlingResource.setWorkingDirParent(dataHandling.getParentWorkingDirectory());
-//            dataHandlingResource.setStageInputFiles(dataHandling.isStageInputFilesToWorkingDir());
-//            dataHandlingResource.setCleanAfterJob(dataHandling.isCleanUpWorkingDirAfterJob());
-//            dataHandlingResource.save();
-//            return String.valueOf(dataHandlingResource.getDataHandlingId());
-//        } catch (Exception e) {
-//            logger.error("Error while adding input data handling...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    /**
-//     * @param dataHandling advanced output data handling object
-//     * @param ids          contains expId and taskId
-//     * @return data handling id
-//     */
-//    public String addOutputDataHandling(AdvancedOutputDataHandling dataHandling, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment((String) ids.getTopLevelIdentifier());
-//            AdvancedOutputDataHandlingResource dataHandlingResource = (AdvancedOutputDataHandlingResource) experiment.create(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING);
-//            if (ids.getSecondLevelIdentifier() != null) {
-//                WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = nodeDetailResource.getTaskDetail((String) ids.getSecondLevelIdentifier());
-//                dataHandlingResource.setTaskId(taskDetail.getTaskId());
-//            }
-//            dataHandlingResource.setProcessId(experiment.getExpID());
-//            dataHandlingResource.setOutputDataDir(dataHandling.getOutputDataDir());
-//            dataHandlingResource.setDataRegUrl(dataHandling.getDataRegistryURL());
-//            dataHandlingResource.setPersistOutputData(dataHandling.isPersistOutputData());
-//            dataHandlingResource.save();
-//            return String.valueOf(dataHandlingResource.getOutputDataHandlingId());
-//        } catch (Exception e) {
-//            logger.error("Error while adding output data handling...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-
-//    public String addQosParams(QualityOfServiceParams qosParams, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment((String) ids.getTopLevelIdentifier());
-//            QosParamResource qosParamResource = (QosParamResource) experiment.create(ResourceType.QOS_PARAM);
-//            if (ids.getSecondLevelIdentifier() != null) {
-//                WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = nodeDetailResource.getTaskDetail((String) ids.getSecondLevelIdentifier());
-//                qosParamResource.setTaskId(taskDetail.getTaskId());
-//            }
-//            qosParamResource.setProcessId(experiment.getExpID());
-//            qosParamResource.setStartExecutionAt(qosParams.getStartExecutionAt());
-//            qosParamResource.setExecuteBefore(qosParams.getExecuteBefore());
-//            qosParamResource.setNoOfRetries(qosParams.getNumberofRetries());
-//            qosParamResource.save();
-//            return String.valueOf(qosParamResource.getQosId());
-//        } catch (Exception e) {
-//            logger.error("Error while adding QOS params...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-
-    public String addErrorDetails(ErrorModel error, Object id) throws RegistryException {
-//        try {
-//
-//            ErrorDetailResource errorResource = null;
-//            ExperimentResource experiment;
-//            TaskDetailResource taskDetail;
-//            WorkflowNodeDetailResource workflowNode;
-//            // figure out the id is an experiment, node task or job
-//            if (id instanceof String) {
-//                // FIXME : for .12 we only save task related errors
-////                if (isExperimentExist((String) id)) {
-////                    experiment = gatewayResource.getExperiment((String) id);
-////                    errorResource = (ErrorDetailResource) experiment.create(ResourceType.ERROR_DETAIL);
-////                } else if (isWFNodeExist((String) id)) {
-////                    experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-////                    workflowNode = experiment.getWorkflowNode((String) id);
-////                    errorResource = (ErrorDetailResource) workflowNode.create(ResourceType.ERROR_DETAIL);
-////                    errorResource.setExperimentResource(workflowNode.getExperimentResource());
-////                } else
-//                if (isTaskDetailExist((String) id)) {
-//                    experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    taskDetail = workflowNode.getTaskDetail((String) id);
-//                    errorResource = (ErrorDetailResource) taskDetail.create(ResourceType.ERROR_DETAIL);
-//                    if (error.getErrorId() != null && !error.getErrorId().equals(airavata_commonsConstants.DEFAULT_ID)) {
-//                        List<ErrorDetailResource> errorDetailList = taskDetail.getErrorDetailList();
-//                        if (errorDetailList != null && !errorDetailList.isEmpty()) {
-//                            for (ErrorDetailResource errorDetailResource : errorDetailList) {
-//                                if (errorDetailResource.getErrorId() == Integer.parseInt(error.getErrorId())) {
-//                                    errorResource = errorDetailResource;
-//                                }
-//                            }
-//                        }
-//                    }
-//                    errorResource.setTaskId(taskDetail.getTaskId());
-//                    errorResource.setNodeId(taskDetail.getNodeId());
-//                    workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//                    errorResource.setExperimentId(workflowNode.getExperimentId());
-//                } else {
-////                    logger.error("The id provided is not an experiment id or a workflow id or a task id..");
-//                }
-//            } else if (id instanceof CompositeIdentifier) {
-//                CompositeIdentifier cid = (CompositeIdentifier) id;
-//                if (isJobDetailExist(cid)) {
-//                    experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    taskDetail = workflowNode.getTaskDetail((String) cid.getTopLevelIdentifier());
-//                    JobDetailResource jobDetail = taskDetail.getJobDetail((String) cid.getSecondLevelIdentifier());
-//                    errorResource = (ErrorDetailResource) jobDetail.create(ResourceType.ERROR_DETAIL);
-//                    if (error.getErrorId() != null && !error.getErrorId().equals(airavata_commonsConstants.DEFAULT_ID)) {
-//                        List<ErrorDetailResource> errorDetailList = taskDetail.getErrorDetailList();
-//                        if (errorDetailList != null && !errorDetailList.isEmpty()) {
-//                            for (ErrorDetailResource errorDetailResource : errorDetailList) {
-//                                if (errorDetailResource.getErrorId() == Integer.parseInt(error.getErrorId())) {
-//                                    errorResource = errorDetailResource;
-//                                }
-//                            }
-//                        }
-//                    }
-//                    errorResource.setTaskId(taskDetail.getTaskId());
-//                    errorResource.setNodeId(taskDetail.getNodeId());
-//                    workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//                    errorResource.setExperimentId(workflowNode.getExperimentId());
-//                } else {
-//                    logger.error("The id provided is not a job in the system..");
-//                }
-//            } else {
-////                logger.error("The id provided is not an experiment id or a workflow id or a task id or a composite " +
-////                        "identifier for job..");
-//            }
-//            if (errorResource != null) {
-//                errorResource.setCreationTime(AiravataUtils.getTime(error.getCreationTime()));
-//                errorResource.setActualErrorMsg(error.getActualErrorMessage());
-//                errorResource.setUserFriendlyErrorMsg(error.getUserFriendlyMessage());
-//                errorResource.setTransientPersistent(error.isTransientOrPersistent());
-//                errorResource.save();
-//                return String.valueOf(errorResource.getErrorId());
-//            }
-//        } catch (Exception e) {
-//            logger.error("Unable to add error details...", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
+    public boolean isUserConfigDataExist(String expID) throws RegistryException {
+        try {
+            ExperimentResource experiment = gatewayResource.getExperiment(expID);
+            experiment.isExists(ResourceType.USER_CONFIGURATION_DATA, expID);
+            return true;
+        } catch (Exception e) {
+            logger.error("Error while retrieving experiment...", e);
+            throw new RegistryException(e);
+        }
     }
 
+    public boolean isProcessExist(String processId) throws RegistryException {
+        try {
+            ExperimentResource experiment = new ExperimentResource();
+            return experiment.isExists(ResourceType.PROCESS, processId);
+        } catch (Exception e) {
+            logger.error("Error while retrieving process...", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public boolean isProcessResourceScheduleExist(String processId) throws RegistryException {
+        try {
+            ExperimentResource experiment = new ExperimentResource();
+            return experiment.isExists(ResourceType.PROCESS_RESOURCE_SCHEDULE, processId);
+        } catch (Exception e) {
+            logger.error("Error while retrieving process...", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public boolean isTaskExist(String taskId) throws RegistryException {
+        try {
+            ProcessResource process = new ProcessResource();
+            return process.isExists(ResourceType.TASK, taskId);
+        } catch (Exception e) {
+            logger.error("Error while retrieving task.....", e);
+            throw new RegistryException(e);
+        }
+    }
 
     public String getExperimentID(String experimentName) {
         String exp = experimentName.replaceAll("\\s", "");
@@ -1554,833 +1317,6 @@ public class ExperimentRegistry {
         return error + "_" + UUID.randomUUID();
     }
 
-//    public void updateQosParams(QualityOfServiceParams qosParams, ExperimentCatResource resource) throws RegistryException {
-//        try {
-//            if (resource instanceof ExperimentResource) {
-//                ExperimentResource expResource = (ExperimentResource) resource;
-//                QosParamResource qosr = expResource.getQOSparams(expResource.getExpID());
-//                qosr.setProcessId(expResource.getExpID());
-//                qosr.setStartExecutionAt(qosParams.getStartExecutionAt());
-//                qosr.setExecuteBefore(qosParams.getExecuteBefore());
-//                qosr.setNoOfRetries(qosParams.getNumberofRetries());
-//                qosr.save();
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating QOS data...", e);
-//            throw new RegistryException(e);
-//        }
-//
-//    }
-
-//    public void updateOutputDataHandling(AdvancedOutputDataHandling outputDataHandling, ExperimentCatResource resource) throws RegistryException {
-//        AdvancedOutputDataHandlingResource adodh;
-//        try {
-//            if (resource instanceof ExperimentResource) {
-//                ExperimentResource expResource = (ExperimentResource) resource;
-//                adodh = expResource.getOutputDataHandling(expResource.getExpID());
-//                adodh.setProcessId(expResource.getExpID());
-//            } else {
-//                TaskDetailResource taskDetailResource = (TaskDetailResource) resource;
-//                ExperimentResource experimentResource = new ExperimentResource();
-//                adodh = taskDetailResource.getOutputDataHandling(taskDetailResource.getTaskId());
-//                adodh.setTaskId(taskDetailResource.getTaskId());
-//                WorkflowNodeDetailResource nodeDetailResource = experimentResource.getWorkflowNode(taskDetailResource.getNodeId());
-//                adodh.setProcessId(nodeDetailResource.getProcessId());
-//            }
-//            adodh.setOutputDataDir(outputDataHandling.getOutputDataDir());
-//            adodh.setDataRegUrl(outputDataHandling.getDataRegistryURL());
-//            adodh.setPersistOutputData(outputDataHandling.isPersistOutputData());
-//            adodh.save();
-//        } catch (Exception e) {
-//            logger.error("Error while updating output data handling...", e);
-//            throw new RegistryException(e);
-//        }
-//
-//    }
-//
-//    public void updateInputDataHandling(AdvancedInputDataHandling inputDataHandling, ExperimentCatResource resource) throws RegistryException {
-//        AdvanceInputDataHandlingResource adidh;
-//        try {
-//            if (resource instanceof ExperimentResource) {
-//                ExperimentResource expResource = (ExperimentResource) resource;
-//                adidh = expResource.getInputDataHandling(expResource.getExpID());
-//                adidh.setProcessId(expResource.getExpID());
-//            } else {
-//                TaskDetailResource taskDetailResource = (TaskDetailResource) resource;
-//                ExperimentResource experimentResource = new ExperimentResource();
-//                adidh = taskDetailResource.getInputDataHandling(taskDetailResource.getTaskId());
-//                adidh.setTaskId(taskDetailResource.getTaskId());
-//                WorkflowNodeDetailResource nodeDetailResource = experimentResource.getWorkflowNode(taskDetailResource.getNodeId());
-//                adidh.setProcessId(nodeDetailResource.getProcessId());
-//            }
-//            adidh.setWorkingDir(inputDataHandling.getUniqueWorkingDirectory());
-//            adidh.setWorkingDirParent(inputDataHandling.getParentWorkingDirectory());
-//            adidh.setStageInputFiles(inputDataHandling.isSetStageInputFilesToWorkingDir());
-//            adidh.setCleanAfterJob(inputDataHandling.isCleanUpWorkingDirAfterJob());
-//            adidh.save();
-//        } catch (Exception e) {
-//            logger.error("Error while updating input data handling...", e);
-//            throw new RegistryException(e);
-//        }
-//
-//    }
-
-    public void updateSchedulingData(ComputationalResourceSchedulingModel resourceScheduling, ExperimentCatResource resource) throws RegistryException {
-//        ComputationSchedulingResource cmsr;
-//        try {
-//            if (resource instanceof ExperimentResource) {
-//                ExperimentResource expResource = (ExperimentResource) resource;
-//                cmsr = expResource.getComputationScheduling(expResource.getExpID());
-//                cmsr.setExperimentId(expResource.getExpID());
-//            } else {
-//                TaskDetailResource taskDetailResource = (TaskDetailResource) resource;
-//                ExperimentResource experimentResource = new ExperimentResource();
-//                cmsr = taskDetailResource.getComputationScheduling(taskDetailResource.getTaskId());
-//                cmsr.setTaskId(taskDetailResource.getTaskId());
-//                WorkflowNodeDetailResource nodeDetailResource = experimentResource.getWorkflowNode(taskDetailResource.getNodeId());
-//                cmsr.setExperimentId(nodeDetailResource.getExperimentId());
-//            }
-//            cmsr.setResourceHostId(resourceScheduling.getResourceHostId());
-//            cmsr.setCpuCount(resourceScheduling.getTotalCPUCount());
-//            cmsr.setNodeCount(resourceScheduling.getNodeCount());
-//            cmsr.setNumberOfThreads(resourceScheduling.getNumberOfThreads());
-//            cmsr.setQueueName(resourceScheduling.getQueueName());
-//            cmsr.setWalltimeLimit(resourceScheduling.getWallTimeLimit());
-//            cmsr.setPhysicalMemory(resourceScheduling.getTotalPhysicalMemory());
-//            cmsr.save();
-//        } catch (Exception e) {
-//            logger.error("Error while updating scheduling data...", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-
-    /**
-     * Method to get matching experiment list with pagination and ordering
-     * @param fieldName
-     * @param value
-     * @param limit
-     * @param offset
-     * @param orderByIdentifier
-     * @param resultOrderType
-     * @return
-     * @throws RegistryException
-     */
-
-    public List<TaskModel> getTaskDetails(String fieldName, Object value) throws RegistryException {
-//        try {
-//            if (fieldName.equals(Constants.FieldConstants.TaskDetailConstants.NODE_ID)) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) value);
-//                List<TaskDetailResource> taskDetails = workflowNode.getTaskDetails();
-//                return ThriftDataModelConversion.getTaskDetailsList(taskDetails);
-//            } else {
-//                logger.error("Unsupported field name to retrieve task detail list...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting task details...", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    public List<JobModel> getJobDetails(String fieldName, Object value) throws RegistryException {
-//        try {
-//            if (fieldName.equals(Constants.FieldConstants.JobDetaisConstants.TASK_ID)) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) value);
-//                List<JobDetailResource> jobDetailList = taskDetail.getJobDetailList();
-//                return ThriftDataModelConversion.getJobDetailsList(jobDetailList);
-//            } else {
-//                logger.error("Unsupported field name to retrieve job details list...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while job details...", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-//
-//    public List<DataTransferDetails> getDataTransferDetails(String fieldName, Object value) throws RegistryException {
-//        try {
-//            if (fieldName.equals(Constants.FieldConstants.DataTransferDetailConstants.TASK_ID)) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) value);
-//                List<DataTransferDetailResource> dataTransferDetailList = taskDetail.getDataTransferDetailList();
-//                return ThriftDataModelConversion.getDataTransferlList(dataTransferDetailList);
-//            } else {
-//                logger.error("Unsupported field name to retrieve job details list...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting data transfer details...", e);
-//            throw new RegistryException(e);
-//        }
-//        return null;
-//    }
-
-    public List<ErrorModel> getErrorDetails(String fieldName, Object value) throws RegistryException {
-//        try {
-//            if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.EXPERIMENT_ID)) {
-//                ExperimentResource experiment = gatewayResource.getExperiment((String) value);
-//                List<ErrorDetailResource> errorDetails = experiment.getErrorDetails();
-//                return ThriftDataModelConversion.getErrorDetailList(errorDetails);
-//            } else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.NODE_ID)) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) value);
-//                List<ErrorDetailResource> errorDetails = workflowNode.getErrorDetails();
-//                return ThriftDataModelConversion.getErrorDetailList(errorDetails);
-//            } else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.TASK_ID)) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) value);
-//                List<ErrorDetailResource> errorDetailList = taskDetail.getErrorDetailList();
-//                return ThriftDataModelConversion.getErrorDetailList(errorDetailList);
-//            } else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.JOB_ID)) {
-//                CompositeIdentifier cid = (CompositeIdentifier) value;
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) cid.getTopLevelIdentifier());
-//                JobDetailResource jobDetail = taskDetail.getJobDetail((String) cid.getSecondLevelIdentifier());
-//                List<ErrorDetailResource> errorDetails = jobDetail.getErrorDetails();
-//                return ThriftDataModelConversion.getErrorDetailList(errorDetails);
-//            } else {
-//                logger.error("Unsupported field name to retrieve job details list...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Unable to get error details...", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    public ComputationalResourceSchedulingModel getComputationalScheduling(ExperimentCatalogModelType type, String id) throws RegistryException {
-//        try {
-//            ComputationSchedulingResource computationScheduling = null;
-//            switch (type) {
-//                case EXPERIMENT:
-//                    ExperimentResource resource = gatewayResource.getExperiment(id);
-//                    computationScheduling = resource.getComputationScheduling(id);
-//                    break;
-//                case TASK_DETAIL:
-//                    ExperimentResource exp = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) exp.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    computationScheduling = taskDetail.getComputationScheduling(id);
-//                    break;
-//            }
-//            if (computationScheduling != null) {
-//                return ThriftDataModelConversion.getComputationalResourceScheduling(computationScheduling);
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting scheduling data..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-//    public AdvancedInputDataHandling getInputDataHandling(ExperimentCatalogModelType type, String id) throws RegistryException {
-//        try {
-//            AdvanceInputDataHandlingResource dataHandlingResource = null;
-//            switch (type) {
-//                case EXPERIMENT:
-//                    ExperimentResource resource = gatewayResource.getExperiment(id);
-//                    dataHandlingResource = resource.getInputDataHandling(id);
-//                    break;
-//                case TASK_DETAIL:
-//                    ExperimentResource exp = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) exp.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    dataHandlingResource = taskDetail.getInputDataHandling(id);
-//                    break;
-//            }
-//            if (dataHandlingResource != null) {
-//                return ThriftDataModelConversion.getAdvanceInputDataHandling(dataHandlingResource);
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting input data handling..", e);
-//            throw new RegistryException(e);
-//        }
-//        return null;
-//    }
-//
-//    public AdvancedOutputDataHandling getOutputDataHandling(ExperimentCatalogModelType type, String id) throws RegistryException {
-//        try {
-//            AdvancedOutputDataHandlingResource dataHandlingResource = null;
-//            switch (type) {
-//                case EXPERIMENT:
-//                    ExperimentResource resource = gatewayResource.getExperiment(id);
-//                    dataHandlingResource = resource.getOutputDataHandling(id);
-//                    break;
-//                case TASK_DETAIL:
-//                    ExperimentResource exp = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) exp.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    dataHandlingResource = taskDetail.getOutputDataHandling(id);
-//                    break;
-//            }
-//            if (dataHandlingResource != null) {
-//                return ThriftDataModelConversion.getAdvanceOutputDataHandling(dataHandlingResource);
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting output data handling...", e);
-//            throw new RegistryException(e);
-//        }
-//        return null;
-//    }
-//
-//    public QualityOfServiceParams getQosParams(ExperimentCatalogModelType type, String id) throws RegistryException {
-//        try {
-//            QosParamResource qosParamResource = null;
-//            switch (type) {
-//                case EXPERIMENT:
-//                    ExperimentResource resource = gatewayResource.getExperiment(id);
-//                    qosParamResource = resource.getQOSparams(id);
-//                    break;
-//            }
-//            if (qosParamResource != null) {
-//                return ThriftDataModelConversion.getQOSParams(qosParamResource);
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting qos params..", e);
-//            throw new RegistryException(e);
-//        }
-//        return null;
-//    }
-
-//    private WorkflowNodeDetailResource getWorkflowNodeDetailResource(String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            return resource.getWorkflowNode(nodeId);
-//        } catch (Exception e) {
-//            logger.error("Error while getting workflow node details...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public WorkflowNodeDetails getWorkflowNodeDetails(String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = resource.getWorkflowNode(nodeId);
-//            return ThriftDataModelConversion.getWorkflowNodeDetails(workflowNode);
-//        } catch (Exception e) {
-//            logger.error("Error while getting workflow node details...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public WorkflowNodeStatus getWorkflowNodeStatus(String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = resource.getWorkflowNode(nodeId);
-//            StatusResource workflowNodeStatus = workflowNode.getWorkflowNodeStatus();
-//            return ThriftDataModelConversion.getWorkflowNodeStatus(workflowNodeStatus);
-//        } catch (Exception e) {
-//            logger.error("Error while getting workflow node status..", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-
-    public List<OutputDataObjectType> getNodeOutputs(String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = resource.getWorkflowNode(nodeId);
-//            List<NodeOutputResource> nodeOutputs = workflowNode.getNodeOutputs();
-//            return ThriftDataModelConversion.getNodeOutputs(nodeOutputs);
-//        } catch (Exception e) {
-//            logger.error("Error while getting node outputs..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    public TaskModel getTaskDetails(String taskId) throws RegistryException {
-//        try {
-//            TaskDetailResource taskDetail = getTaskDetailResource(taskId);
-//            return ThriftDataModelConversion.getTaskModel(taskDetail);
-//        } catch (Exception e) {
-//            logger.error("Error while getting task details..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    private TaskResource getTaskDetailResource(String taskId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            return workflowNode.getTaskDetail(taskId);
-//        } catch (Exception e) {
-//            logger.error("Error while getting task details..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    public List<OutputDataObjectType> getApplicationOutputs(String taskId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail(taskId);
-//            List<ApplicationOutputResource> applicationOutputs = taskDetail.getApplicationOutputs();
-//            return ThriftDataModelConversion.getApplicationOutputs(applicationOutputs);
-//        } catch (Exception e) {
-//            logger.error("Error while getting application outputs..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    public TaskStatus getTaskStatus(String taskId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail(taskId);
-//            StatusResource taskStatus = taskDetail.getTaskStatus();
-//            return ThriftDataModelConversion.getTaskStatus(taskStatus);
-//        } catch (Exception e) {
-//            logger.error("Error while getting experiment outputs..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-
-    // ids contains task id + job id
-    public JobModel getJobDetails(CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            JobDetailResource jobDetail = taskDetail.getJobDetail((String) ids.getSecondLevelIdentifier());
-//            return ThriftDataModelConversion.getJobDetail(jobDetail);
-//        } catch (Exception e) {
-//            logger.error("Error while getting job details..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    // ids contains task id + job id
-    public JobStatus getJobStatus(CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            JobDetailResource jobDetail = taskDetail.getJobDetail((String) ids.getSecondLevelIdentifier());
-//            StatusResource jobStatus = jobDetail.getJobStatus();
-//            return ThriftDataModelConversion.getJobStatus(jobStatus);
-//        } catch (Exception e) {
-//            logger.error("Error while getting job status..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-//    public ApplicationStatus getApplicationStatus(CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            JobDetailResource jobDetail = taskDetail.getJobDetail((String) ids.getSecondLevelIdentifier());
-//            StatusResource applicationStatus = jobDetail.getApplicationStatus();
-//            return ThriftDataModelConversion.getApplicationStatus(applicationStatus);
-//        } catch (Exception e) {
-//            logger.error("Error while getting application status..", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-
-//    public DataTransferDetails getDataTransferDetails(String transferId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL);
-//            DataTransferDetailResource dataTransferDetail = taskDetail.getDataTransferDetail(transferId);
-//            return ThriftDataModelConversion.getDataTransferDetail(dataTransferDetail);
-//        } catch (Exception e) {
-//            logger.error("Error while getting data transfer details..", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public TransferStatus getDataTransferStatus(String transferId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL);
-//            DataTransferDetailResource dataTransferDetail = taskDetail.getDataTransferDetail(transferId);
-//            StatusResource dataTransferStatus = dataTransferDetail.getDataTransferStatus();
-//            return ThriftDataModelConversion.getTransferStatus(dataTransferStatus);
-//        } catch (Exception e) {
-//            logger.error("Error while getting data transfer status..", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-
-//    public List<String> getWorkflowNodeIds(String fieldName, Object value) throws RegistryException {
-//        List<String> wfIds = new ArrayList<String>();
-//        List<WorkflowNodeDetails> wfNodeDetails = getWFNodeDetails(fieldName, value);
-//        for (WorkflowNodeDetails wf : wfNodeDetails) {
-//            wfIds.add(wf.getNodeInstanceId());
-//        }
-//        return wfIds;
-//    }
-
-//
-//    public List<String> getTransferDetailIds(String fieldName, Object value) throws RegistryException {
-//        List<String> transferIds = new ArrayList<String>();
-//        List<DataTransferDetails> dataTransferDetails = getDataTransferDetails(fieldName, value);
-//        for (DataTransferDetails dtd : dataTransferDetails) {
-//            transferIds.add(dtd.getTransferID());
-//        }
-//        return transferIds;
-//    }
-
-
-    public void removeJobDetails(CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetailResource = nodeDetailResource.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            taskDetailResource.remove(ResourceType.JOB_DETAIL, (String) ids.getSecondLevelIdentifier());
-//        } catch (Exception e) {
-//            logger.error("Error while removing job details..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void removeDataTransferDetails(String transferId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = (TaskDetailResource) nodeDetailResource.create(ResourceType.TASK_DETAIL);
-//            taskDetail.remove(ResourceType.DATA_TRANSFER_DETAIL, transferId);
-//        } catch (Exception e) {
-//            logger.error("Error while removing transfer details..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void removeComputationalScheduling(ExperimentCatalogModelType dataType, String id) throws RegistryException {
-//        try {
-//            switch (dataType) {
-//                case EXPERIMENT:
-//                    ExperimentResource experiment = gatewayResource.getExperiment(id);
-//                    experiment.remove(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING, id);
-//                    break;
-//                case TASK_DETAIL:
-//                    ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    taskDetail.remove(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING, id);
-//                    break;
-//                default:
-//                    logger.error("Unsupported data type...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while removing scheduling data..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void removeInputDataHandling(ExperimentCatalogModelType dataType, String id) throws RegistryException {
-//        try {
-//            switch (dataType) {
-//                case EXPERIMENT:
-//                    ExperimentResource experiment = gatewayResource.getExperiment(id);
-//                    experiment.remove(ResourceType.ADVANCE_INPUT_DATA_HANDLING, id);
-//                    break;
-//                case TASK_DETAIL:
-//                    ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    taskDetail.remove(ResourceType.ADVANCE_INPUT_DATA_HANDLING, id);
-//                    break;
-//                default:
-//                    logger.error("Unsupported data type...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while removing input data handling..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void removeOutputDataHandling(ExperimentCatalogModelType dataType, String id) throws RegistryException {
-//        try {
-//            switch (dataType) {
-//                case EXPERIMENT:
-//                    ExperimentResource experiment = gatewayResource.getExperiment(id);
-//                    experiment.remove(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, id);
-//                    break;
-//                case TASK_DETAIL:
-//                    ExperimentResource resource = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) resource.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    taskDetail.remove(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, id);
-//                    break;
-//                default:
-//                    logger.error("Unsupported data type...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while removing output data handling..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void removeQOSParams(ExperimentCatalogModelType dataType, String id) throws RegistryException {
-//        try {
-//            switch (dataType) {
-//                case EXPERIMENT:
-//                    ExperimentResource experiment = gatewayResource.getExperiment(id);
-//                    experiment.remove(ResourceType.QOS_PARAM, id);
-//                    break;
-//                default:
-//                    logger.error("Unsupported data type...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while removing QOS params", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public boolean isExperimentExist(String expID) throws RegistryException {
-        try {
-            return gatewayResource.isExists(ResourceType.EXPERIMENT, expID);
-        } catch (Exception e) {
-            logger.error("Error while retrieving experiment...", e);
-            throw new RegistryException(e);
-        }
-    }
-
-    public boolean isExperimentConfigDataExist(String expID) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(expID);
-//            experiment.isExists(ResourceType.CONFIG_DATA, expID);
-//            return true;
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving experiment...", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public boolean isWFNodeExist(String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            return experiment.isExists(ResourceType.WORKFLOW_NODE_DETAIL, nodeId);
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving workflow...", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public boolean isTaskDetailExist(String taskId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            return wf.isExists(ResourceType.TASK_DETAIL, taskId);
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving task.....", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public boolean isJobDetailExist(CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = wf.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            return taskDetail.isExists(ResourceType.JOB_DETAIL, (String) ids.getSecondLevelIdentifier());
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving job details.....", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public boolean isTransferDetailExist(String transferId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = (TaskDetailResource) wf.create(ResourceType.TASK_DETAIL);
-//            return taskDetail.isExists(ResourceType.DATA_TRANSFER_DETAIL, transferId);
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving transfer details.....", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public boolean isComputationalSchedulingExist(ExperimentCatalogModelType dataType, String id) throws RegistryException {
-//        try {
-//            switch (dataType) {
-//                case EXPERIMENT:
-//                    ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    return experiment.isExists(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING, id);
-//                case TASK_DETAIL:
-//                    ExperimentResource exp = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) exp.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    return taskDetail.isExists(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING, id);
-//                default:
-//                    logger.error("Unsupported data type...");
-//
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving scheduling data.....", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public boolean isInputDataHandlingExist(ExperimentCatalogModelType dataType, String id) throws RegistryException {
-//        try {
-//            switch (dataType) {
-//                case EXPERIMENT:
-//                    ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    return experiment.isExists(ResourceType.ADVANCE_INPUT_DATA_HANDLING, id);
-//                case TASK_DETAIL:
-//                    ExperimentResource exp = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) exp.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    return taskDetail.isExists(ResourceType.ADVANCE_INPUT_DATA_HANDLING, id);
-//                default:
-//                    logger.error("Unsupported data type...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving input data handling.....", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public boolean isOutputDataHandlingExist(ExperimentCatalogModelType dataType, String id) throws RegistryException {
-//        try {
-//            switch (dataType) {
-//                case EXPERIMENT:
-//                    ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    return experiment.isExists(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, id);
-//                case TASK_DETAIL:
-//                    ExperimentResource exp = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource) exp.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-//                    return taskDetail.isExists(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, id);
-//                default:
-//                    logger.error("Unsupported data type...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving output data handling..", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public boolean isQOSParamsExist(ExperimentCatalogModelType dataType, String id) throws RegistryException {
-//        try {
-//            switch (dataType) {
-//                case EXPERIMENT:
-//                    ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                    return experiment.isExists(ResourceType.QOS_PARAM, id);
-////                case TASK_DETAIL:
-////                    ExperimentResource exp = (ExperimentResource)defaultGateway.create(ResourceType.EXPERIMENT);
-////                    WorkflowNodeDetailResource wf = (WorkflowNodeDetailResource)exp.create(ResourceType.WORKFLOW_NODE_DETAIL);
-////                    TaskDetailResource taskDetail = wf.getTaskDetail(id);
-////                    return taskDetail.isExists(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, id);
-//                default:
-//                    logger.error("Unsupported data type...");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving qos params..", e);
-//            throw new RegistryException(e);
-//        }
-        return false;
-    }
-
-    public void updateScheduling(ComputationalResourceSchedulingModel scheduling, String id, String type) throws RegistryException {
-//        try {
-//            if (type.equals(ExperimentCatalogModelType.EXPERIMENT.toString())) {
-//                ExperimentResource experiment = gatewayResource.getExperiment(id);
-//                updateSchedulingData(scheduling, experiment);
-//            } else if (type.equals(ExperimentCatalogModelType.TASK_DETAIL.toString())) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = workflowNode.getTaskDetail(id);
-//                updateSchedulingData(scheduling, taskDetail);
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating scheduling..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-//    public void updateInputDataHandling(AdvancedInputDataHandling dataHandling, String id, String type) throws RegistryException {
-//        try {
-//            if (type.equals(ExperimentCatalogModelType.EXPERIMENT.toString())) {
-//                ExperimentResource experiment = gatewayResource.getExperiment(id);
-//                updateInputDataHandling(dataHandling, experiment);
-//            } else if (type.equals(ExperimentCatalogModelType.TASK_DETAIL.toString())) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = workflowNode.getTaskDetail(id);
-//                updateInputDataHandling(dataHandling, taskDetail);
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating input data handling..", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public void updateOutputDataHandling(AdvancedOutputDataHandling dataHandling, String id, String type) throws RegistryException {
-//        try {
-//            if (type.equals(ExperimentCatalogModelType.EXPERIMENT.toString())) {
-//                ExperimentResource experiment = gatewayResource.getExperiment(id);
-//                updateOutputDataHandling(dataHandling, experiment);
-//            } else if (type.equals(ExperimentCatalogModelType.TASK_DETAIL.toString())) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = workflowNode.getTaskDetail(id);
-//                updateOutputDataHandling(dataHandling, taskDetail);
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating output data handling", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public void updateQOSParams(QualityOfServiceParams params, String id, String type) throws RegistryException {
-//        try {
-//            if (type.equals(ExperimentCatalogModelType.EXPERIMENT.toString())) {
-//                ExperimentResource experiment = gatewayResource.getExperiment(id);
-//                updateQosParams(params, experiment);
-//            } else if (type.equals(ExperimentCatalogModelType.TASK_DETAIL.toString())) {
-//                ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//                WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//                TaskDetailResource taskDetail = workflowNode.getTaskDetail(id);
-//                updateQosParams(params, taskDetail);
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating QOS data..", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-
-    /**
-     * To search the experiments of user with the given filter criteria and retrieve the results with
-     * pagination support. Results can be ordered based on an identifier (i.e column) either ASC or
-     * DESC.
-     *
-     * @param filters
-     * @param limit
-     * @param offset
-     * @param orderByIdentifier
-     * @param resultOrderType
-     * @return
-     * @throws RegistryException
-     */
 
     public boolean isValidStatusTransition(Object object1, Object object2) {
         if (object1 instanceof ExperimentState && object2 instanceof ExperimentState) {


[4/9] airavata git commit: Fixing get and search CPI methods in the experiment registry class

Posted by sc...@apache.org.
Fixing get and search CPI methods in the experiment registry class


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

Branch: refs/heads/master
Commit: bce94ae9379f937f1418500e22c50dd8540f8737
Parents: 1968ff4
Author: Supun Nakandala <sc...@apache.org>
Authored: Sun Jun 21 23:09:16 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Sun Jun 21 23:09:16 2015 +0530

----------------------------------------------------------------------
 .../catalog/impl/ExperimentCatalogImpl.java     |    4 +-
 .../catalog/impl/ExperimentRegistry.java        | 1241 +++++-------------
 .../resources/AbstractExpCatResource.java       |    3 +
 .../utils/ThriftDataModelConversion.java        |   15 +
 .../airavata/registry/cpi/utils/Constants.java  |   62 +-
 5 files changed, 346 insertions(+), 979 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/bce94ae9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
index 4fa7a1b..97fa40e 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
@@ -317,7 +317,7 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                 case EXPERIMENT_STATUS:
                     return experimentRegistry.getExperimentStatus((String) identifier);
                 case EXPERIMENT_ERROR:
-                    return experimentRegistry.getExperimentError((String) identifier);
+                    return experimentRegistry.getExperimentErrors((String) identifier);
                 case PROCESS:
                     return experimentRegistry.getProcess((String) identifier, null);
                 case PROCESS_RESOURCE_SCHEDULE:
@@ -331,7 +331,7 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                 case PROCESS_ERROR:
                     return experimentRegistry.getProcessError((String) identifier);
                 case TASK:
-                    return experimentRegistry.getTask((String) identifier);
+                    return experimentRegistry.getTask((String) identifier, null);
                 case TASK_STATUS:
                     return experimentRegistry.getTaskStatus((String) identifier);
                 case TASK_ERROR:

http://git-wip-us.apache.org/repos/asf/airavata/blob/bce94ae9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 442b6b8..aa0bb41 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -49,10 +49,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 
 public class ExperimentRegistry {
     private GatewayResource gatewayResource;
@@ -608,13 +605,12 @@ public class ExperimentRegistry {
         return experimentId;
     }
 
-    public void updateProcess(ProcessModel process, String experimentId) throws RegistryException {
+    public void updateProcess(ProcessModel process, String processId) throws RegistryException {
         try {
             ExperimentResource experimentResource = new ExperimentResource();
-            experimentResource.setExperimentId(experimentId);
-            ProcessResource processResource = experimentResource.getProcess(process.getProcessId());
+            ProcessResource processResource = experimentResource.getProcess(processId);
             processResource.setProcessId(process.getProcessId());
-            processResource.setExperimentId(experimentId);
+            processResource.setExperimentId(process.getExperimentId());
             processResource.setCreationTime(AiravataUtils.getTime(process.getCreationTime()));
             processResource.setLastUpdateTime(AiravataUtils.getTime(process.getLastUpdateTime()));
             processResource.setProcessDetail(process.getProcessDetail());
@@ -735,12 +731,11 @@ public class ExperimentRegistry {
         return addProcessError(processError, processID);
     }
 
-    public String updateTask(TaskModel task, String processID) throws RegistryException {
+    public String updateTask(TaskModel task, String taskID) throws RegistryException {
         try {
             ProcessResource processResource = new ProcessResource();
-            processResource.setProcessId(processID);
-            TaskResource taskResource = processResource.getTask(task.getTaskId());
-            taskResource.setParentProcessId(getProcessID(processID));
+            TaskResource taskResource = processResource.getTask(taskID);
+            taskResource.setParentProcessId(task.getParentProcessId());
             taskResource.setTaskType(task.getTaskType().toString());
             taskResource.setCreationTime(AiravataUtils.getTime(task.getCreationTime()));
             taskResource.setLastUpdateTime(AiravataUtils.getTime(task.getLastUpdateTime()));
@@ -755,10 +750,10 @@ public class ExperimentRegistry {
                 updateTaskError(task.getTaskError(), task.getTaskId());
             }
         } catch (Exception e) {
-            logger.error(processID, "Error while adding task...", e);
+            logger.error(taskID, "Error while adding task...", e);
             throw new RegistryException(e);
         }
-        return processID;
+        return taskID;
     }
 
     public String updateTaskStatus(TaskStatus taskStatus, String taskID) throws RegistryException {
@@ -779,13 +774,12 @@ public class ExperimentRegistry {
             } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
                 experiment.setUserName((String) value);
                 experiment.save();
-            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC)) {
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.DESCRIPTION)) {
                 experiment.setDescription((String) value);
                 experiment.save();
             } else {
                 logger.error("Unsupported field type for Experiment");
             }
-
         } catch (Exception e) {
             logger.error("Error while updating fields in experiment...", e);
             throw new RegistryException(e);
@@ -797,16 +791,16 @@ public class ExperimentRegistry {
             ExperimentResource experiment = gatewayResource.getExperiment(expID);
             UserConfigurationDataResource exConfigData = (UserConfigurationDataResource)
                     experiment.get(ResourceType.USER_CONFIGURATION_DATA, expID);
-            if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
+            if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
                 exConfigData.setAiravataAutoSchedule((Boolean) value);
                 exConfigData.save();
-            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
+            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
                 exConfigData.setOverrideManualScheduledParams((Boolean) value);
                 exConfigData.save();
-            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.SHARE_EXP)) {
+            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.SHARE_EXP)) {
                 exConfigData.setShareExperimentPublically((Boolean) value);
                 exConfigData.save();
-            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)) {
+            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)) {
                 updateSchedulingData((ComputationalResourceSchedulingModel) value, experiment);
             } else {
                 logger.error("Unsupported field type for Experiment config data");
@@ -818,588 +812,319 @@ public class ExperimentRegistry {
         }
     }
 
+    //CPI get methods
+    public Object getExperiment(String expId, String fieldName) throws RegistryException {
+        try {
+            ExperimentResource resource = gatewayResource.getExperiment(expId);
+            if (fieldName == null) {
+                return ThriftDataModelConversion.getExperiment(resource);
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
+                return resource.getUserName();
+            }else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY_EXECUTION_ID)) {
+                return resource.getGatewayExecutionId();
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
+                return resource.getExperimentName();
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.DESCRIPTION)) {
+                return resource.getDescription();
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXECUTION_ID)) {
+                return resource.getExecutionId();
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
+                return resource.getProjectId();
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_INPUTS)) {
+                return ThriftDataModelConversion.getExpInputs(resource.getExperimentInputs());
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_OUTPUTS)) {
+                return ThriftDataModelConversion.getExpOutputs(resource.getExperimentOutputs());
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS)) {
+                return ThriftDataModelConversion.getExperimentStatus(resource.getExperimentStatus());
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_ERRORS)) {
+                return ThriftDataModelConversion.getExperimentErrorList(resource.getExperimentErrors());
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_CONFIGURATION_DATA)) {
+                return ThriftDataModelConversion.getUserConfigData(resource.getUserConfigurationDataResource());
+            } else {
+                logger.error("Unsupported field name for experiment basic data..");
+            }
+        } catch (Exception e) {
+            logger.error("Error while getting experiment info...", e);
+            throw new RegistryException(e);
+        }
+        return null;
+    }
 
-//    public String addWorkflowNodeStatus(WorkflowNodeStatus status, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment((String) ids.getTopLevelIdentifier());
-//            WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) ids.getSecondLevelIdentifier());
-//            StatusResource statusResource = (StatusResource) experiment.create(ResourceType.STATUS);
-//            statusResource.setProcessId(experiment.getExpID());
-//            statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            statusResource.setStatusType(StatusType.WORKFLOW_NODE.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            if (status.getWorkflowNodeState() == null) {
-//                statusResource.setState(WorkflowNodeState.UNKNOWN.toString());
-//            } else {
-//                statusResource.setState(status.getWorkflowNodeState().toString());
-//            }
-//            statusResource.save();
-//            return String.valueOf(statusResource.getStatusId());
-//        } catch (Exception e) {
-//            logger.error("Error while adding workflow node status...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public String updateWorkflowNodeStatus(WorkflowNodeStatus status, String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode(nodeId);
-//            StatusResource statusResource = workflowNode.getWorkflowNodeStatus();
-//            if (statusResource == null) {
-//                statusResource = (StatusResource) workflowNode.create(ResourceType.STATUS);
-//            }
-//            statusResource.setProcessId(workflowNode.getProcessId());
-//            statusResource.setNodeId(nodeId);
-//            statusResource.setStatusType(StatusType.WORKFLOW_NODE.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            statusResource.setState(status.getWorkflowNodeState().toString());
-//            statusResource.save();
-//            logger.debugId(nodeId, "Updated workflow node {} status to {}.", nodeId, status.toString());
-//            return String.valueOf(statusResource.getStatusId());
-//        } catch (Exception e) {
-//            logger.errorId(nodeId, "Error while updating workflow node status to " + status.toString() + "...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
+    public Object getExperimentInputs(String expID) throws RegistryException {
+        return getExperiment(expID, Constants.FieldConstants.ExperimentConstants.EXPERIMENT_INPUTS);
+    }
 
-    public String addTaskStatus(TaskStatus status, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) ids.getTopLevelIdentifier());
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getSecondLevelIdentifier());
-//            StatusResource statusResource = (StatusResource) workflowNode.create(ResourceType.STATUS);
-//            statusResource.setExperimentId(workflowNode.getExperimentId());
-//            statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            statusResource.setTaskId(taskDetail.getTaskId());
-//            statusResource.setStatusType(StatusType.TASK.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            if (status.getState() == null) {
-////              statusResource.setState(TaskState.UNKNOWN.toString());
-//            } else {
-//                statusResource.setState(status.getState().toString());
-//            }
-//            statusResource.save();
-//            return String.valueOf(statusResource.getStatusId());
-//        } catch (Exception e) {
-//            logger.error("Error while adding task status...", e);
-//            throw new RegistryException(e);
-//        }
+    public Object getExperimentOutputs(String expID) throws RegistryException {
+        return getExperiment(expID, Constants.FieldConstants.ExperimentConstants.EXPERIMENT_OUTPUTS);
+    }
+
+    public Object getExperimentErrors(String expID) throws RegistryException {
+        return getExperiment(expID, Constants.FieldConstants.ExperimentConstants.EXPERIMENT_ERRORS);
+    }
+
+    public Object getExperimentStatus(String expID) throws RegistryException {
+        return getExperiment(expID, Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS);
+    }
+
+    public Object getUserConfigData(String expId, String fieldName) throws RegistryException {
+        try {
+            ExperimentResource resource = gatewayResource.getExperiment(expId);
+            UserConfigurationDataResource userConfigData = resource.getUserConfigurationDataResource();
+            if (fieldName == null) {
+                return ThriftDataModelConversion.getUserConfigData(userConfigData);
+            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
+                return userConfigData.getAiravataAutoSchedule();
+            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
+                return userConfigData.getOverrideManualScheduledParams();
+            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.SHARE_EXP)) {
+                return userConfigData.getShareExperimentPublically();
+            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)){
+                return ThriftDataModelConversion.getComputationalResourceScheduling(userConfigData);
+            } else {
+                logger.error("Unsupported field name for experiment configuration data..");
+            }
+        } catch (Exception e) {
+            logger.error("Error while getting config data..", e);
+            throw new RegistryException(e);
+        }
         return null;
     }
 
-    /**
-     * @param status job status
-     * @param ids    composite id will contain taskid and jobid
-     * @return status id
-     */
-    public String addJobStatus(JobStatus status, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//            JobDetailResource jobDetail = taskDetail.getJobDetail((String) ids.getSecondLevelIdentifier());
-//            StatusResource statusResource = (StatusResource) jobDetail.create(ResourceType.STATUS);
-//            statusResource.setExperimentId(workflowNode.getExperimentId());
-//            statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            statusResource.setTaskId(taskDetail.getTaskId());
-//            statusResource.setStatusType(StatusType.JOB.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            if (status.getJobState() == null) {
-//                statusResource.setState(JobState.UNKNOWN.toString());
-//            } else {
-//                statusResource.setState(status.getJobState().toString());
-//            }
-//            statusResource.save();
-//            return String.valueOf(statusResource.getStatusId());
-//        } catch (Exception e) {
-//            logger.error("Error while adding job status...", e);
-//            throw new RegistryException(e);
-//        }
+    //Todo
+    public Object getProcess(String processId, String fieldName) throws RegistryException {
+        try {
+            ExperimentResource experimentResource = new ExperimentResource();
+            ProcessResource resource = experimentResource.getProcess(processId);
+            if (fieldName == null) {
+                return ThriftDataModelConversion.getProcesModel(resource);
+            } else {
+                logger.error("Unsupported field name for experiment basic data..");
+            }
+        }catch (Exception e) {
+            logger.error("Error while getting process data..", e);
+            throw new RegistryException(e);
+        }
         return null;
     }
 
-    public String updateJobStatus(JobStatus status, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            JobDetailResource jobDetail = taskDetail.getJobDetail((String) ids.getSecondLevelIdentifier());
-//            StatusResource statusResource = jobDetail.getJobStatus();
-//            workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//            statusResource.setExperimentId(workflowNode.getExperimentId());
-//            statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            statusResource.setTaskId(taskDetail.getTaskId());
-//            statusResource.setStatusType(StatusType.JOB.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            statusResource.setState(status.getJobState().toString());
-//            statusResource.save();
-//            logger.info(ids.toString(), "Updated job status to {}", status.toString());
-//            return String.valueOf(statusResource.getStatusId());
-//        } catch (Exception e) {
-//            logger.error(ids.toString(), "Error while updating job status to " + status.toString() + " ...", e);
-//            throw new RegistryException(e);
-//        }
+    public Object getProcessError(String identifier) {
         return null;
     }
 
-//    /**
-//     * @param status application status
-//     * @param ids    composite id will contain taskid and jobid
-//     * @return status id
-//     */
-//    public String addApplicationStatus(ApplicationStatus status, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            JobDetailResource jobDetail = taskDetail.getJobDetail((String) ids.getSecondLevelIdentifier());
-//            StatusResource statusResource = (StatusResource) jobDetail.create(ResourceType.STATUS);
-//            workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//            statusResource.setProcessId(workflowNode.getProcessId());
-//            statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            statusResource.setTaskId(taskDetail.getTaskId());
-//            statusResource.setStatusType(StatusType.APPLICATION.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            if (status.getApplicationState() == null) {
-//                statusResource.setState("UNKNOWN");
-//            } else {
-//                statusResource.setState(status.getApplicationState());
-//            }
-//            statusResource.save();
-//            return String.valueOf(statusResource.getStatusId());
-//        } catch (Exception e) {
-//            logger.error("Unable to read airavata-server properties", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public void updateApplicationStatus(ApplicationStatus status, String jobId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL);
-//            JobDetailResource jobDetail = taskDetail.getJobDetail(jobId);
-//            StatusResource statusResource = jobDetail.getApplicationStatus();
-//            workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//            statusResource.setProcessId(workflowNode.getProcessId());
-//            statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            statusResource.setTaskId(taskDetail.getTaskId());
-//            statusResource.setStatusType(StatusType.APPLICATION.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            statusResource.setState(status.getApplicationState());
-//            statusResource.save();
-//        } catch (Exception e) {
-//            logger.error("Error while updating application status...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
+    public Object getProcessStatus(String identifier) {
+        return null;
+    }
 
+    public Object getProcessInputs(String identifier) {
+        return null;
+    }
 
-//    public String addTransferStatus(TransferStatus status, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            DataTransferDetailResource dataTransferDetail = taskDetail.getDataTransferDetail((String) ids.getSecondLevelIdentifier());
-//            StatusResource statusResource = (StatusResource) dataTransferDetail.create(ResourceType.STATUS);
-//            workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//            statusResource.setProcessId(workflowNode.getProcessId());
-//            statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            statusResource.setTaskId(taskDetail.getTaskId());
-//            statusResource.setTransferId(dataTransferDetail.getTransferId());
-//            statusResource.setStatusType(StatusType.DATA_TRANSFER.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            if (status.getTransferState() == null) {
-//                statusResource.setState(TransferState.UNKNOWN.toString());
-//            } else {
-//                statusResource.setState(status.getTransferState().toString());
-//            }
-//            statusResource.save();
-//            return String.valueOf(statusResource.getStatusId());
-//        } catch (Exception e) {
-//            logger.error("Error while adding transfer status...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public void updateTransferStatus(TransferStatus status, String transferId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL);
-//            DataTransferDetailResource dataTransferDetail = taskDetail.getDataTransferDetail(transferId);
-//            StatusResource statusResource = dataTransferDetail.getDataTransferStatus();
-//
-//            String taskId = dataTransferDetail.getTaskId();
-//            taskDetail = workflowNode.getTaskDetail(taskId);
-//            workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//            if (workflowNode != null) {
-//                statusResource.setProcessId(workflowNode.getProcessId());
-//                statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            }
-//            statusResource.setTaskId(taskId);
-//            statusResource.setTransferId(transferId);
-//            statusResource.setStatusType(StatusType.DATA_TRANSFER.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            statusResource.setState(status.getTransferState().toString());
-//            statusResource.save();
-//        } catch (Exception e) {
-//            logger.error("Error while updating transfer status...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public String addWorkflowNodeDetails(WorkflowNodeDetails nodeDetails, String expId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(expId);
-//            WorkflowNodeDetailResource resource = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            resource.setProcessId(expId);
-//            resource.setNodeName(nodeDetails.getNodeName());
-//            resource.setExecutionUnit(nodeDetails.getExecutionUnit().toString());
-//            resource.setExecutionUnitData(nodeDetails.getExecutionUnitData());
-//            resource.setCreationTime(AiravataUtils.getTime(nodeDetails.getCreationTime()));
-//            resource.setNodeInstanceId(getNodeInstanceID(nodeDetails.getNodeName()));
-//            resource.save();
-//            String nodeId = resource.getNodeInstanceId();
-//            List<InputDataObjectType> nodeInputs = nodeDetails.getNodeInputs();
-//            if (nodeInputs != null) {
-//                addWorkflowInputs(nodeDetails.getNodeInputs(), resource);
-//            }
-//            List<OutputDataObjectType> nodeOutputs = nodeDetails.getNodeOutputs();
-//            if (nodeOutputs != null && !nodeOutputs.isEmpty()) {
-//                CompositeIdentifier ids = new CompositeIdentifier(expId, nodeId);
-//                addNodeOutputs(nodeOutputs, ids);
-//            }
-//            WorkflowNodeStatus workflowNodeStatus = nodeDetails.getWorkflowNodeStatus();
-//            CompositeIdentifier ids = new CompositeIdentifier(expId, nodeId);
-//            if (workflowNodeStatus == null) {
-//                workflowNodeStatus = new WorkflowNodeStatus();
-//            }
-////                if (workflowNodeStatus.getWorkflowNodeState() != null){
-////                    WorkflowNodeStatus status = getWorkflowNodeStatus(nodeId);
-////                    if (status != null){
-////                        updateWorkflowNodeStatus(workflowNodeStatus, nodeId);
-////                    }else {
-////                        addWorkflowNodeStatus(workflowNodeStatus,ids);
-////                    }
-////                }else {
-////                    workflowNodeStatus.setWorkflowNodeState(WorkflowNodeState.UNKNOWN);
-////                    addWorkflowNodeStatus(workflowNodeStatus, ids);
-////                }
-//            workflowNodeStatus.setWorkflowNodeState(WorkflowNodeState.UNKNOWN);
-//            addWorkflowNodeStatus(workflowNodeStatus, ids);
-//            List<TaskDetails> taskDetails = nodeDetails.getTaskDetailsList();
-//            if (taskDetails != null && !taskDetails.isEmpty()) {
-//                for (TaskDetails task : taskDetails) {
-//                    addTaskDetails(task, nodeId);
-//                }
-//            }
-//            List<ErrorDetails> errors = nodeDetails.getErrors();
-//            if (errors != null && !errors.isEmpty()) {
-//                for (ErrorDetails error : errors) {
-//                    addErrorDetails(error, nodeId);
-//                }
-//            }
-//            return nodeId;
-//        } catch (Exception e) {
-//            logger.error("Error while adding workflow node details...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
-//
-//    public void updateWorkflowNodeDetails(WorkflowNodeDetails nodeDetails, String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode(nodeId);
-//            workflowNode.setNodeName(nodeDetails.getNodeName());
-//            workflowNode.setExecutionUnit(nodeDetails.getExecutionUnit().toString());
-//            workflowNode.setExecutionUnitData(nodeDetails.getExecutionUnitData());
-//            workflowNode.setCreationTime(AiravataUtils.getTime(nodeDetails.getCreationTime()));
-//            workflowNode.setNodeInstanceId(nodeId);
-//            workflowNode.save();
-//            String expID = workflowNode.getProcessId();
-//            List<InputDataObjectType> nodeInputs = nodeDetails.getNodeInputs();
-//            if (nodeInputs != null) {
-//                updateWorkflowInputs(nodeDetails.getNodeInputs(), workflowNode);
-//            }
-//            List<OutputDataObjectType> nodeOutputs = nodeDetails.getNodeOutputs();
-//            if (nodeOutputs != null && !nodeOutputs.isEmpty()) {
-//                updateNodeOutputs(nodeOutputs, nodeId);
-//            }
-//            WorkflowNodeStatus workflowNodeStatus = nodeDetails.getWorkflowNodeStatus();
-//            if (workflowNodeStatus != null) {
-//                if (isWFNodeExist(nodeId)) {
-//                    updateWorkflowNodeStatus(workflowNodeStatus, nodeId);
-//                } else {
-//                    CompositeIdentifier ids = new CompositeIdentifier(expID, nodeId);
-//                    addWorkflowNodeStatus(workflowNodeStatus, ids);
-//                }
-//            }
-//            List<TaskDetails> taskDetails = nodeDetails.getTaskDetailsList();
-//            if (taskDetails != null && !taskDetails.isEmpty()) {
-//                for (TaskDetails task : taskDetails) {
-//                    String taskID = task.getTaskID();
-//                    if (isTaskDetailExist(taskID)) {
-//                        updateTaskDetails(task, taskID);
-//                    } else {
-//                        addTaskDetails(task, nodeId);
-//                    }
-//                }
-//            }
-//            List<ErrorDetails> errors = nodeDetails.getErrors();
-//            if (errors != null && !errors.isEmpty()) {
-//                for (ErrorDetails error : errors) {
-//                    addErrorDetails(error, nodeId);
-//                }
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating workflow node details...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
+    public Object getProcessOutputs(String identifier) {
+        return null;
+    }
 
+    public Object getProcessResourceSchedule(String identifier, Object o) {
+        return null;
+    }
 
-//    public String addTaskDetails(TaskModel taskDetails, String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode(nodeId);
-//            TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL);
-//            taskDetail.setNodeId(nodeId);
-//            taskDetail.setTaskId(getTaskID(workflowNode.getNodeName()));
-//            taskDetail.setApplicationId(taskDetails.getApplicationId());
-//            taskDetail.setApplicationVersion(taskDetails.getApplicationVersion());
-//            taskDetail.setCreationTime(AiravataUtils.getTime(taskDetails.getCreationTime()));
-//            taskDetail.setEnableEmailNotifications(taskDetails.isEnableEmailNotification());
-//            taskDetail.save();
-//
-//            List<String> emailAddresses = taskDetails.getEmailAddresses();
-//            if (emailAddresses != null && !emailAddresses.isEmpty()){
-//                for (String email : emailAddresses){
-//                    NotificationEmailResource emailResource = new NotificationEmailResource();
-//                    emailResource.setProcessId(workflowNode.getProcessId());
-//                    emailResource.setTaskId(taskDetail.getTaskId());
-//                    emailResource.setEmailAddress(email);
-//                    emailResource.save();
-//                }
-//            }
-//
-//            List<InputDataObjectType> applicationInputs = taskDetails.getApplicationInputs();
-//            if (applicationInputs != null) {
-//                addAppInputs(applicationInputs, taskDetail);
-//            }
-//            List<OutputDataObjectType> applicationOutput = taskDetails.getApplicationOutputs();
-//            if (applicationOutput != null) {
-//                addAppOutputs(applicationOutput, taskDetail);
-//            }
-//            ComputationalResourceSchedulingModel taskScheduling = taskDetails.getTaskScheduling();
-//            if (taskScheduling != null) {
-//                addComputationScheduling(taskScheduling, taskDetail);
-//            }
-////            AdvancedInputDataHandling inputDataHandling = taskDetails.getAdvancedInputDataHandling();
-////            if (inputDataHandling != null) {
-////                addInputDataHandling(inputDataHandling, taskDetail);
-////            }
-////            AdvancedOutputDataHandling outputDataHandling = taskDetails.getAdvancedOutputDataHandling();
-////            if (outputDataHandling != null) {
-////                addOutputDataHandling(outputDataHandling, taskDetail);
-////            }
-//
-//            List<JobModel> jobDetailsList = taskDetails.getJobDetailsList();
-//            if (jobDetailsList != null && !jobDetailsList.isEmpty()) {
-//                for (JobDetails job : jobDetailsList) {
-//                    CompositeIdentifier ids = new CompositeIdentifier(taskDetail.getTaskId(), job.getJobID());
-//                    addJobDetails(job, ids);
-//                }
-//            }
-//
-//            List<DataTransferDetails> dataTransferDetailsList = taskDetails.getDataTransferDetailsList();
-//            if (dataTransferDetailsList != null && !dataTransferDetailsList.isEmpty()) {
-//                for (DataTransferDetails transferDetails : dataTransferDetailsList) {
-//                    addDataTransferDetails(transferDetails, taskDetail.getTaskId());
-//                }
-//            }
-//
-//            List<ErrorDetails> errors = taskDetails.getErrors();
-//            if (errors != null && !errors.isEmpty()) {
-//                for (ErrorDetails error : errors) {
-//                    addErrorDetails(error, taskDetail.getTaskId());
-//                }
-//            }
-//
-//            TaskStatus taskStatus = taskDetails.getTaskStatus();
-//            CompositeIdentifier ids = new CompositeIdentifier(nodeId, taskDetail.getTaskId());
-//            if (taskStatus != null) {
-//                if (taskStatus.getExecutionState() != null) {
-//                    addTaskStatus(taskStatus, ids);
-//                } else {
-//                    taskStatus.setExecutionState(TaskState.UNKNOWN);
-//                    addTaskStatus(taskStatus, ids);
-//                }
-//            } else {
-//                TaskStatus status = new TaskStatus();
-//                status.setExecutionState(TaskState.UNKNOWN);
-//                addTaskStatus(status, ids);
-//            }
-//            return taskDetail.getTaskId();
-//        } catch (Exception e) {
-//            logger.error("Error while adding task details...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
+    public Object getTask(String taskId, String fieldName) throws RegistryException {
+        try {
+            ProcessResource processResource = new ProcessResource();
+            TaskResource resource = processResource.getTask(taskId);
+            if (fieldName == null) {
+                return ThriftDataModelConversion.getTaskModel(resource);
+            } else {
+                logger.error("Unsupported field name for experiment basic data..");
+            }
+        }catch (Exception e) {
+            logger.error("Error while getting process data..", e);
+            throw new RegistryException(e);
+        }
+        return null;
+    }
 
-//    public String updateTaskDetails(TaskModel taskDetails, String taskId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail(taskId);
-////            taskDetail.setWorkflowNodeDetailResource(workflowNode);
-//            taskDetail.setApplicationId(taskDetails.getApplicationId());
-//            taskDetail.setApplicationVersion(taskDetails.getApplicationVersion());
-//            taskDetail.setCreationTime(AiravataUtils.getTime(taskDetails.getCreationTime()));
-//            taskDetail.setApplicationDeploymentId(taskDetails.getApplicationDeploymentId());
-//            taskDetail.setEnableEmailNotifications(taskDetails.isEnableEmailNotification());
-//            taskDetail.save();
-//
-//            workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//
-//            List<String> emailAddresses = taskDetails.getEmailAddresses();
-//            // remove existing emails
-//            taskDetail.remove(ResourceType.NOTIFICATION_EMAIL, taskId);
-//            if (emailAddresses != null && !emailAddresses.isEmpty()){
-//                for (String email : emailAddresses){
-//                    NotificationEmailResource emailResource = new NotificationEmailResource();
-//                    emailResource.setProcessId(workflowNode.getProcessId());
-//                    emailResource.setTaskId(taskId);
-//                    emailResource.setEmailAddress(email);
-//                    emailResource.save();
-//                }
-//            }
-//            List<InputDataObjectType> applicationInputs = taskDetails.getApplicationInputs();
-//            if (applicationInputs != null) {
-//                updateAppInputs(applicationInputs, taskDetail);
-//            }
-//            ComputationalResourceScheduling taskScheduling = taskDetails.getTaskScheduling();
-//            if (taskScheduling != null) {
-//                updateSchedulingData(taskScheduling, taskDetail);
-//            }
-//            AdvancedInputDataHandling inputDataHandling = taskDetails.getAdvancedInputDataHandling();
-//            if (inputDataHandling != null) {
-//                updateInputDataHandling(inputDataHandling, taskDetail);
-//            }
-//            AdvancedOutputDataHandling outputDataHandling = taskDetails.getAdvancedOutputDataHandling();
-//            if (outputDataHandling != null) {
-//                updateOutputDataHandling(outputDataHandling, taskDetail);
-//            }
-//            List<JobDetails> jobDetailsList = taskDetails.getJobDetailsList();
-//            if (jobDetailsList != null && !jobDetailsList.isEmpty()) {
-//                for (JobDetails job : jobDetailsList) {
-//                    CompositeIdentifier ids = new CompositeIdentifier(taskId, job.getJobID());
-//                    updateJobDetails(job, ids);
-//                }
-//            }
-//
-//            List<DataTransferDetails> dataTransferDetailsList = taskDetails.getDataTransferDetailsList();
-//            if (dataTransferDetailsList != null && !dataTransferDetailsList.isEmpty()) {
-//                for (DataTransferDetails transferDetails : dataTransferDetailsList) {
-//                    updateDataTransferDetails(transferDetails, transferDetails.getTransferID());
-//                }
-//            }
-//
-//            List<ErrorDetails> errors = taskDetails.getErrors();
-//            if (errors != null && !errors.isEmpty()) {
-//                for (ErrorDetails error : errors) {
-//                    addErrorDetails(error, taskDetail.getTaskId());
-//                }
-//            }
-//
-//            TaskStatus taskStatus = taskDetails.getTaskStatus();
-//            if (taskStatus != null) {
-//                updateTaskStatus(taskStatus, taskId);
-//            }
-//            return taskDetail.getTaskId();
-//        } catch (Exception e) {
-//            logger.error("Error while updating task details...", e);
-//            throw new RegistryException(e);
-//        }
-//    }
+    public Object getTaskError(String identifier) {
+        return null;
+    }
+
+
+    public List<ExperimentModel> getExperimentList(String fieldName, Object value) throws RegistryException {
+        List<ExperimentModel> experiments = new ArrayList<ExperimentModel>();
+        try {
+            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
+                WorkerResource resource = (WorkerResource) gatewayResource.create(ResourceType.GATEWAY_WORKER);
+                resource.setUser((String) value);
+                List<ExperimentResource> resources = resource.getExperiments();
+                for (ExperimentResource experimentResource : resources) {
+                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(experimentResource);
+                    experiments.add(experiment);
+                }
+                return experiments;
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
+                ProjectResource project = workerResource.getProject((String) value);
+                List<ExperimentResource> resources = project.getExperiments();
+                for (ExperimentResource resource : resources) {
+                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(resource);
+                    experiments.add(experiment);
+                }
+                return experiments;
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY_EXECUTION_ID)) {
+                List<ExperimentResource> resources = gatewayResource.getExperiments();
+                for (ExperimentResource resource : resources) {
+                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(resource);
+                    experiments.add(experiment);
+                }
+                return experiments;
+            } else {
+                logger.error("Unsupported field name to retrieve experiment list...");
+            }
+        } catch (Exception e) {
+            logger.error("Error while getting experiment list...", e);
+            throw new RegistryException(e);
+        }
+        return experiments;
+    }
+
+    //Todo
+    public List<ProcessModel> getProcessList(String fieldName, Object value) {
+        return null;
+    }
+
+    public List<TaskModel> getTaskList(String fieldName, Object value) {
+        return null;
+    }
+
+    public List<ExperimentModel> getExperimentList(String fieldName, Object value, int limit, int offset,
+                                                   Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+        List<ExperimentModel> experiments = new ArrayList<ExperimentModel>();
+        try {
+            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
+                WorkerResource resource = (WorkerResource) gatewayResource.create(ResourceType.GATEWAY_WORKER);
+                resource.setUser((String) value);
+                List<ExperimentResource> resources = resource.getExperiments(limit, offset,
+                        orderByIdentifier, resultOrderType);
+                for (ExperimentResource experimentResource : resources) {
+                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(experimentResource);
+                    experiments.add(experiment);
+                }
+                return experiments;
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
+                ProjectResource project = workerResource.getProject((String) value);
+                List<ExperimentResource> resources = project.getExperiments(limit, offset,
+                        Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
+                for (ExperimentResource resource : resources) {
+                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(resource);
+                    experiments.add(experiment);
+                }
+                return experiments;
+            }
+            logger.error("Unsupported field name to retrieve experiment list...");
+        } catch (Exception e) {
+            logger.error("Error while getting experiment list...", e);
+            throw new RegistryException(e);
+        }
+        return experiments;
+    }
+
+
+    //CPI Search Methods
+
+    public List<ExperimentSummaryModel> searchExperiments(Map<String, String> filters, int limit,
+                                                          int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+        Map<String, String> fil = new HashMap<String, String>();
+        if (filters != null && filters.size() != 0) {
+            List<ExperimentSummaryModel> experimentSummaries = new ArrayList<>();
+            long fromTime = 0;
+            long toTime = 0;
+            try {
+                for (String field : filters.keySet()) {
+                    if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
+                        fil.put(AbstractExpCatResource.ExperimentConstants.EXPERIMENT_NAME, filters.get(field));
+                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
+                        fil.put(AbstractExpCatResource.ExperimentConstants.USER_NAME, filters.get(field));
+                    }else if (field.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY_EXECUTION_ID)) {
+                        fil.put(AbstractExpCatResource.ExperimentConstants.GATEWAY_ID, filters.get(field));
+                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.DESCRIPTION)) {
+                        fil.put(AbstractExpCatResource.ExperimentConstants.DESCRIPTION, filters.get(field));
+                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXECUTION_ID)) {
+                        fil.put(AbstractExpCatResource.ExperimentConstants.EXECUTION_ID, filters.get(field));
+                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS)) {
+                        fil.put(AbstractExpCatResource.ExperimentStatusConstants.STATE, filters.get(field));
+                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.FROM_DATE)) {
+                        fromTime = Long.parseLong(filters.get(field));
+                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.TO_DATE)) {
+                        toTime = Long.parseLong(filters.get(field));
+                    }
+                }
+                List<ExperimentSummaryResource> experimentSummaryResources;
+                if (fromTime != 0 && toTime != 0) {
+                    experimentSummaryResources = workerResource.searchExperiments(new Timestamp(fromTime), new Timestamp(toTime), fil
+                            ,limit , offset, orderByIdentifier, resultOrderType);
+                } else {
+                    experimentSummaryResources = workerResource
+                            .searchExperiments(null, null, fil, limit, offset, orderByIdentifier, resultOrderType);
+                }
+                if (experimentSummaryResources != null && !experimentSummaryResources.isEmpty()) {
+                    for (ExperimentSummaryResource ex : experimentSummaryResources) {
+                        experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
+                    }
+                }
+                return experimentSummaries;
+
+            } catch (Exception e) {
+                logger.error("Error while retrieving experiment summary from registry", e);
+                throw new RegistryException(e);
+            }
+        }
+        return null;
+    }
+
+    public ExperimentStatistics getExperimentStatistics(Map<String,String> filters) throws RegistryException {
+        try {
+            ExperimentStatistics experimentStatistics = new ExperimentStatistics();
+            ExperimentStatisticsResource experimentStatisticsResource = workerResource.getExperimentStatistics(
+                    filters.get(Constants.FieldConstants.ExperimentConstants.GATEWAY_EXECUTION_ID),
+                    new Timestamp(Long.parseLong(filters.get(Constants.FieldConstants.ExperimentConstants.FROM_DATE))),
+                    new Timestamp(Long.parseLong(filters.get(Constants.FieldConstants.ExperimentConstants.TO_DATE)))
+            );
+
+            experimentStatistics.setAllExperimentCount(experimentStatisticsResource.getAllExperimentCount());
+            experimentStatistics.setCompletedExperimentCount(experimentStatisticsResource.getCompletedExperimentCount());
+            experimentStatistics.setFailedExperimentCount(experimentStatisticsResource.getFailedExperimentCount());
+            experimentStatistics.setCancelledExperimentCount(experimentStatisticsResource.getCancelledExperimentCount());
+
+            ArrayList<ExperimentSummaryModel> experimentSummaries = new ArrayList();
+            for (ExperimentSummaryResource ex : experimentStatisticsResource.getAllExperiments()) {
+                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
+            }
+            experimentStatistics.setAllExperiments(experimentSummaries);
+
+            experimentSummaries = new ArrayList();
+            for (ExperimentSummaryResource ex : experimentStatisticsResource.getCompletedExperiments()) {
+                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
+            }
+            experimentStatistics.setCompletedExperiments(experimentSummaries);
+
+            experimentSummaries = new ArrayList();
+            for (ExperimentSummaryResource ex : experimentStatisticsResource.getFailedExperiments()) {
+                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
+            }
+            experimentStatistics.setFailedExperiments(experimentSummaries);
 
-    public void updateAppOutputs(List<OutputDataObjectType> appOutputs, String taskId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail(taskId);
-//            List<ApplicationOutputResource> outputs = taskDetail.getApplicationOutputs();
-//            for (OutputDataObjectType output : appOutputs) {
-//                for (ApplicationOutputResource resource : outputs) {
-//                    resource.setTaskId(taskId);
-//                    resource.setOutputKey(output.getName());
-//                    resource.setValue(output.getValue());
-//                    if (output.getType() != null) {
-//                        resource.setDataType(output.getType().toString());
-//                    }
-//                    resource.setRequired(output.isIsRequired());
-//                    resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
-//                    resource.setDataMovement(output.isDataMovement());
-//                    resource.setDataNameLocation(output.getLocation());
-//                    resource.setAppArgument(output.getApplicationArgument());
-//                    resource.setSearchQuery(output.getSearchQuery());
-////                    resource.setMetadata(output.getMetaData());
-//                    resource.save();
-//                }
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating application outputs...", e);
-//            throw new RegistryException(e);
-//        }
-    }
+            experimentSummaries = new ArrayList();
+            for (ExperimentSummaryResource ex : experimentStatisticsResource.getCancelledExperiments()) {
+                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
+            }
+            experimentStatistics.setCancelledExperiments(experimentSummaries);
 
-    public String addJobDetails(JobModel jobDetails, CompositeIdentifier ids) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier());
-//            JobDetailResource jobDetail = taskDetail.createJobDetail((String) ids.getSecondLevelIdentifier());
-//            jobDetail.setTaskId(taskDetail.getTaskId());
-//            jobDetail.setJobDescription(jobDetails.getJobDescription());
-//            jobDetail.setCreationTime(AiravataUtils.getTime(jobDetails.getCreationTime()));
-//            jobDetail.setComputeResourceConsumed(jobDetails.getComputeResourceConsumed());
-//            jobDetail.setWorkingDir(jobDetails.getWorkingDir());
-//            jobDetail.setJobName(jobDetails.getJobName());
-//            jobDetail.save();
-//            JobStatus jobStatus = jobDetails.getJobStatus();
-//            if (jobStatus != null) {
-//                JobStatus status = getJobStatus(ids);
-//                if (status != null) {
-//                    updateJobStatus(jobStatus, ids);
-//                } else {
-//                    addJobStatus(jobStatus, ids);
-//                }
-//            }
-//            JobStatus applicationStatus = jobDetails.getJobStatus();
-//            if (applicationStatus != null) {
-//                JobStatus appStatus = getJobStatus(ids);
-//                if (appStatus != null) {
-//                    updateJobStatus(applicationStatus, ids);
-//                } else {
-//                    addJobStatus(applicationStatus, ids);
-//                }
-//            }
-////            List<ErrorModel> errors = jobDetails.getErrors();
-////            if (errors != null && !errors.isEmpty()) {
-////                for (ErrorDetails error : errors) {
-////                    addErrorDetails(error, ids.getSecondLevelIdentifier());
-////                }
-////            }
-//            return jobDetail.getJobId();
-//        } catch (Exception e) {
-//            logger.error("Error while adding job details...", e);
-//            throw new RegistryException(e);
-//        }
-        return  null;
+            return experimentStatistics;
+        } catch (RegistryException e) {
+            logger.error("Error while retrieving experiment statistics from registry", e);
+            throw new RegistryException(e);
+        }
     }
 
+
     // ids - taskId + jobid
     public void updateJobDetails(JobModel jobDetails, CompositeIdentifier ids) throws RegistryException {
 //        try {
@@ -1824,66 +1549,6 @@ public class ExperimentRegistry {
 //        }
     }
 
-    /**
-     * Method to get matching experiment list
-     * @param fieldName
-     * @param value
-     * @return
-     * @throws RegistryException
-     */
-    public List<ExperimentModel> getExperimentList(String fieldName, Object value) throws RegistryException {
-//        List<ExperimentModel> experiments = new ArrayList<ExperimentModel>();
-//        try {
-//            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
-//                WorkerResource resource = (WorkerResource) gatewayResource.create(ResourceType.GATEWAY_WORKER);
-//                resource.setUser((String) value);
-//                List<ExperimentResource> resources = resource.getExperiments();
-//                for (ExperimentResource experimentResource : resources) {
-//                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(experimentResource);
-//                    experiments.add(experiment);
-//                }
-//                return experiments;
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
-//                ProjectResource project = workerResource.getProject((String) value);
-//                List<ExperimentResource> resources = project.getExperiments();
-//                for (ExperimentResource resource : resources) {
-//                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(resource);
-//                    experiments.add(experiment);
-//                }
-//                return experiments;
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)) {
-//                List<ExperimentResource> resources = gatewayResource.getExperiments();
-//                for (ExperimentResource resource : resources) {
-//                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(resource);
-//                    experiments.add(experiment);
-//                }
-//                return experiments;
-//            }
-////            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_NODE_LIST)) {
-////                if (value instanceof List<?>) {
-////                    return getExperimentList(fieldName, ((List<?>) value).get(0));
-////                } else if (value instanceof WorkflowNodeDetails) {
-////                    WorkflowNodeDetailResource nodeDetailResource = getWorkflowNodeDetailResource(((WorkflowNodeDetails) value).getNodeInstanceId());
-////                    if (nodeDetailResource != null) {
-////                        String experimentId = nodeDetailResource.getProcessId();
-////                        ExperimentResource experiment = gatewayResource.getExperiment(experimentId);
-////                        return Arrays.asList(ThriftDataModelConversion
-////                                .getExperiment(experiment));
-////                    }
-////                } else {
-////                    logger.error("Unsupported field value to retrieve workflow node detail list...");
-////                }
-////
-////            } else {
-////                logger.error("Unsupported field name to retrieve experiment list...");
-////            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting experiment list...", e);
-//            throw new RegistryException(e);
-//        }
-//        return experiments;
-        return null;
-    }
 
     /**
      * Method to get matching experiment list with pagination and ordering
@@ -1896,38 +1561,6 @@ public class ExperimentRegistry {
      * @return
      * @throws RegistryException
      */
-    public List<ExperimentModel> getExperimentList(String fieldName, Object value, int limit, int offset,
-                                              Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
-        List<ExperimentModel> experiments = new ArrayList<ExperimentModel>();
-        try {
-            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
-                WorkerResource resource = (WorkerResource) gatewayResource.create(ResourceType.GATEWAY_WORKER);
-                resource.setUser((String) value);
-                List<ExperimentResource> resources = resource.getExperiments(limit, offset,
-                        orderByIdentifier, resultOrderType);
-                for (ExperimentResource experimentResource : resources) {
-                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(experimentResource);
-                    experiments.add(experiment);
-                }
-                return experiments;
-            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
-                ProjectResource project = workerResource.getProject((String) value);
-                List<ExperimentResource> resources = project.getExperiments(limit, offset,
-                        Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC);
-                for (ExperimentResource resource : resources) {
-                    ExperimentModel experiment = ThriftDataModelConversion.getExperiment(resource);
-                    experiments.add(experiment);
-                }
-                return experiments;
-            }
-            logger.error("Unsupported field name to retrieve experiment list...");
-        } catch (Exception e) {
-            logger.error("Error while getting experiment list...", e);
-            throw new RegistryException(e);
-        }
-        return experiments;
-    }
-
 
     public List<TaskModel> getTaskDetails(String fieldName, Object value) throws RegistryException {
 //        try {
@@ -2017,111 +1650,6 @@ public class ExperimentRegistry {
         return null;
     }
 
-    public Object getExperiment(String expId, String fieldName) throws RegistryException {
-//        try {
-//            ExperimentResource resource = gatewayResource.getExperiment(expId);
-//            if (fieldName == null) {
-//                return ThriftDataModelConversion.getExperiment(resource);
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
-//                return resource.getExecutionUser();
-//            }else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)) {
-//                return resource.getGatewayId();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
-//                return resource.getExpName();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC)) {
-//                return resource.getDescription();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID)) {
-//                return resource.getApplicationId();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
-//                return resource.getProjectId();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_VERSION)) {
-//                return resource.getApplicationVersion();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_TEMPLATE_ID)) {
-//                return resource.getWorkflowTemplateId();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_TEMPLATE_VERSION)) {
-//                return resource.getWorkflowTemplateId();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_INPUTS)) {
-//                return ThriftDataModelConversion.getExpInputs(resource.getExperimentInputs());
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_OUTPUTS)) {
-//                return ThriftDataModelConversion.getExpOutputs(resource.getExperimentOutputs());
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS)) {
-//                return ThriftDataModelConversion.getExperimentStatus(resource.getExperimentStatus());
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_CONFIGURATION_DATA)) {
-//                return ThriftDataModelConversion.getUserConfigData(resource.getUserConfigData(expId));
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_EXECUTION_ID)) {
-//                return resource.getWorkflowExecutionId();
-//            }
-////            else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.STATE_CHANGE_LIST)) {
-////                return ThriftDataModelConversion.getWorkflowNodeStatusList(resource.getWorkflowNodeStatuses());
-////            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_NODE_LIST)) {
-////                return ThriftDataModelConversion.getWfNodeList(resource.getWorkflowNodeDetails());
-////            }
-//            else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.ERROR_DETAIL_LIST)) {
-//                return ThriftDataModelConversion.getErrorDetailList(resource.getErrorDetails());
-//            } else {
-//                logger.error("Unsupported field name for experiment basic data..");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting experiment info...", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    public Object getUserConfigData(String expId, String fieldName) throws RegistryException {
-//        try {
-//            ExperimentResource resource = gatewayResource.getExperiment(expId);
-//            ConfigDataResource userConfigData = resource.getUserConfigData(expId);
-//            if (fieldName == null) {
-//                return ThriftDataModelConversion.getUserConfigData(userConfigData);
-//            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
-//                return userConfigData.isAiravataAutoSchedule();
-//            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
-//                return userConfigData.isOverrideManualParams();
-//            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.SHARE_EXP)) {
-//                return userConfigData.isShareExp();
-//            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)) {
-//                return ThriftDataModelConversion.getComputationalResourceScheduling(resource.getComputationScheduling(expId));
-////            }
-////            else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.ADVANCED_INPUT_HANDLING)) {
-////                return ThriftDataModelConversion.getAdvanceInputDataHandling(resource.getInputDataHandling(expId));
-////            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.ADVANCED_OUTPUT_HANDLING)) {
-////                return ThriftDataModelConversion.getAdvanceOutputDataHandling(resource.getOutputDataHandling(expId));
-////            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.QOS_PARAMS)) {
-////                return ThriftDataModelConversion.getQOSParams(resource.getQOSparams(expId));
-//            } else {
-//                logger.error("Unsupported field name for experiment configuration data..");
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while getting config data..", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
-    public List<OutputDataObjectType> getExperimentOutputs(String expId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = gatewayResource.getExperiment(expId);
-//            List<ExperimentOutputResource> experimentOutputs = resource.getExperimentOutputs();
-//            return ThriftDataModelConversion.getExpOutputs(experimentOutputs);
-//        } catch (Exception e) {
-//            logger.error("Error while getting experiment outputs...", e);
-//        }
-        return null;
-    }
-
-    public ExperimentStatus getExperimentStatus(String expId) throws RegistryException {
-//        try {
-//            ExperimentResource resource = gatewayResource.getExperiment(expId);
-//            StatusResource experimentStatus = resource.getExperimentStatus();
-//            return ThriftDataModelConversion.getExperimentStatus(experimentStatus);
-//        } catch (Exception e) {
-//            logger.error("Error while getting experiment status...", e);
-//            throw new RegistryException(e);
-//        }
-        return null;
-    }
-
     public ComputationalResourceSchedulingModel getComputationalScheduling(ExperimentCatalogModelType type, String id) throws RegistryException {
 //        try {
 //            ComputationSchedulingResource computationScheduling = null;
@@ -2838,109 +2366,9 @@ public class ExperimentRegistry {
      * @return
      * @throws RegistryException
      */
-    public List<ExperimentSummaryModel> searchExperiments(Map<String, String> filters, int limit,
-              int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
-//        Map<String, String> fil = new HashMap<String, String>();
-//        if (filters != null && filters.size() != 0) {
-//            List<ExperimentSummaryModel> experimentSummaries = new ArrayList<>();
-//            long fromTime = 0;
-//            long toTime = 0;
-//            try {
-//                for (String field : filters.keySet()) {
-//                    if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
-//                        fil.put(AbstractExpCatResource.ExperimentConstants.EXPERIMENT_NAME, filters.get(field));
-//                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
-//                        fil.put(AbstractExpCatResource.ExperimentConstants.EXECUTION_USER, filters.get(field));
-//                    }else if (field.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)) {
-//                        fil.put(AbstractExpCatResource.ExperimentConstants.GATEWAY_ID, filters.get(field));
-//                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC)) {
-//                        fil.put(AbstractExpCatResource.ExperimentConstants.DESCRIPTION, filters.get(field));
-//                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID)) {
-//                        fil.put(AbstractExpCatResource.ExperimentConstants.APPLICATION_ID, filters.get(field));
-//                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS)) {
-//                        fil.put(AbstractExpCatResource.StatusConstants.STATE, filters.get(field));
-//                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.FROM_DATE)) {
-//                        fromTime = Long.parseLong(filters.get(field));
-//                    } else if (field.equals(Constants.FieldConstants.ExperimentConstants.TO_DATE)) {
-//                        toTime = Long.parseLong(filters.get(field));
-//                    }
-//                }
-//                List<ExperimentSummaryResource> experimentSummaryResources;
-//                if (fromTime != 0 && toTime != 0) {
-//                    experimentSummaryResources = workerResource.searchExperiments(new Timestamp(fromTime), new Timestamp(toTime), fil
-//                            ,limit , offset, orderByIdentifier, resultOrderType);
-//                } else {
-//                    experimentSummaryResources = workerResource
-//                            .searchExperiments(null, null, fil, limit, offset, orderByIdentifier, resultOrderType);
-//                }
-//                if (experimentSummaryResources != null && !experimentSummaryResources.isEmpty()) {
-//                    for (ExperimentSummaryResource ex : experimentSummaryResources) {
-//                        experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-//                    }
-//                }
-//                return experimentSummaries;
-//
-//            } catch (Exception e) {
-//                logger.error("Error while retrieving experiment summary from registry", e);
-//                throw new RegistryException(e);
-//            }
-//        }
-        return null;
-    }
-
-    /**
-     * Method to get experiment execution statistics for a specific time period
-     * @param filters
-     * @return
-     * @throws RegistryException
-     */
-    public ExperimentStatistics getExperimentStatistics(Map<String,String> filters) throws RegistryException {
-        try {
-            ExperimentStatistics experimentStatistics = new ExperimentStatistics();
-            ExperimentStatisticsResource experimentStatisticsResource = workerResource.getExperimentStatistics(
-                    filters.get(Constants.FieldConstants.ExperimentConstants.GATEWAY),
-                    new Timestamp(Long.parseLong(filters.get(Constants.FieldConstants.ExperimentConstants.FROM_DATE))),
-                    new Timestamp(Long.parseLong(filters.get(Constants.FieldConstants.ExperimentConstants.TO_DATE)))
-            );
-
-            experimentStatistics.setAllExperimentCount(experimentStatisticsResource.getAllExperimentCount());
-            experimentStatistics.setCompletedExperimentCount(experimentStatisticsResource.getCompletedExperimentCount());
-            experimentStatistics.setFailedExperimentCount(experimentStatisticsResource.getFailedExperimentCount());
-            experimentStatistics.setCancelledExperimentCount(experimentStatisticsResource.getCancelledExperimentCount());
-
-            ArrayList<ExperimentSummaryModel> experimentSummaries = new ArrayList();
-            for (ExperimentSummaryResource ex : experimentStatisticsResource.getAllExperiments()) {
-                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-            }
-            experimentStatistics.setAllExperiments(experimentSummaries);
-
-            experimentSummaries = new ArrayList();
-            for (ExperimentSummaryResource ex : experimentStatisticsResource.getCompletedExperiments()) {
-                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-            }
-            experimentStatistics.setCompletedExperiments(experimentSummaries);
-
-            experimentSummaries = new ArrayList();
-            for (ExperimentSummaryResource ex : experimentStatisticsResource.getFailedExperiments()) {
-                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-            }
-            experimentStatistics.setFailedExperiments(experimentSummaries);
-
-            experimentSummaries = new ArrayList();
-            for (ExperimentSummaryResource ex : experimentStatisticsResource.getCancelledExperiments()) {
-                experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex));
-            }
-            experimentStatistics.setCancelledExperiments(experimentSummaries);
-
-            return experimentStatistics;
-        } catch (RegistryException e) {
-            logger.error("Error while retrieving experiment statistics from registry", e);
-            throw new RegistryException(e);
-        }
-    }
 
     public boolean isValidStatusTransition(Object object1, Object object2) {
-        if(object1 instanceof ExperimentState && object2 instanceof ExperimentState){
+        if (object1 instanceof ExperimentState && object2 instanceof ExperimentState) {
             ExperimentState oldState = (ExperimentState) object1;
             ExperimentState nextState = (ExperimentState) object2;
             if (nextState == null) {
@@ -2978,7 +2406,7 @@ public class ExperimentRegistry {
                 default:
                     return false;
             }
-        }else if(object1 instanceof ProcessState && object2 instanceof ProcessState){
+        } else if (object1 instanceof ProcessState && object2 instanceof ProcessState) {
             ProcessState oldState = (ProcessState) object1;
             ProcessState nextState = (ProcessState) object2;
             if (nextState == null) {
@@ -2991,7 +2419,7 @@ public class ExperimentRegistry {
                 default:
                     return false;
             }
-        }else if(object1 instanceof TaskState && object2 instanceof TaskState){
+        } else if (object1 instanceof TaskState && object2 instanceof TaskState) {
             TaskState oldState = (TaskState) object1;
             TaskState nextState = (TaskState) object2;
             if (nextState == null) {
@@ -3007,53 +2435,4 @@ public class ExperimentRegistry {
         }
         return false;
     }
-
-    public Object getExperimentInputs(String identifier) {
-        return null;
-    }
-
-    public Object getExperimentError(String identifier) {
-        return null;
-    }
-
-    public Object getProcessError(String identifier) {
-        return null;
-    }
-
-    public Object getProcessStatus(String identifier) {
-        return null;
-    }
-
-    public Object getProcessInputs(String identifier) {
-        return null;
-    }
-
-    public Object getProcessOutputs(String identifier) {
-        return null;
-    }
-
-    public Object getProcessResourceSchedule(String identifier, Object o) {
-        return null;
-    }
-
-    public Object getProcess(String identifier, Object o) {
-        return null;
-    }
-
-    public Object getTask(String identifier) {
-        return null;
-    }
-
-    public Object getTaskError(String identifier) {
-        return null;
-    }
-
-    public List<ProcessModel> getProcessList(String fieldName, Object value) {
-        return null;
-    }
-
-    public List<TaskModel> getTaskList(String fieldName, Object value) {
-        return null;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/bce94ae9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java
index 5fc5e48..f4b4d37 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java
@@ -92,6 +92,9 @@ public abstract class AbstractExpCatResource implements ExperimentCatResource {
 		public static final String PROJECT_ID = "projectId";
 		public static final String GATEWAY_ID = "gatewayId";
 		public static final String EXPERIMENT_ID = "experimentId";
+        public static final String EXECUTION_ID = "executionId";
+        public static final String EXPERIMENT_NAME = "experimentName";
+        public static final String DESCRIPTION = "description";
         public static final String USER_NAME = "userName";
         public static final String CREATION_TIME = "creationTime";
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/bce94ae9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index edec50f..5dae874 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -447,4 +447,19 @@ public class ThriftDataModelConversion {
         }
         return null;
     }
+
+    public static ComputationalResourceSchedulingModel getComputationalResourceScheduling(UserConfigurationDataResource resource) {
+        if (resource != null){
+            ComputationalResourceSchedulingModel resourceSchedulingModel = new ComputationalResourceSchedulingModel();
+            resourceSchedulingModel.setResourceHostId(resource.getResourceHostId());
+            resourceSchedulingModel.setTotalCPUCount(resource.getTotalCpuCount());
+            resourceSchedulingModel.setNodeCount(resource.getNodeCount());
+            resourceSchedulingModel.setNumberOfThreads(resource.getNumberOfThreads());
+            resourceSchedulingModel.setQueueName(resource.getQueueName());
+            resourceSchedulingModel.setWallTimeLimit(resource.getWallTimeLimit());
+            resourceSchedulingModel.setTotalPhysicalMemory(resource.getTotalPhysicalMemory());
+            return resourceSchedulingModel;
+        }
+        return null;
+    }
 }
\ No newline at end of file


[7/9] airavata git commit: Fixing remove CPI methods in experiment registry

Posted by sc...@apache.org.
Fixing remove CPI methods in experiment registry


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

Branch: refs/heads/master
Commit: 11a208bd17b1c1680dd7108b91cea4dc4cee3375
Parents: bf7db06
Author: Supun Nakandala <sc...@apache.org>
Authored: Mon Jun 22 13:32:12 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Mon Jun 22 13:32:12 2015 +0530

----------------------------------------------------------------------
 .../catalog/impl/ExperimentCatalogImpl.java     |  6 +-
 .../catalog/impl/ExperimentRegistry.java        | 94 +++++++++++---------
 2 files changed, 57 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/11a208bd/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
index 19a7698..22b4e02 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
@@ -597,13 +597,13 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                     experimentRegistry.removeUserConfigData((String) identifier);
                     break;
                 case PROCESS:
-                    experimentRegistry.removeWorkflowNode((String) identifier);
+                    experimentRegistry.removeProcess((String) identifier);
                     break;
                 case PROCESS_RESOURCE_SCHEDULE:
-                    experimentRegistry.removeComputationalScheduling(dataType, (String) identifier);
+                    experimentRegistry.removeProcessResourceSchedule((String) identifier);
                     break;
                 case TASK:
-                    experimentRegistry.removeTaskDetails((String) identifier);
+                    experimentRegistry.removeTask((String) identifier);
                     break;
                 default:
                     logger.error("Unsupported data type...", new UnsupportedOperationException());

http://git-wip-us.apache.org/repos/asf/airavata/blob/11a208bd/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 9fa8daf..44bf0e6 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -1176,6 +1176,60 @@ public class ExperimentRegistry {
         return taskIds;
     }
 
+
+    //Remove CPI methods
+    public void removeExperiment(String experimentId) throws RegistryException {
+        try {
+            gatewayResource.remove(ResourceType.EXPERIMENT, experimentId);
+        } catch (Exception e) {
+            logger.error("Error while removing experiment..", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public void removeUserConfigData(String experimentId) throws RegistryException {
+        try {
+            ExperimentResource experiment = new ExperimentResource();
+            experiment.setExperimentId(experimentId);
+            experiment.remove(ResourceType.USER_CONFIGURATION_DATA, experimentId);
+        } catch (Exception e) {
+            logger.error("Error while removing experiment config..", e);
+            throw new RegistryException(e);
+        }
+    }
+
+
+    public void removeProcess(String processId) throws RegistryException {
+        try {
+            ExperimentResource experiment = new ExperimentResource();
+            experiment.remove(ResourceType.PROCESS, processId);
+        } catch (Exception e) {
+            logger.error("Error while removing workflow node..", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public void removeProcessResourceSchedule(String processId) throws RegistryException {
+        try {
+            ExperimentResource experiment = new ExperimentResource();
+            experiment.remove(ResourceType.PROCESS_RESOURCE_SCHEDULE, processId);
+        } catch (Exception e) {
+            logger.error("Error while removing workflow node..", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public void removeTask(String taskId) throws RegistryException {
+        try {
+            ProcessResource process = new ProcessResource();
+            process.remove(ResourceType.TASK, taskId);
+        } catch (Exception e) {
+            logger.error("Error while removing task details..", e);
+            throw new RegistryException(e);
+        }
+    }
+
+
     // ids - taskId + jobid
     public void updateJobDetails(JobModel jobDetails, CompositeIdentifier ids) throws RegistryException {
 //        try {
@@ -1985,46 +2039,6 @@ public class ExperimentRegistry {
 //    }
 
 
-    public void removeExperiment(String experimentId) throws RegistryException {
-        try {
-            gatewayResource.remove(ResourceType.EXPERIMENT, experimentId);
-        } catch (Exception e) {
-            logger.error("Error while removing experiment..", e);
-            throw new RegistryException(e);
-        }
-    }
-
-    public void removeUserConfigData(String experimentId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(experimentId);
-//            experiment.remove(ResourceType.CONFIG_DATA, experimentId);
-//        } catch (Exception e) {
-//            logger.error("Error while removing experiment config..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void removeWorkflowNode(String nodeId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            experiment.remove(ResourceType.WORKFLOW_NODE_DETAIL, nodeId);
-//        } catch (Exception e) {
-//            logger.error("Error while removing workflow node..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void removeTaskDetails(String taskId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource nodeDetailResource = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            nodeDetailResource.remove(ResourceType.TASK_DETAIL, taskId);
-//        } catch (Exception e) {
-//            logger.error("Error while removing task details..", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
     public void removeJobDetails(CompositeIdentifier ids) throws RegistryException {
 //        try {
 //            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);


[3/9] airavata git commit: Fixing get and search CPI methods in the experiment registry class

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/bce94ae9/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 034ee77..33d3c73 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
@@ -33,72 +33,42 @@ public class Constants {
         }
 
         public final class ExperimentConstants {
-            public static final String EXPERIMENT_NAME = "experimentName";
-            public static final String USER_NAME = "userName";
-            public static final String GATEWAY = "gatewayId";
-            public static final String EXPERIMENT_DESC = "experimentDescription";
+            public static final String EXPERIMENT_ID = "experimentId";
             public static final String PROJECT_ID = "projectId";
+            public static final String EXPERIMENT_TYPE = "experimentType";
+            public static final String USER_NAME = "userName";
+            public static final String EXPERIMENT_NAME = "experimentName";
             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 DESCRIPTION = "description";
+            public static final String EXECUTION_ID = "executionId";
+            public static final String GATEWAY_EXECUTION_ID = "gatewayExecutionId";
+            public static final String ENABLE_EMAIL_NOTIFICATION = "enableEmailNotification";
+            public static final String EMAIL_ADDRESSES = "emailAddresses";
             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 static final String EXPERIMENT_ERRORS = "experimentErrors";
+            public static final String USER_CONFIGURATION_DATA = "userConfigurationData";
             public static final String FROM_DATE = "fromDate";
             public static final String TO_DATE = "toDate";
-
         }
 
-        public final class ConfigurationDataConstants {
+        public final class UserConfigurationDataConstants {
             public static final String EXPERIMENT_ID = "experimentId";
             public static final String AIRAVATA_AUTO_SCHEDULE = "airavataAutoSchedule";
             public static final String OVERRIDE_MANUAL_PARAMS = "overrideManualScheduledParams";
             public static final String SHARE_EXP = "shareExperimentPublicly";
             public static final String COMPUTATIONAL_RESOURCE_SCHEDULING = "computationalResourceScheduling";
-            public static final String ADVANCED_INPUT_HANDLING = "advanceInputDataHandling";
-            public static final String ADVANCED_OUTPUT_HANDLING = "advanceOutputDataHandling";
-            public static final String QOS_PARAMS = "qosParams";
-        }
-
-        public final class WorkflowNodeConstants {
-            public static final String EXPERIMENT_ID = "experimentId";
-            public static final String NODE_NAME = "nodeName";
-            public static final String NODE_INPUTS = "nodeInputs";
-            public static final String NODE_OUTPUTS = "nodeOutputs";
-            public static final String WF_NODE_STATUS = "workflowNodeStatus";
-            public static final String TASK_LIST = "taskDetailsList";
-            public static final String NODE_ERRORS = "errors";
         }
 
-        public final class TaskDetailConstants {
+        public final class ProcessConstants {
             public static final String EXPERIMENT_ID = "experimentId";
-            public static final String NODE_ID = "nodeId";
-        }
-
-        public final class JobDetaisConstants {
-            public static final String TASK_ID = "taskId";
+            public static final String PROCESS_ID = "processId";
         }
 
-        public final class DataTransferDetailConstants {
-            public static final String TASK_ID = "taskId";
-        }
-
-        public final class WorkflowNodeStatusConstants {
-            public static final String EXPERIMENT_ID = "experimentId";
-        }
-
-        public final class ErrorDetailsConstants {
-            public static final String EXPERIMENT_ID = "experimentId";
-            public static final String NODE_ID = "nodeId";
+        public final class TaskConstants {
+            public static final String PARENT_PROCESS_ID = "parentProcessId";
             public static final String TASK_ID = "taskId";
-            public static final String JOB_ID = "jobId";
         }
     }
 }


[5/9] airavata git commit: Removing application id field from experiment table

Posted by sc...@apache.org.
Removing application id field from experiment table


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

Branch: refs/heads/master
Commit: fb30f5df438f7acff649b550955a2600df9c84f7
Parents: bce94ae
Author: Supun Nakandala <sc...@apache.org>
Authored: Sun Jun 21 23:11:52 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Sun Jun 21 23:11:52 2015 +0530

----------------------------------------------------------------------
 .../src/main/java/META-INF/persistence.xml      | 105 +++++++++++++++++++
 .../experiment/catalog/model/Experiment.java    |  14 ---
 .../catalog/resources/ExperimentResource.java   |  10 --
 3 files changed, 105 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/fb30f5df/modules/registry/registry-core/src/main/java/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/META-INF/persistence.xml b/modules/registry/registry-core/src/main/java/META-INF/persistence.xml
new file mode 100644
index 0000000..ddf1334
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/META-INF/persistence.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
+    <persistence-unit name="experiment_data">
+        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Experiment</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ExperimentError</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ExperimentInput</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ExperimentOutput</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ExperimentStatus</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ExperimentSummary</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Gateway</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.GatewayWorker</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Process</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ProcessError</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ProcessInput</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ProcessOutput</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ProcessResourceSchedule</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ProcessStatus</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Project</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ProjectUser</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Task</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.TaskError</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.TaskStatus</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.User</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.UserConfigurationData</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.BatchQueue</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.LocalSubmission</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.JobManagerCommand</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.SshJobSubmission</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ComputeResourceFileSystem</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ErrorDetail</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.GridftpDataMovement</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ScpDataMovement</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.PostJobCommand</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ResourceJobManager</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.PreJobCommand</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ComputeResource</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.GSISSHExport</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ComputeResourcePreference</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.LocalDataMovement</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.DataTransferDetail</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Gateway</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.WorkflowNodeDetail</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Computational_Resource_Scheduling</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.JobDetail</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ApplicationInput</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.TaskDetail</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.Workflow</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ApplicationInterface</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ApplicationOutput</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Status</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.GatewayProfile</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Project</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.AdvancedOutputDataHandling</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ApplicationModule</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Configuration</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Experiment</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.CloudJobSubmission</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Experiment_Output</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.QosParam</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.AdvancedInputDataHandling</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ProjectUser</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.NodeInput</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Experiment_Input</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.Configuration</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ModuleLoadCmd</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Gateway_Worker</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.NodeOutput</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Users</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.ExperimentConfigData</class>
+        <class>org.apache.airavata.registry.core.experiment.catalog.model.Notification_Email</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.UnicoreDataMovement</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.UnicoreJobSubmission</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ApplicationDeployment</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.HostAlias</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.HostIPAddress</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.LibraryApendPath</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.GSISSHSubmission</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.GlobusGKEndpoint</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.AppModuleMapping</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.LibraryPrepandPath</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ApplicationIntInput</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.ApplicationIntOutput</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.WorkflowInput</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.WorkflowOutput</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.AppEnvironment</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.GlobusJobSubmission</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.DataMovementInterface</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.JobSubmissionInterface</class>
+        <class>org.apache.airavata.registry.core.app.catalog.model.GridftpEndpoint</class>
+        <exclude-unlisted-classes>true</exclude-unlisted-classes>
+        <properties>
+            <property name="openjpa.ConnectionURL"
+                      value="jdbc:mysql://localhost:3306/experiment_catalog" />
+            <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
+            <property name="openjpa.ConnectionUserName" value="root" />
+            <property name="openjpa.ConnectionPassword" value="" />
+            <property name="openjpa.DynamicEnhancementAgent" value="true" />
+            <property name="openjpa.RuntimeUnenhancedClasses" value="supported" />
+            <property name="openjpa.Log" value="SQL=TRACE" />
+            <property name="openjpa.ConnectionFactoryProperties"
+                      value="PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000" />
+        </properties>
+    </persistence-unit>
+</persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/fb30f5df/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Experiment.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Experiment.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Experiment.java
index 537d2e5..da5a486 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Experiment.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Experiment.java
@@ -35,7 +35,6 @@ public class Experiment {
     private String projectId;
     private String experimentType;
     private String userName;
-    private String applicationId;
     private String experimentName;
     private Timestamp creationTime;
     private String description;
@@ -93,16 +92,6 @@ public class Experiment {
     }
 
     @Basic
-    @Column(name = "APPLICATION_ID")
-    public String getApplicationId() {
-        return applicationId;
-    }
-
-    public void setApplicationId(String applicationId) {
-        this.applicationId = applicationId;
-    }
-
-    @Basic
     @Column(name = "EXPERIMENT_NAME")
     public String getExperimentName() {
         return experimentName;
@@ -179,8 +168,6 @@ public class Experiment {
 //
 //        Experiment that = (Experiment) o;
 //
-//        if (applicationId != null ? !applicationId.equals(that.applicationId) : that.applicationId != null)
-//            return false;
 //        if (creationTime != null ? !creationTime.equals(that.creationTime) : that.creationTime != null) return false;
 //        if (description != null ? !description.equals(that.description) : that.description != null) return false;
 //        if (emailAddresses != null ? !emailAddresses.equals(that.emailAddresses) : that.emailAddresses != null)
@@ -207,7 +194,6 @@ public class Experiment {
 //        result = 31 * result + (projectId != null ? projectId.hashCode() : 0);
 //        result = 31 * result + (experimentType != null ? experimentType.hashCode() : 0);
 //        result = 31 * result + (userName != null ? userName.hashCode() : 0);
-//        result = 31 * result + (applicationId != null ? applicationId.hashCode() : 0);
 //        result = 31 * result + (experimentName != null ? experimentName.hashCode() : 0);
 //        result = 31 * result + (creationTime != null ? creationTime.hashCode() : 0);
 //        result = 31 * result + (description != null ? description.hashCode() : 0);

http://git-wip-us.apache.org/repos/asf/airavata/blob/fb30f5df/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
index ae29a0d..166ef01 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
@@ -43,7 +43,6 @@ public class ExperimentResource extends AbstractExpCatResource {
     private String projectId;
     private String experimentType;
     private String userName;
-    private String applicationId;
     private String experimentName;
     private Timestamp creationTime;
     private String description;
@@ -84,14 +83,6 @@ public class ExperimentResource extends AbstractExpCatResource {
         this.userName = userName;
     }
 
-    public String getApplicationId() {
-        return applicationId;
-    }
-
-    public void setApplicationId(String applicationId) {
-        this.applicationId = applicationId;
-    }
-
     public String getExperimentName() {
         return experimentName;
     }
@@ -451,7 +442,6 @@ public class ExperimentResource extends AbstractExpCatResource {
             experiment.setProjectId(projectId);
             experiment.setExperimentType(experimentType);
             experiment.setUserName(userName);
-            experiment.setApplicationId(applicationId);
             experiment.setExperimentName(experimentName);
             experiment.setCreationTime(creationTime);
             experiment.setDescription(description);


[9/9] airavata git commit: ProcessId, TaskId, ErrorId, StatusId are unique. So can be retrieved directly without the parent Id

Posted by sc...@apache.org.
ProcessId, TaskId, ErrorId, StatusId are unique. So can be retrieved directly without the parent Id


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

Branch: refs/heads/master
Commit: f9032d4dd4ee32f9676e0474283ebce730a6e37c
Parents: 99808c5
Author: Supun Nakandala <sc...@apache.org>
Authored: Mon Jun 22 13:52:33 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Mon Jun 22 13:52:33 2015 +0530

----------------------------------------------------------------------
 .../core/experiment/catalog/resources/ExperimentResource.java  | 5 -----
 .../core/experiment/catalog/resources/ProcessResource.java     | 6 ------
 .../core/experiment/catalog/resources/TaskResource.java        | 6 +-----
 3 files changed, 1 insertion(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/f9032d4d/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
index 166ef01..b81049f 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
@@ -182,7 +182,6 @@ public class ExperimentResource extends AbstractExpCatResource {
             switch (type) {
                 case EXPERIMENT_ERROR:
                     generator = new QueryGenerator(EXPERIMENT_ERROR);
-                    generator.setParameter(ExperimentErrorConstants.EXPERIMENT_ID, experimentId);
                     generator.setParameter(ExperimentErrorConstants.ERROR_ID, name);
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
@@ -216,7 +215,6 @@ public class ExperimentResource extends AbstractExpCatResource {
                     break;
                 case PROCESS:
                     generator = new QueryGenerator(PROCESS);
-                    generator.setParameter(ProcessConstants.EXPERIMENT_ID, experimentId);
                     generator.setParameter(ProcessConstants.PROCESS_ID, name);
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
@@ -252,7 +250,6 @@ public class ExperimentResource extends AbstractExpCatResource {
                 case EXPERIMENT_STATUS:
                     generator = new QueryGenerator(EXPERIMENT_STATUS);
                     generator.setParameter(ExperimentStatusConstants.STATUS_ID, name);
-                    generator.setParameter(ExperimentStatusConstants.EXPERIMENT_ID, experimentId);
                     q = generator.selectQuery(em);
                     ExperimentStatus status = (ExperimentStatus) q.getSingleResult();
                     ExperimentStatusResource statusResource = (ExperimentStatusResource) Utils.getResource(ResourceType.EXPERIMENT_STATUS, status);
@@ -262,7 +259,6 @@ public class ExperimentResource extends AbstractExpCatResource {
                 case EXPERIMENT_ERROR:
                     generator = new QueryGenerator(EXPERIMENT_ERROR);
                     generator.setParameter(ExperimentErrorConstants.ERROR_ID, name);
-                    generator.setParameter(ExperimentErrorConstants.EXPERIMENT_ID, experimentId);
                     q = generator.selectQuery(em);
                     ExperimentError experimentError = (ExperimentError) q.getSingleResult();
                     ExperimentErrorResource processErrorResource = (ExperimentErrorResource) Utils.getResource(ResourceType.EXPERIMENT_ERROR, experimentError);
@@ -302,7 +298,6 @@ public class ExperimentResource extends AbstractExpCatResource {
                 case PROCESS:
                     generator = new QueryGenerator(PROCESS);
                     generator.setParameter(ProcessConstants.PROCESS_ID, name);
-                    generator.setParameter(ProcessConstants.EXPERIMENT_ID, experimentId);
                     q = generator.selectQuery(em);
                     Process process = (Process) q.getSingleResult();
                     ProcessResource processResource = (ProcessResource) Utils.getResource(ResourceType.PROCESS, process);

http://git-wip-us.apache.org/repos/asf/airavata/blob/f9032d4d/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
index a8919ff..2572129 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
@@ -147,14 +147,12 @@ public class ProcessResource extends AbstractExpCatResource {
                 case PROCESS_ERROR:
                     generator = new QueryGenerator(PROCESS_ERROR);
                     generator.setParameter(ProcessErrorConstants.ERROR_ID, name);
-                    generator.setParameter(ProcessErrorConstants.PROCESS_ID, processId);
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
                     break;
                 case PROCESS_STATUS:
                     generator = new QueryGenerator(PROCESS_STATUS);
                     generator.setParameter(ProcessStatusConstants.STATUS_ID, name);
-                    generator.setParameter(ProcessStatusConstants.PROCESS_ID, processId);
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
                     break;
@@ -180,7 +178,6 @@ public class ProcessResource extends AbstractExpCatResource {
                     break;
                 case TASK:
                     generator = new QueryGenerator(TASK);
-                    generator.setParameter(TaskConstants.PROCESS_ID, processId);
                     generator.setParameter(TaskConstants.TASK_ID, name);
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
@@ -216,7 +213,6 @@ public class ProcessResource extends AbstractExpCatResource {
                 case PROCESS_STATUS:
                     generator = new QueryGenerator(PROCESS_STATUS);
                     generator.setParameter(ProcessStatusConstants.STATUS_ID, name);
-                    generator.setParameter(ProcessStatusConstants.PROCESS_ID, processId);
                     q = generator.selectQuery(em);
                     ProcessStatus status = (ProcessStatus) q.getSingleResult();
                     ProcessStatusResource statusResource = (ProcessStatusResource) Utils.getResource(ResourceType.PROCESS_STATUS, status);
@@ -226,7 +222,6 @@ public class ProcessResource extends AbstractExpCatResource {
                 case PROCESS_ERROR:
                     generator = new QueryGenerator(PROCESS_ERROR);
                     generator.setParameter(ProcessErrorConstants.ERROR_ID, name);
-                    generator.setParameter(ProcessErrorConstants.PROCESS_ID, processId);
                     q = generator.selectQuery(em);
                     ProcessError processError = (ProcessError) q.getSingleResult();
                     ProcessErrorResource processErrorResource = (ProcessErrorResource) Utils.getResource(ResourceType.PROCESS_ERROR, processError);
@@ -266,7 +261,6 @@ public class ProcessResource extends AbstractExpCatResource {
                 case TASK:
                     generator = new QueryGenerator(TASK);
                     generator.setParameter(TaskConstants.TASK_ID, name);
-                    generator.setParameter(TaskConstants.PROCESS_ID, processId);
                     q = generator.selectQuery(em);
                     Task task = (Task) q.getSingleResult();
                     TaskResource taskResource = (TaskResource) Utils.getResource(ResourceType.TASK, task);

http://git-wip-us.apache.org/repos/asf/airavata/blob/f9032d4d/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
index 862c2a4..5193943 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
@@ -132,14 +132,12 @@ public class TaskResource extends AbstractExpCatResource {
                 case TASK_STATUS:
                     generator = new QueryGenerator(TASK_STATUS);
                     generator.setParameter(TaskStatusConstants.STATUS_ID, name);
-                    generator.setParameter(TaskStatusConstants.TASK_ID, taskId);
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
                     break;
                 case TASK_ERROR:
                     generator = new QueryGenerator(TASK_ERROR);
                     generator.setParameter(TaskErrorConstants.ERROR_ID, name);
-                    generator.setParameter(TaskErrorConstants.TASK_ID, taskId);
                     q = generator.deleteQuery(em);
                     q.executeUpdate();
                     break;
@@ -174,7 +172,6 @@ public class TaskResource extends AbstractExpCatResource {
                 case TASK_STATUS:
                     generator = new QueryGenerator(TASK_STATUS);
                     generator.setParameter(TaskStatusConstants.STATUS_ID, name);
-                    generator.setParameter(TaskStatusConstants.TASK_ID, taskId);
                     q = generator.selectQuery(em);
                     TaskStatus status = (TaskStatus) q.getSingleResult();
                     TaskStatusResource statusResource = (TaskStatusResource) Utils.getResource(ResourceType.TASK_STATUS, status);
@@ -184,7 +181,6 @@ public class TaskResource extends AbstractExpCatResource {
                 case TASK_ERROR:
                     generator = new QueryGenerator(TASK_ERROR);
                     generator.setParameter(TaskErrorConstants.ERROR_ID, name);
-                    generator.setParameter(TaskErrorConstants.TASK_ID, taskId);
                     q = generator.selectQuery(em);
                     TaskError error = (TaskError) q.getSingleResult();
                     TaskErrorResource errorResource = (TaskErrorResource) Utils.getResource(
@@ -358,4 +354,4 @@ public class TaskResource extends AbstractExpCatResource {
             return max;
         }
     }
-}
+}
\ No newline at end of file


[6/9] airavata git commit: Fixing getIds CPI methods in experiment registry

Posted by sc...@apache.org.
Fixing getIds CPI methods in experiment registry


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

Branch: refs/heads/master
Commit: bf7db06539c8ca0ba10fd540a881af4e35396cc5
Parents: fb30f5d
Author: Supun Nakandala <sc...@apache.org>
Authored: Mon Jun 22 13:26:24 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Mon Jun 22 13:26:24 2015 +0530

----------------------------------------------------------------------
 .../catalog/impl/ExperimentCatalogImpl.java     |   4 +-
 .../catalog/impl/ExperimentRegistry.java        | 101 ++++++++++---------
 2 files changed, 53 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/bf7db065/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
index 97fa40e..19a7698 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
@@ -558,9 +558,9 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                 case EXPERIMENT:
                     return experimentRegistry.getExperimentIDs(fieldName, value);
                 case PROCESS:
-                    return experimentRegistry.getTaskDetailIds(fieldName, value);
+                    return experimentRegistry.getProcessIds(fieldName, value);
                 case TASK:
-                    return experimentRegistry.getJobDetailIds(fieldName, value);
+                    return experimentRegistry.getTaskIds(fieldName, value);
                 default:
                     logger.error("Unsupported data type...", new UnsupportedOperationException());
                     throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/airavata/blob/bf7db065/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index aa0bb41..9fa8daf 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -1124,6 +1124,57 @@ public class ExperimentRegistry {
         }
     }
 
+    //CPI getIds method
+    public List<String> getExperimentIDs(String fieldName, Object value) throws RegistryException {
+        List<String> expIDs = new ArrayList<String>();
+        try {
+            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY_EXECUTION_ID)) {
+                if (gatewayResource == null) {
+                    logger.error("You should use an existing gateway in order to retrieve experiments..");
+                    return null;
+                } else {
+                    List<ExperimentResource> resources = gatewayResource.getExperiments();
+                    for (ExperimentResource resource : resources) {
+                        String expID = resource.getExperimentId();
+                        expIDs.add(expID);
+                    }
+                }
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
+                List<ExperimentResource> resources = workerResource.getExperiments();
+                for (ExperimentResource resource : resources) {
+                    expIDs.add(resource.getExperimentId());
+                }
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
+                List<ExperimentResource> resources = workerResource.getExperiments();
+                for (ExperimentResource resource : resources) {
+                    expIDs.add(resource.getExperimentId());
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error while retrieving experiment ids..", e);
+            throw new RegistryException(e);
+        }
+        return expIDs;
+    }
+
+
+    public List<String> getProcessIds(String fieldName, Object value) throws RegistryException {
+        List<String> processIds = new ArrayList<String>();
+        List<ProcessModel> processes = getProcessList(fieldName, value);
+        for (ProcessModel td : processes) {
+            processIds.add(td.getProcessId());
+        }
+        return processIds;
+    }
+
+    public List<String> getTaskIds(String fieldName, Object value) throws RegistryException {
+        List<String> taskIds = new ArrayList<String>();
+        List<TaskModel> tasks = getTaskList(fieldName, value);
+        for (TaskModel task : tasks) {
+            taskIds.add(task.getTaskId());
+        }
+        return taskIds;
+    }
 
     // ids - taskId + jobid
     public void updateJobDetails(JobModel jobDetails, CompositeIdentifier ids) throws RegistryException {
@@ -1914,39 +1965,6 @@ public class ExperimentRegistry {
 //        }
 //    }
 
-    public List<String> getExperimentIDs(String fieldName, Object value) throws RegistryException {
-//        List<String> expIDs = new ArrayList<String>();
-//        try {
-//            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)) {
-//                if (gatewayResource == null) {
-//                    logger.error("You should use an existing gateway in order to retrieve experiments..");
-//                    return null;
-//                } else {
-//                    List<ExperimentResource> resources = gatewayResource.getExperiments();
-//                    for (ExperimentResource resource : resources) {
-//                        String expID = resource.getExpID();
-//                        expIDs.add(expID);
-//                    }
-//                }
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
-//                List<ExperimentResource> resources = workerResource.getExperiments();
-//                for (ExperimentResource resource : resources) {
-//                    expIDs.add(resource.getExpID());
-//                }
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
-//                List<ExperimentResource> resources = workerResource.getExperiments();
-//                for (ExperimentResource resource : resources) {
-//                    expIDs.add(resource.getExpID());
-//                }
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while retrieving experiment ids..", e);
-//            throw new RegistryException(e);
-//        }
-//        return expIDs;
-        return null;
-    }
-
 //    public List<String> getWorkflowNodeIds(String fieldName, Object value) throws RegistryException {
 //        List<String> wfIds = new ArrayList<String>();
 //        List<WorkflowNodeDetails> wfNodeDetails = getWFNodeDetails(fieldName, value);
@@ -1956,23 +1974,6 @@ public class ExperimentRegistry {
 //        return wfIds;
 //    }
 
-    public List<String> getTaskDetailIds(String fieldName, Object value) throws RegistryException {
-        List<String> taskDetailIds = new ArrayList<String>();
-        List<TaskModel> taskDetails = getTaskDetails(fieldName, value);
-        for (TaskModel td : taskDetails) {
-            taskDetailIds.add(td.getTaskId());
-        }
-        return taskDetailIds;
-    }
-
-    public List<String> getJobDetailIds(String fieldName, Object value) throws RegistryException {
-        List<String> jobIds = new ArrayList<String>();
-        List<JobModel> jobDetails = getJobDetails(fieldName, value);
-        for (JobModel jd : jobDetails) {
-            jobIds.add(jd.getJobId());
-        }
-        return jobIds;
-    }
 //
 //    public List<String> getTransferDetailIds(String fieldName, Object value) throws RegistryException {
 //        List<String> transferIds = new ArrayList<String>();


[2/9] airavata git commit: Fixing Update CPI methods in the experiment registry

Posted by sc...@apache.org.
Fixing Update CPI methods in the experiment registry


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

Branch: refs/heads/master
Commit: 1968ff434e77e602efbde315b87718e3cd1fbd1d
Parents: 7ca8104
Author: Supun Nakandala <sc...@apache.org>
Authored: Sun Jun 21 21:26:06 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Sun Jun 21 21:26:06 2015 +0530

----------------------------------------------------------------------
 .../catalog/impl/ExperimentCatalogImpl.java     |  22 +-
 .../catalog/impl/ExperimentRegistry.java        | 605 +++++++++++--------
 .../catalog/resources/ProcessResource.java      |   5 +
 3 files changed, 362 insertions(+), 270 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/1968ff43/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
index 33b1f15..4fa7a1b 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
@@ -211,6 +211,9 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                 case USER_CONFIGURATION_DATA:
                     experimentRegistry.updateUserConfigData((UserConfigurationDataModel) newObjectToUpdate, (String) identifier);
                     break;
+                case EXPERIMENT_INPUT:
+                    experimentRegistry.updateExpInputs((List<InputDataObjectType>) newObjectToUpdate, (String) identifier);
+                    break;
                 case EXPERIMENT_OUTPUT:
                     experimentRegistry.updateExpOutputs((List<OutputDataObjectType>) newObjectToUpdate, (String) identifier);
                     break;
@@ -218,22 +221,28 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                     experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToUpdate, (String) identifier);
                     break;
                 case EXPERIMENT_ERROR:
-                    experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToUpdate, (String) identifier);
+                    experimentRegistry.updateExperimentError((ErrorModel) newObjectToUpdate, (String) identifier);
+                    break;
+                case PROCESS:
+                    experimentRegistry.updateProcess((ProcessModel) newObjectToUpdate, (String) identifier);
                     break;
                 case PROCESS_RESOURCE_SCHEDULE:
-                    experimentRegistry.updateExpOutputs((List<OutputDataObjectType>) newObjectToUpdate, (String) identifier);
+                    experimentRegistry.updateProcessResourceSchedule((ComputationalResourceSchedulingModel) newObjectToUpdate, (String) identifier);
                     break;
                 case PROCESS_STATUS:
-                    experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToUpdate, (String) identifier);
+                    experimentRegistry.updateProcessStatus((ProcessStatus) newObjectToUpdate, (String) identifier);
                     break;
                 case PROCESS_ERROR:
-                    experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToUpdate, (String) identifier);
+                    experimentRegistry.updateProcessError((ErrorModel) newObjectToUpdate, (String) identifier);
+                    break;
+                case TASK:
+                    experimentRegistry.updateTask((TaskModel) newObjectToUpdate, (String) identifier);
                     break;
                 case TASK_STATUS:
-                    experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToUpdate, (String) identifier);
+                    experimentRegistry.updateTaskStatus((TaskStatus) newObjectToUpdate, (String) identifier);
                     break;
                 case TASK_ERROR:
-                    experimentRegistry.updateExperimentStatus((ExperimentStatus) newObjectToUpdate, (String) identifier);
+                    experimentRegistry.updateTaskError((ErrorModel) newObjectToUpdate, (String) identifier);
                     break;
                 default:
                     logger.error("Unsupported data type...", new UnsupportedOperationException());
@@ -243,7 +252,6 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
             logger.error("Error while updating the resource " + dataType.toString(), new RegistryException(e));
             throw new RegistryException("Error while updating the resource.." + dataType.toString(), e);
         }
-
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/1968ff43/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 09b06e7..442b6b8 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -467,89 +467,358 @@ public class ExperimentRegistry {
 
 
     //CPI Update Methods
+    public void updateExperiment(ExperimentModel experiment, String expId) throws RegistryException {
+        try {
+            if (!workerResource.isProjectExists(experiment.getProjectId())) {
+                logger.error("Project does not exist in the system..");
+                throw new Exception("Project does not exist in the system, Please create the project first...");
+            }
+            ExperimentResource existingExperiment = gatewayResource.getExperiment(expId);
+            existingExperiment.setExperimentName(experiment.getExperimentName());
+            existingExperiment.setUserName(experiment.getUserName());
+            existingExperiment.setGatewayExecutionId(gatewayResource.getGatewayId());
+            existingExperiment.setGatewayExecutionId(experiment.getGatewayExecutionId());
+            existingExperiment.setProjectId(experiment.getProjectId());
+            existingExperiment.setCreationTime(AiravataUtils.getTime(experiment.getCreationTime()));
+            existingExperiment.setDescription(experiment.getDescription());
+            existingExperiment.setApplicationId(experiment.getExecutionId());
+            existingExperiment.setEnableEmailNotification(experiment.isEnableEmailNotification());
+
+            existingExperiment.save();
+
+            UserConfigurationDataModel userConfigurationData = experiment.getUserConfigurationData();
+            if (userConfigurationData != null) {
+                updateUserConfigData(userConfigurationData, expId);
+            }
 
-    public void updateExpInputs(List<InputDataObjectType> exInputs, ExperimentResource experimentResource) throws RegistryException {
-//        try {
-//            List<ExperimentInputResource> experimentInputs = experimentResource.getExperimentInputs();
-//            for (InputDataObjectType input : exInputs) {
-//                for (ExperimentInputResource exinput : experimentInputs) {
-//                    if (exinput.getExperimentKey().equals(input.getName())) {
-//                        exinput.setValue(input.getValue());
-//                        if (input.getType() != null) {
-//                            exinput.setDataType(input.getType().toString());
-//                        }
-//                        exinput.setMetadata(input.getMetaData());
-//                        exinput.setAppArgument(input.getApplicationArgument());
-//                        exinput.setInputOrder(input.getInputOrder());
-//                        exinput.setRequired(input.isIsRequired());
-//                        exinput.setRequiredToCMD(input.isRequiredToAddedToCommandLine());
-//                        exinput.save();
-//                    }
-//                }
-//            }
-//        } catch (Exception e) {
-//            logger.error("Unable to update experiment inputs", e);
-//            throw new RegistryException(e);
-//        }
+            List<InputDataObjectType> experimentInputs = experiment.getExperimentInputs();
+            if (experimentInputs != null && !experimentInputs.isEmpty()) {
+                updateExpInputs(experimentInputs, expId);
+            }
 
+            List<OutputDataObjectType> experimentOutputs = experiment.getExperimentOutputs();
+            if (experimentOutputs != null && !experimentOutputs.isEmpty()) {
+                updateExpOutputs(experimentOutputs, expId);
+            }
+            ExperimentStatus experimentStatus = experiment.getExperimentStatus();
+            if (experimentStatus != null) {
+                updateExperimentStatus(experimentStatus, expId);
+            }
+            List<ErrorModel> errors = experiment.getErrors();
+            if (errors != null && !errors.isEmpty()) {
+                for (ErrorModel errror : errors) {
+                    updateExperimentError(errror, expId);
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error while updating experiment...", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public void updateExpInputs(List<InputDataObjectType> exInputs, String expID) throws RegistryException {
+        try {
+            ExperimentResource experimentResource = new ExperimentResource();
+            experimentResource.setExperimentId(expID);
+            List<ExperimentInputResource> experimentInputs = experimentResource.getExperimentInputs();
+            for (InputDataObjectType input : exInputs) {
+                for (ExperimentInputResource exinput : experimentInputs) {
+                    if (exinput.getInputName().equals(input.getName())) {
+                        exinput.setInputValue(input.getValue());
+                        exinput.setExperimentId(expID);
+                        if (input.getType() != null) {
+                            exinput.setDataType(input.getType().toString());
+                        }
+                        exinput.setMetadata(input.getMetaData());
+                        exinput.setApplicationArgument(input.getApplicationArgument());
+                        exinput.setInputOrder(input.getInputOrder());
+                        exinput.setIsRequired(input.isIsRequired());
+                        exinput.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                        exinput.save();
+                    }
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Unable to update experiment inputs", e);
+            throw new RegistryException(e);
+        }
     }
 
     public void updateExpOutputs(List<OutputDataObjectType> exOutput, String expId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(expId);
-//            List<ExperimentOutputResource> existingExpOutputs = experiment.getExperimentOutputs();
-//            for (OutputDataObjectType output : exOutput) {
-//                for (ExperimentOutputResource resource : existingExpOutputs) {
-//                    if (resource.getExperimentKey().equals(output.getName())) {
-//                        resource.setExperimentId(expId);
-//                        resource.setExperimentKey(output.getName());
-//                        resource.setValue(output.getValue());
-//                        if (output.getType() != null) {
-//                            resource.setDataType(output.getType().toString());
-//                        }
-//                        resource.setRequired(output.isIsRequired());
-//                        resource.setRequiredToCMD(output.isRequiredToAddedToCommandLine());
-//                        resource.setDataMovement(output.isDataMovement());
-//                        resource.setDataNameLocation(output.getLocation());
-//                        resource.setAppArgument(output.getApplicationArgument());
-//                        resource.setSearchQuery(output.getSearchQuery());
-////                        resource.setMetadata(output.getMetaData());
-//                        resource.save();
-//                    }
-//                }
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating experiment outputs", e);
-//            throw new RegistryException(e);
-//        }
+        try {
+            ExperimentResource experiment = gatewayResource.getExperiment(expId);
+            List<ExperimentOutputResource> existingExpOutputs = experiment.getExperimentOutputs();
+            for (OutputDataObjectType output : exOutput) {
+                for (ExperimentOutputResource resource : existingExpOutputs) {
+                    if (resource.getOutputName().equals(output.getName())) {
+                        resource.setExperimentId(expId);
+                        resource.setOutputName(output.getName());
+                        resource.setOutputValue(output.getValue());
+                        if (output.getType() != null) {
+                            resource.setDataType(output.getType().toString());
+                        }
+                        resource.setIsRequired(output.isIsRequired());
+                        resource.setRequiredToAddedToCmd(output.isRequiredToAddedToCommandLine());
+                        resource.setDataMovement(output.isDataMovement());
+                        resource.setLocation(output.getLocation());
+                        resource.setApplicationArgument(output.getApplicationArgument());
+                        resource.setSearchQuery(output.getSearchQuery());
+                        resource.save();
+                    }
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error while updating experiment outputs", e);
+            throw new RegistryException(e);
+        }
     }
 
     public String updateExperimentStatus(ExperimentStatus experimentStatus, String expId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(expId);
-//            StatusResource status = experiment.getExperimentStatus();
-//            if (status == null) {
-//                status = (StatusResource) experiment.create(ResourceType.STATUS);
-//            }
-//            status.setExperimentId(expId);
-//            status.setStatusUpdateTime(AiravataUtils.getTime(experimentStatus.getTimeOfStateChange()));
-////            if (status.getState() == null) {
-////                status.setState(ExperimentState.UNKNOWN.name());
-////            }
-//            if (isValidStatusTransition(ExperimentState.valueOf(status.getState()), experimentStatus.getState())) {
-//                status.setState(experimentStatus.getState().toString());
-//                status.setStatusType(StatusType.EXPERIMENT.toString());
-//                status.save();
-//                logger.debug(expId, "Updated experiment {} status to {}.", expId, experimentStatus.toString());
-//            }
-//        } catch (Exception e) {
-//            logger.error(expId, "Error while updating experiment status...", e);
-//            throw new RegistryException(e);
-//        }
-//        return expId;
-        return null;
+        return addExperimentStatus(experimentStatus, expId);
+    }
+
+    public String updateExperimentError(ErrorModel experimentError, String expId) throws RegistryException {
+        return addExperimentError(experimentError, expId);
+    }
+
+    public String updateUserConfigData(UserConfigurationDataModel configurationData, String experimentId) throws RegistryException {
+        try {
+            ExperimentResource experimentResource = new ExperimentResource();
+            experimentResource.setExperimentId(experimentId);
+            UserConfigurationDataResource configDataResource = experimentResource.getUserConfigurationDataResource();
+            configDataResource.setExperimentId(experimentId);
+            configDataResource.setAiravataAutoSchedule(configurationData.isAiravataAutoSchedule());
+            configDataResource.setOverrideManualScheduledParams(configurationData.isOverrideManualScheduledParams());
+            configDataResource.setShareExperimentPublically(configurationData.isShareExperimentPublicly());
+            configDataResource.setThrottleResources(configurationData.isThrottleResources());
+            configDataResource.setUserDn(configurationData.getUserDN());
+            configDataResource.setGenerateCert(configurationData.isGenerateCert());
+            configDataResource.setResourceHostId(configurationData.getComputationalResourceScheduling().getResourceHostId());
+            configDataResource.setTotalCpuCount(configurationData.getComputationalResourceScheduling().getTotalCPUCount());
+            configDataResource.setNodeCount(configurationData.getComputationalResourceScheduling().getNodeCount());
+            configDataResource.setNumberOfThreads(configurationData.getComputationalResourceScheduling().getNumberOfThreads());
+            configDataResource.setQueueName(configurationData.getComputationalResourceScheduling().getQueueName());
+            configDataResource.setWallTimeLimit(configurationData.getComputationalResourceScheduling().getWallTimeLimit());
+            configDataResource.setTotalPhysicalMemory(configurationData.getComputationalResourceScheduling().getTotalPhysicalMemory());
+            configDataResource.save();
+        } catch (Exception e) {
+            logger.error("Unable to save user config data", e);
+            throw new RegistryException(e);
+        }
+        return experimentId;
+    }
+
+    public void updateProcess(ProcessModel process, String experimentId) throws RegistryException {
+        try {
+            ExperimentResource experimentResource = new ExperimentResource();
+            experimentResource.setExperimentId(experimentId);
+            ProcessResource processResource = experimentResource.getProcess(process.getProcessId());
+            processResource.setProcessId(process.getProcessId());
+            processResource.setExperimentId(experimentId);
+            processResource.setCreationTime(AiravataUtils.getTime(process.getCreationTime()));
+            processResource.setLastUpdateTime(AiravataUtils.getTime(process.getLastUpdateTime()));
+            processResource.setProcessDetail(process.getProcessDetail());
+            processResource.setApplicationInterfaceId(process.getApplicationInterfaceId());
+            processResource.setTaskDag(process.getTaskDag());
+            processResource.save();
+
+            if(process.getResourceSchedule() != null) {
+                updateProcessResourceSchedule(process.getResourceSchedule(), process.getProcessId());
+            }
+            if(process.getProcessInputs() !=  null && process.getProcessInputs().size() > 0) {
+                updateProcessInputs(process.getProcessInputs(), process.getProcessId());
+            }
+            if(process.getProcessOutputs() != null && process.getProcessOutputs().size() > 0) {
+                updateProcessOutputs(process.getProcessOutputs(), process.getProcessId());
+            }
+            if(process.getProcessStatus() != null) {
+                updateProcessStatus(process.getProcessStatus(), process.getProcessId());
+            }
+            if(process.getProcessError() != null) {
+                updateProcessError(process.getProcessError(), process.getProcessId());
+            }
+            if(process.getTasks() != null && process.getTasks().size() > 0){
+                for(TaskModel task : process.getTasks()){
+                    updateTask(task, process.getProcessId());
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error while updating experiment...", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public String updateProcessResourceSchedule(ComputationalResourceSchedulingModel resourceSchedule, String processID) throws RegistryException {
+        try {
+            ProcessResource processResource = new ProcessResource();
+            processResource.setProcessId(processID);
+            ProcessResourceScheduleResource processResourceSchedule = processResource.getProcessResourceSchedule();
+            processResourceSchedule.setProcessId(processID);
+            processResourceSchedule.setResourceHostId(resourceSchedule.getResourceHostId());
+            processResourceSchedule.setTotalCpuCount(resourceSchedule.getTotalCPUCount());
+            processResourceSchedule.setNodeCount(resourceSchedule.getNodeCount());
+            processResourceSchedule.setNumberOfThreads(resourceSchedule.getNumberOfThreads());
+            processResourceSchedule.setQueueName(resourceSchedule.getQueueName());
+            processResourceSchedule.setWallTimeLimit(resourceSchedule.getWallTimeLimit());
+            processResourceSchedule.setTotalPhysicalMemory(resourceSchedule.getTotalPhysicalMemory());
+            processResourceSchedule.save();
+        } catch (Exception e) {
+            logger.error("Unable to save process resource schedule data", e);
+            throw new RegistryException(e);
+        }
+        return processID;
+    }
+
+    public void updateProcessInputs(List<InputDataObjectType> processInputs, String processID) throws RegistryException {
+        try {
+            ProcessResource processResource = new ProcessResource();
+            processResource.setProcessId(processID);
+            List<ProcessInputResource> existingProcessInputs = processResource.getProcessInputs();
+            for (InputDataObjectType input : processInputs) {
+                for (ProcessInputResource exinput : existingProcessInputs) {
+                    if (exinput.getInputName().equals(input.getName())) {
+                        exinput.setProcessId(processID);
+                        exinput.setInputValue(input.getValue());
+                        if (input.getType() != null) {
+                            exinput.setDataType(input.getType().toString());
+                        }
+                        exinput.setMetadata(input.getMetaData());
+                        exinput.setApplicationArgument(input.getApplicationArgument());
+                        exinput.setInputOrder(input.getInputOrder());
+                        exinput.setIsRequired(input.isIsRequired());
+                        exinput.setRequiredToAddedToCmd(input.isRequiredToAddedToCommandLine());
+                        exinput.save();
+                    }
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Unable to update experiment inputs", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public void updateProcessOutputs(List<OutputDataObjectType> processOutput, String processID) throws RegistryException {
+        try {
+            ProcessResource processResource = new ProcessResource();
+            processResource.setProcessId(processID);
+            List<ProcessOutputResource> existingProcessOutputs = processResource.getProcessOutputs();
+            for (OutputDataObjectType output : processOutput) {
+                for (ProcessOutputResource resource : existingProcessOutputs) {
+                    if (resource.getOutputName().equals(output.getName())) {
+                        resource.setProcessId(processID);
+                        resource.setOutputName(output.getName());
+                        resource.setOutputValue(output.getValue());
+                        if (output.getType() != null) {
+                            resource.setDataType(output.getType().toString());
+                        }
+                        resource.setIsRequired(output.isIsRequired());
+                        resource.setRequiredToAddedToCmd(output.isRequiredToAddedToCommandLine());
+                        resource.setDataMovement(output.isDataMovement());
+                        resource.setLocation(output.getLocation());
+                        resource.setApplicationArgument(output.getApplicationArgument());
+                        resource.setSearchQuery(output.getSearchQuery());
+                        resource.save();
+                    }
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error while updating process outputs", e);
+            throw new RegistryException(e);
+        }
+    }
+
+    public String updateProcessStatus(ProcessStatus processStatus, String processID) throws RegistryException {
+        return addProcessStatus(processStatus, processID);
+    }
+
+    public String updateProcessError(ErrorModel processError, String processID) throws RegistryException {
+        return addProcessError(processError, processID);
+    }
+
+    public String updateTask(TaskModel task, String processID) throws RegistryException {
+        try {
+            ProcessResource processResource = new ProcessResource();
+            processResource.setProcessId(processID);
+            TaskResource taskResource = processResource.getTask(task.getTaskId());
+            taskResource.setParentProcessId(getProcessID(processID));
+            taskResource.setTaskType(task.getTaskType().toString());
+            taskResource.setCreationTime(AiravataUtils.getTime(task.getCreationTime()));
+            taskResource.setLastUpdateTime(AiravataUtils.getTime(task.getLastUpdateTime()));
+            taskResource.setTaskDetail(task.getTaskDetail());
+            taskResource.setTaskInternalStore(task.getTaskInternalStore());
+            taskResource.save();
+
+            if(task.getTaskError() != null) {
+                updateTaskError(task.getTaskError(), task.getTaskId());
+            }
+            if(task.getTaskError() != null) {
+                updateTaskError(task.getTaskError(), task.getTaskId());
+            }
+        } catch (Exception e) {
+            logger.error(processID, "Error while adding task...", e);
+            throw new RegistryException(e);
+        }
+        return processID;
+    }
+
+    public String updateTaskStatus(TaskStatus taskStatus, String taskID) throws RegistryException {
+        return addTaskStatus(taskStatus, taskID);
+    }
+
+    public String updateTaskError(ErrorModel taskError, String taskID) throws RegistryException {
+        return addTaskError(taskError, taskID);
+    }
+
+    //TODO
+    public void updateExperimentField(String expID, String fieldName, Object value) throws RegistryException {
+        try {
+            ExperimentResource experiment = gatewayResource.getExperiment(expID);
+            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
+                experiment.setExperimentName((String) value);
+                experiment.save();
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
+                experiment.setUserName((String) value);
+                experiment.save();
+            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC)) {
+                experiment.setDescription((String) value);
+                experiment.save();
+            } else {
+                logger.error("Unsupported field type for Experiment");
+            }
+
+        } catch (Exception e) {
+            logger.error("Error while updating fields in experiment...", e);
+            throw new RegistryException(e);
+        }
     }
 
+    public void updateUserConfigDataField(String expID, String fieldName, Object value) throws RegistryException {
+        try {
+            ExperimentResource experiment = gatewayResource.getExperiment(expID);
+            UserConfigurationDataResource exConfigData = (UserConfigurationDataResource)
+                    experiment.get(ResourceType.USER_CONFIGURATION_DATA, expID);
+            if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
+                exConfigData.setAiravataAutoSchedule((Boolean) value);
+                exConfigData.save();
+            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
+                exConfigData.setOverrideManualScheduledParams((Boolean) value);
+                exConfigData.save();
+            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.SHARE_EXP)) {
+                exConfigData.setShareExperimentPublically((Boolean) value);
+                exConfigData.save();
+            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)) {
+                updateSchedulingData((ComputationalResourceSchedulingModel) value, experiment);
+            } else {
+                logger.error("Unsupported field type for Experiment config data");
+            }
+
+        } catch (Exception e) {
+            logger.error("Error while updating fields in experiment config...", e);
+            throw new RegistryException(e);
+        }
+    }
+
+
 //    public String addWorkflowNodeStatus(WorkflowNodeStatus status, CompositeIdentifier ids) throws RegistryException {
 //        try {
 //            ExperimentResource experiment = gatewayResource.getExperiment((String) ids.getTopLevelIdentifier());
@@ -619,32 +888,6 @@ public class ExperimentRegistry {
         return null;
     }
 
-    public void updateTaskStatus(TaskStatus status, String taskId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
-//            WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL);
-//            TaskDetailResource taskDetail = workflowNode.getTaskDetail(taskId);
-//            StatusResource statusResource;
-//            if (taskDetail.isTaskStatusExist(taskId)) {
-//                workflowNode = experiment.getWorkflowNode(taskDetail.getNodeId());
-//                statusResource = workflowNode.getTaskStatus(taskId);
-//            } else {
-//                statusResource = (StatusResource) taskDetail.create(ResourceType.STATUS);
-//            }
-//            statusResource.setExperimentId(workflowNode.getExperimentId());
-//            statusResource.setNodeId(workflowNode.getNodeInstanceId());
-//            statusResource.setTaskId(taskId);
-//            statusResource.setStatusType(StatusType.TASK.toString());
-//            statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange()));
-//            statusResource.setState(status.getState().toString());
-//            statusResource.save();
-//            logger.info(taskId, "Updated task {} status to {}.", taskId, status.toString());
-//        } catch (Exception e) {
-//            logger.error(taskId, "Error while updating task status to " + status.toString() + "...", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
     /**
      * @param status job status
      * @param ids    composite id will contain taskid and jobid
@@ -1481,167 +1724,6 @@ public class ExperimentRegistry {
         return error + "_" + UUID.randomUUID();
     }
 
-    public void updateExperimentField(String expID, String fieldName, Object value) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(expID);
-//            if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
-//                experiment.setExpName((String) value);
-//                experiment.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
-//                experiment.setExecutionUser((String) value);
-//                experiment.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC)) {
-//                experiment.setDescription((String) value);
-//                experiment.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID)) {
-//                experiment.setApplicationId((String) value);
-//                experiment.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_VERSION)) {
-//                experiment.setApplicationVersion((String) value);
-//                experiment.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_TEMPLATE_ID)) {
-//                experiment.setWorkflowTemplateId((String) value);
-//                experiment.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_TEMPLATE_VERSION)) {
-//                experiment.setWorkflowTemplateVersion((String) value);
-//                experiment.save();
-//            } else {
-//                logger.error("Unsupported field type for Experiment");
-//            }
-//
-//        } catch (Exception e) {
-//            logger.error("Error while updating fields in experiment...", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void updateUserConfigDataField(String expID, String fieldName, Object value) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(expID);
-//            ConfigDataResource exConfigData = (ConfigDataResource) experiment.get(ResourceType.CONFIG_DATA, expID);
-//            if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
-//                exConfigData.setAiravataAutoSchedule((Boolean) value);
-//                exConfigData.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
-//                exConfigData.setOverrideManualParams((Boolean) value);
-//                exConfigData.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.SHARE_EXP)) {
-//                exConfigData.setShareExp((Boolean) value);
-//                exConfigData.save();
-//            } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)) {
-//                updateSchedulingData((ComputationalResourceSchedulingModel) value, experiment);
-//            } else {
-//                logger.error("Unsupported field type for Experiment config data");
-//            }
-//
-//        } catch (Exception e) {
-//            logger.error("Error while updating fields in experiment config...", e);
-//            throw new RegistryException(e);
-//        }
-    }
-
-    public void updateExperiment(ExperimentModel experiment, String expId) throws RegistryException {
-//        try {
-//            ExperimentResource existingExperiment = gatewayResource.getExperiment(expId);
-//            existingExperiment.setExpName(experiment.getExperimentName());
-//            existingExperiment.setExecutionUser(experiment.getUserName());
-//            existingExperiment.setGatewayId(gatewayResource.getGatewayId());
-//            existingExperiment.setGatewayExecutionId(experiment.getGatewayExecutionId());
-//            if (!workerResource.isProjectExists(experiment.getProjectId())) {
-//                logger.error("Project does not exist in the system..");
-//                throw new Exception("Project does not exist in the system, Please create the project first...");
-//            }
-//            existingExperiment.setProjectId(experiment.getProjectId());
-//            existingExperiment.setCreationTime(AiravataUtils.getTime(experiment.getCreationTime()));
-//            existingExperiment.setDescription(experiment.getDescription());
-//            existingExperiment.setApplicationId(experiment.getExecutionId());
-//            existingExperiment.setEnableEmailNotifications(experiment.isEnableEmailNotification());
-//            existingExperiment.save();
-//
-//            List<String> emailAddresses = experiment.getEmailAddresses();
-//            // remove existing email addresses
-//            existingExperiment.remove(ResourceType.NOTIFICATION_EMAIL, expId);
-//            if (emailAddresses != null && !emailAddresses.isEmpty()){
-//                for (String email : emailAddresses){
-//                    NotificationEmailResource emailResource = new NotificationEmailResource();
-//                    emailResource.setExperimentId(expId);
-//                    emailResource.setEmailAddress(email);
-//                    emailResource.save();
-//                }
-//            }
-//
-//            List<InputDataObjectType> experimentInputs = experiment.getExperimentInputs();
-//            if (experimentInputs != null && !experimentInputs.isEmpty()) {
-//                updateExpInputs(experimentInputs, existingExperiment);
-//            }
-//
-//            UserConfigurationDataModel userConfigurationData = experiment.getUserConfigurationData();
-//            if (userConfigurationData != null) {
-//                updateUserConfigData(userConfigurationData, expId);
-//            }
-//
-//            List<OutputDataObjectType> experimentOutputs = experiment.getExperimentOutputs();
-//            if (experimentOutputs != null && !experimentOutputs.isEmpty()) {
-//                updateExpOutputs(experimentOutputs, expId);
-//            }
-//            ExperimentStatus experimentStatus = experiment.getExperimentStatus();
-//            if (experimentStatus != null) {
-//                updateExperimentStatus(experimentStatus, expId);
-//            }
-////            List<WorkflowNodeDetails> workflowNodeDetailsList = experiment.getWorkflowNodeDetailsList();
-////            if (workflowNodeDetailsList != null && !workflowNodeDetailsList.isEmpty()) {
-////                for (WorkflowNodeDetails wf : workflowNodeDetailsList) {
-////                    updateWorkflowNodeDetails(wf, wf.getNodeInstanceId());
-////                }
-////            }
-//            List<ErrorModel> errors = experiment.getErrors();
-//            if (errors != null && !errors.isEmpty()) {
-//                for (ErrorModel errror : errors) {
-//                    addErrorDetails(errror, expId);
-//                }
-//            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating experiment...", e);
-//            throw new RegistryException(e);
-//        }
-
-    }
-
-    public void updateUserConfigData(UserConfigurationDataModel configData, String expId) throws RegistryException {
-//        try {
-//            ExperimentResource experiment = gatewayResource.getExperiment(expId);
-//            ConfigDataResource resource = (ConfigDataResource) experiment.get(ResourceType.CONFIG_DATA, expId);
-//            resource.setExperimentId(expId);
-//            resource.setAiravataAutoSchedule(configData.isAiravataAutoSchedule());
-//            resource.setOverrideManualParams(configData.isOverrideManualScheduledParams());
-//            resource.setShareExp(configData.isShareExperimentPublicly());
-//            resource.setUserDn(configData.getUserDN());
-//            resource.setGenerateCert(configData.isGenerateCert());
-//            resource.save();
-//            ComputationalResourceSchedulingModel resourceScheduling = configData.getComputationalResourceScheduling();
-//            if (resourceScheduling != null) {
-//                updateSchedulingData(resourceScheduling, experiment);
-//            }
-////            AdvancedInputDataHandling inputDataHandling = configData.getAdvanceInputDataHandling();
-////            if (inputDataHandling != null) {
-////                updateInputDataHandling(inputDataHandling, experiment);
-////            }
-////            AdvancedOutputDataHandling outputDataHandling = configData.getAdvanceOutputDataHandling();
-////            if (outputDataHandling != null) {
-////                updateOutputDataHandling(outputDataHandling, experiment);
-////            }
-////
-////            QualityOfServiceParams qosParams = configData.getQosParams();
-////            if (qosParams != null) {
-////                updateQosParams(qosParams, experiment);
-////            }
-//        } catch (Exception e) {
-//            logger.error("Error while updating user config data...", e);
-//            throw new RegistryException(e);
-//        }
-
-    }
-
 //    public void updateQosParams(QualityOfServiceParams qosParams, ExperimentCatResource resource) throws RegistryException {
 //        try {
 //            if (resource instanceof ExperimentResource) {
@@ -2974,7 +3056,4 @@ public class ExperimentRegistry {
         return null;
     }
 
-    public Object updateExperimentError(ErrorModel newObjectToAdd, String dependentIdentifier) {
-        return null;
-    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/1968ff43/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
index 86933c4..a8919ff 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
@@ -510,4 +510,9 @@ public class ProcessResource extends AbstractExpCatResource {
         }
         return taskResources;
     }
+
+    public TaskResource getTask(String taskId) throws RegistryException {
+        ExperimentCatResource resource = get(ResourceType.TASK, taskId);
+        return (TaskResource)resource;
+    }
 }