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:46 UTC

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

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) {