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

git commit: AIRAVATA-1052

Repository: airavata
Updated Branches:
  refs/heads/master 79cb0ef51 -> e40016ddb


AIRAVATA-1052


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

Branch: refs/heads/master
Commit: e40016ddb3b11560a6a94c90c5457e1bda39457d
Parents: 79cb0ef
Author: chathuri <ch...@apache.org>
Authored: Wed Mar 5 12:22:46 2014 -0500
Committer: chathuri <ch...@apache.org>
Committed: Wed Mar 5 12:22:46 2014 -0500

----------------------------------------------------------------------
 .../registry/jpa/impl/ExperimentRegistry.java   | 99 ++++++++++++++++++--
 1 file changed, 93 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/e40016dd/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index d2fcd9c..bf86bf0 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -25,6 +25,7 @@ import org.apache.airavata.model.workspace.experiment.*;
 import org.apache.airavata.persistance.registry.jpa.Resource;
 import org.apache.airavata.persistance.registry.jpa.ResourceType;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
+import org.apache.airavata.persistance.registry.jpa.model.ErrorDetail;
 import org.apache.airavata.persistance.registry.jpa.model.WorkflowNodeDetail;
 import org.apache.airavata.persistance.registry.jpa.resources.*;
 import org.apache.airavata.persistance.registry.jpa.utils.ThriftDataModelConversion;
@@ -50,7 +51,7 @@ public class ExperimentRegistry {
     }
 
     public String addExperiment(Experiment experiment) throws Exception {
-        String experimentID = "";
+        String experimentID;
         try {
             if (!ResourceUtils.isUserExist(experiment.getUserName())) {
                 logger.error("User does not exist in the system..");
@@ -98,6 +99,10 @@ public class ExperimentRegistry {
             ExperimentStatus experimentStatus = experiment.getExperimentStatus();
             if (experimentStatus != null){
                 updateExperimentStatus(experimentStatus, experimentID);
+            }else {
+                experimentStatus = new ExperimentStatus();
+                experimentStatus.setExperimentState(ExperimentState.CREATED);
+                updateExperimentStatus(experimentStatus, experimentID);
             }
 
             List<WorkflowNodeDetails> workflowNodeDetailsList = experiment.getWorkflowNodeDetailsList();
@@ -106,6 +111,12 @@ public class ExperimentRegistry {
                     addWorkflowNodeDetails(wf, experimentID);
                 }
             }
+            List<ErrorDetails> errors = experiment.getErrors();
+            if (errors != null && !errors.isEmpty()){
+                for (ErrorDetails errror : errors){
+                    addErrorDetails(errror, experimentID);
+                }
+            }
         } catch (Exception e) {
             logger.error("Error while saving experiment to registry", e.getMessage());
             throw new Exception(e);
@@ -631,16 +642,39 @@ public class ExperimentRegistry {
             resource.setCreationTime(getTime(nodeDetails.getCreationTime()));
             resource.setNodeInstanceId(getNodeInstanceID(nodeDetails.getNodeName()));
             resource.save();
+            String nodeId = resource.getNodeInstanceId();
             List<DataObjectType> nodeInputs = nodeDetails.getNodeInputs();
             if (nodeInputs != null) {
                 addWorkflowInputs(nodeDetails.getNodeInputs(), resource);
             }
             List<DataObjectType> nodeOutputs = nodeDetails.getNodeOutputs();
             if (nodeOutputs != null && !nodeOutputs.isEmpty()){
-                CompositeIdentifier ids = new CompositeIdentifier(expId, resource.getNodeInstanceId());
+                CompositeIdentifier ids = new CompositeIdentifier(expId, nodeId);
                 addNodeOutputs(nodeOutputs, ids);
             }
-            return resource.getNodeInstanceId();
+            WorkflowNodeStatus workflowNodeStatus = nodeDetails.getWorkflowNodeStatus();
+            if (workflowNodeStatus != null){
+                WorkflowNodeStatus status = getWorkflowNodeStatus(nodeId);
+                if (status != null){
+                    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){
+                    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.getMessage());
             throw new Exception(e);
@@ -651,11 +685,11 @@ public class ExperimentRegistry {
         try {
             ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
             WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode(nodeId);
-            workflowNode.setExperimentResource(experiment);
             workflowNode.setNodeName(nodeDetails.getNodeName());
             workflowNode.setCreationTime(getTime(nodeDetails.getCreationTime()));
             workflowNode.setNodeInstanceId(getNodeInstanceID(nodeDetails.getNodeName()));
             workflowNode.save();
+            String expID = workflowNode.getExperimentResource().getExpID();
             List<DataObjectType> nodeInputs = nodeDetails.getNodeInputs();
             if (nodeInputs != null) {
                 updateWorkflowInputs(nodeDetails.getNodeInputs(), workflowNode);
@@ -664,6 +698,32 @@ public class ExperimentRegistry {
             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.getMessage());
             throw new Exception(e);
@@ -1010,6 +1070,17 @@ public class ExperimentRegistry {
             resource.setTransferDescription(transferDetails.getTransferDescription());
             resource.setCreationTime(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.getMessage());
@@ -1027,6 +1098,17 @@ public class ExperimentRegistry {
             resource.setTransferDescription(transferDetails.getTransferDescription());
             resource.setCreationTime(getTime(transferDetails.getCreationTime()));
             resource.save();
+            String taskId = resource.getTaskDetailResource().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.getMessage());
@@ -1327,6 +1409,12 @@ public class ExperimentRegistry {
                     updateWorkflowNodeDetails(wf, wf.getNodeInstanceId());
                 }
             }
+            List<ErrorDetails> errors = experiment.getErrors();
+            if (errors != null && !errors.isEmpty()){
+                for (ErrorDetails errror : errors){
+                    addErrorDetails(errror, expId);
+                }
+            }
         } catch (Exception e) {
             logger.error("Error while updating experiment...", e.getMessage());
             throw new Exception(e);
@@ -1342,7 +1430,7 @@ public class ExperimentRegistry {
             resource.setAiravataAutoSchedule(configData.isAiravataAutoSchedule());
             resource.setOverrideManualParams(configData.isOverrideManualScheduledParams());
             resource.setShareExp(configData.isShareExperimentPublicly());
-
+            resource.save();
             ComputationalResourceScheduling resourceScheduling = configData.getComputationalResourceScheduling();
             if (resourceScheduling != null) {
                 updateSchedulingData(resourceScheduling, experiment);
@@ -1360,7 +1448,6 @@ public class ExperimentRegistry {
             if (qosParams != null) {
                 updateQosParams(qosParams, experiment);
             }
-            resource.save();
         } catch (Exception e) {
             logger.error("Error while updating user config data...", e.getMessage());
             throw new Exception(e);