This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch group-based-auth
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit 31120306ca5fd3f396156e78e3d624142187662f
Author: Marcus Christie <[email protected]>
AuthorDate: Tue Jun 12 12:05:21 2018 -0400

    AIRAVATA-2823 Populate parent ids on child entities
---
 .../repositories/expcatalog/ProcessRepository.java | 24 +++++++++++++++-------
 .../repositories/expcatalog/TaskRepository.java    | 19 +++++++++++------
 .../expcatalog/ProcessRepositoryTest.java          | 14 +++++++++++++
 3 files changed, 44 insertions(+), 13 deletions(-)

diff --git 
a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ProcessRepository.java
 
b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ProcessRepository.java
index 9679810..731133f 100644
--- 
a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ProcessRepository.java
+++ 
b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ProcessRepository.java
@@ -41,6 +41,8 @@ import java.util.Map;
 public class ProcessRepository extends ExpCatAbstractRepository<ProcessModel, 
ProcessEntity, String> {
     private final static Logger logger = 
LoggerFactory.getLogger(ProcessRepository.class);
 
+    private final TaskRepository taskRepository = new TaskRepository();
+
     public ProcessRepository() { super(ProcessModel.class, 
ProcessEntity.class); }
 
     protected String saveProcessModelData(ProcessModel processModel) throws 
RegistryException {
@@ -65,11 +67,6 @@ public class ProcessRepository extends 
ExpCatAbstractRepository<ProcessModel, Pr
             });
         }
 
-        if (processModel.getTasks() != null) {
-            logger.debug("Populating the parent process id of Tasks for the 
Process");
-            processModel.getTasks().forEach(taskEntity -> 
taskEntity.setParentProcessId(processId));
-        }
-
         if (!isProcessExist(processId)) {
             logger.debug("Setting creation time if process doesn't already 
exist");
             processModel.setCreationTime(System.currentTimeMillis());
@@ -79,8 +76,15 @@ public class ProcessRepository extends 
ExpCatAbstractRepository<ProcessModel, Pr
         Mapper mapper = ObjectMapperSingleton.getInstance();
         ProcessEntity processEntity = mapper.map(processModel, 
ProcessEntity.class);
 
+        populateParentIds(processEntity);
+
+        return execute(entityManager -> entityManager.merge(processEntity));
+    }
+
+    protected void populateParentIds(ProcessEntity processEntity) {
+        String processId = processEntity.getProcessId();
         if (processEntity.getProcessResourceSchedule() != null) {
-            logger.debug("Populating the Primary Key of 
ProcessResourceSchedule object for the Process");
+            logger.debug("Populating the Primary Key of 
ProcessResourceSchedule objects for the Process");
             processEntity.getProcessResourceSchedule().setProcessId(processId);
         }
 
@@ -104,7 +108,13 @@ public class ProcessRepository extends 
ExpCatAbstractRepository<ProcessModel, Pr
             processEntity.getProcessErrors().forEach(processErrorEntity -> 
processErrorEntity.setProcessId(processId));
         }
 
-        return execute(entityManager -> entityManager.merge(processEntity));
+        if (processEntity.getTasks() != null) {
+            logger.debug("Populating the Primary Key of Task objects for the 
Process");
+            processEntity.getTasks().forEach(taskEntity -> {
+                taskEntity.setParentProcessId(processId);
+                taskRepository.populateParentIds(taskEntity);
+            });
+        }
     }
 
     public String addProcess(ProcessModel process, String experimentId) throws 
RegistryException {
diff --git 
a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/TaskRepository.java
 
b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/TaskRepository.java
index 040f923..7c2404d 100644
--- 
a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/TaskRepository.java
+++ 
b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/TaskRepository.java
@@ -55,11 +55,6 @@ public class TaskRepository extends 
ExpCatAbstractRepository<TaskModel, TaskEnti
 
         String taskId = taskModel.getTaskId();
 
-        if (taskModel.getJobs() != null) {
-            logger.debug("Populating the Job objects' Task ID for the Task");
-            taskModel.getJobs().forEach(jobEntity -> 
jobEntity.setTaskId(taskId));
-        }
-
         if (taskModel.getTaskStatuses() != null) {
             logger.debug("Populating the status id of TaskStatus objects for 
the Task");
             taskModel.getTaskStatuses().forEach(taskStatusEntity -> {
@@ -79,6 +74,15 @@ public class TaskRepository extends 
ExpCatAbstractRepository<TaskModel, TaskEnti
         Mapper mapper = ObjectMapperSingleton.getInstance();
         TaskEntity taskEntity = mapper.map(taskModel, TaskEntity.class);
 
+        populateParentIds(taskEntity);
+
+        return execute(entityManager -> entityManager.merge(taskEntity));
+    }
+
+    protected void populateParentIds(TaskEntity taskEntity) {
+
+        String taskId = taskEntity.getTaskId();
+
         if (taskEntity.getTaskStatuses() != null) {
             logger.debug("Populating the Primary Key of TaskStatus objects for 
the Task");
             taskEntity.getTaskStatuses().forEach(taskStatusEntity -> 
taskStatusEntity.setTaskId(taskId));
@@ -89,7 +93,10 @@ public class TaskRepository extends 
ExpCatAbstractRepository<TaskModel, TaskEnti
             taskEntity.getTaskErrors().forEach(taskErrorEntity -> 
taskErrorEntity.setTaskId(taskId));
         }
 
-        return execute(entityManager -> entityManager.merge(taskEntity));
+        if (taskEntity.getJobs() != null) {
+            logger.debug("Populating the Job objects' Task ID for the Task");
+            taskEntity.getJobs().forEach(jobEntity -> 
jobEntity.setTaskId(taskId));
+        }
     }
 
     public String addTask(TaskModel task, String processId) throws 
RegistryException {
diff --git 
a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ProcessRepositoryTest.java
 
b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ProcessRepositoryTest.java
index b7da06f..b454738 100644
--- 
a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ProcessRepositoryTest.java
+++ 
b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ProcessRepositoryTest.java
@@ -26,6 +26,10 @@ import org.apache.airavata.model.process.ProcessModel;
 import 
org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.ProcessState;
 import org.apache.airavata.model.status.ProcessStatus;
+import org.apache.airavata.model.status.TaskState;
+import org.apache.airavata.model.status.TaskStatus;
+import org.apache.airavata.model.task.TaskModel;
+import org.apache.airavata.model.task.TaskTypes;
 import org.apache.airavata.model.workspace.Gateway;
 import org.apache.airavata.model.workspace.Project;
 import 
org.apache.airavata.registry.core.repositories.expcatalog.util.Initialize;
@@ -98,6 +102,16 @@ public class ProcessRepositoryTest {
         ProcessStatus processStatus = new ProcessStatus();
         processStatus.setState(ProcessState.CREATED);
         processModel.addToProcessStatuses(processStatus);
+
+        TaskModel task = new TaskModel();
+        task.setTaskId("task-id");
+        task.setTaskType(TaskTypes.ENV_SETUP);
+        processModel.addToTasks(task);
+
+        TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
+        taskStatus.setStatusId("task-status-id");
+        task.addToTaskStatuses(taskStatus);
+
         String processId = processRepository.addProcess(processModel, 
experimentId);
         assertTrue(processId != null);
         
assertTrue(experimentRepository.getExperiment(experimentId).getProcesses().size()
 == 1);

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to