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


The following commit(s) were added to refs/heads/group-based-auth by this push:
     new d14aea5  AIRAVATA-2822 Bringing saveExperimentStatus in line with 
current impl
d14aea5 is described below

commit d14aea5840a18d2dadf02b971fb5ec1b23d0f4c8
Author: Marcus Christie <[email protected]>
AuthorDate: Mon Jun 11 16:12:51 2018 -0400

    AIRAVATA-2822 Bringing saveExperimentStatus in line with current impl
    
    ExperimentRegistry will update an existing ExperimentStatus record if
    the new record has the same ExperimentState as the "current"
    ExperimentStatus record.
---
 .../repositories/expcatalog/ExperimentStatusRepository.java  | 12 ++++++++++++
 .../expcatalog/ExperimentStatusRepositoryTest.java           |  5 +++++
 2 files changed, 17 insertions(+)

diff --git 
a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentStatusRepository.java
 
b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentStatusRepository.java
index 0babd10..dc06f19 100644
--- 
a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentStatusRepository.java
+++ 
b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentStatusRepository.java
@@ -42,6 +42,18 @@ public class ExperimentStatusRepository extends 
ExpCatAbstractRepository<Experim
     public ExperimentStatusRepository() { super(ExperimentStatus.class, 
ExperimentStatusEntity.class); }
 
     protected String saveExperimentStatus(ExperimentStatus experimentStatus, 
String experimentId) throws RegistryException {
+
+        if (experimentStatus.getStatusId() == null) {
+
+            ExperimentStatus currentExperimentStatus = 
getExperimentStatus(experimentId);
+            if (currentExperimentStatus == null || 
currentExperimentStatus.getState() != experimentStatus.getState()) {
+                
experimentStatus.setStatusId(ExpCatalogUtils.getID("EXPERIMENT_STATE"));
+            } else {
+                // Update the existing current status if experimentStatus has 
no status id and the same state
+                
experimentStatus.setStatusId(currentExperimentStatus.getStatusId());
+            }
+        }
+
         Mapper mapper = ObjectMapperSingleton.getInstance();
         ExperimentStatusEntity experimentStatusEntity = 
mapper.map(experimentStatus, ExperimentStatusEntity.class);
 
diff --git 
a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentStatusRepositoryTest.java
 
b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentStatusRepositoryTest.java
index c6f4de8..ec1224b 100644
--- 
a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentStatusRepositoryTest.java
+++ 
b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentStatusRepositoryTest.java
@@ -101,8 +101,13 @@ public class ExperimentStatusRepositoryTest {
         experimentStatus.setState(ExperimentState.EXECUTING);
         experimentStatusRepository.updateExperimentStatus(experimentStatus, 
experimentId);
 
+        ExperimentStatus updatedExecutingStatus = new 
ExperimentStatus(ExperimentState.EXECUTING);
+        updatedExecutingStatus.setReason("updated reason");
+        String updatedExperimentStatusId = 
experimentStatusRepository.updateExperimentStatus(updatedExecutingStatus, 
experimentId);
+
         ExperimentStatus retrievedExpStatus = 
experimentStatusRepository.getExperimentStatus(experimentId);
         assertEquals(ExperimentState.EXECUTING, retrievedExpStatus.getState());
+        assertEquals("updated reason", updatedExecutingStatus.getReason());
 
         experimentRepository.removeExperiment(experimentId);
         gatewayRepository.removeGateway(gatewayId);

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

Reply via email to