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].
