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

dimuthuupe pushed a commit to branch staging
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/staging by this push:
     new 09530cc  Returning the sorted list of job statuses instead of last one
09530cc is described below

commit 09530cc65461ddb581892578239c0394ac695bff
Author: Dimuthu Wannipurage <[email protected]>
AuthorDate: Tue Apr 2 11:27:31 2019 -0400

    Returning the sorted list of job statuses instead of last one
---
 .../catalog/impl/ExperimentRegistry.java           | 45 ++++++++--------------
 .../catalog/resources/ExperimentResource.java      | 34 +++++-----------
 .../experiment/catalog/resources/JobResource.java  | 37 +++++++++---------
 .../catalog/utils/ThriftDataModelConversion.java   | 10 ++---
 4 files changed, 49 insertions(+), 77 deletions(-)

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 35e912f..1267208 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
@@ -48,6 +48,7 @@ import org.slf4j.LoggerFactory;
 
 import java.sql.Timestamp;
 import java.util.*;
+import java.util.stream.Collectors;
 
 public class ExperimentRegistry {
     private GatewayResource gatewayResource;
@@ -216,7 +217,7 @@ public class ExperimentRegistry {
         try {
             ExperimentResource experiment = new ExperimentResource();
             experiment.setExperimentId(expId);
-            ExperimentStatusResource status = experiment.getExperimentStatus();
+            ExperimentStatusResource status = 
experiment.getLastExperimentStatus();
             ExperimentState newState = experimentStatus.getState();
             if (status == null) {
                 status = (ExperimentStatusResource) 
experiment.create(ResourceType.EXPERIMENT_STATUS);
@@ -568,7 +569,7 @@ public class ExperimentRegistry {
         try {
             JobResource jobResource = new JobResource();
             jobResource.setJobId(jobID);
-            JobStatusResource status = jobResource.getJobStatus();
+            JobStatusResource status = jobResource.getLastJobStatus();
             if (status == null) {
                 status = new JobStatusResource();
             }
@@ -1065,7 +1066,7 @@ public class ExperimentRegistry {
             } else if 
(fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_OUTPUTS))
 {
                 return 
ThriftDataModelConversion.getExpOutputs(resource.getExperimentOutputs());
             } else if 
(fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS))
 {
-                return 
ThriftDataModelConversion.getExperimentStatus(resource.getExperimentStatus());
+                return 
ThriftDataModelConversion.getExperimentStatus(resource.getLastExperimentStatus());
             } else if 
(fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_ERRORS))
 {
                 return 
ThriftDataModelConversion.getExperimentErrorList(resource.getExperimentErrors());
             } else if 
(fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_CONFIGURATION_DATA))
 {
@@ -1204,7 +1205,7 @@ public class ExperimentRegistry {
                if (fieldName == null) {
                        return ThriftDataModelConversion.getJobModel(resource);
                } else if 
(fieldName.equals(Constants.FieldConstants.JobConstants.JOB_STATUS)) {
-                       return 
ThriftDataModelConversion.getJobStatus(resource.getJobStatus());
+                       return 
ThriftDataModelConversion.getJobStatus(resource.getLastJobStatus());
                } else {
                        logger.error("Unsupported field name for job basic 
data..");
                }
@@ -1310,14 +1311,10 @@ public class ExperimentRegistry {
                 List<JobResource> resources = processResource.getJobList();
                 for (JobResource jobResource : resources) {
                     JobModel jobModel = 
ThriftDataModelConversion.getJobModel(jobResource);
-                    JobStatusResource latestSR = jobResource.getJobStatus();
-                       if (latestSR != null) {
-                               JobStatus jobStatus = new 
JobStatus(JobState.valueOf(latestSR.getState()));
-                               jobStatus.setReason(latestSR.getReason());
-                        List<JobStatus> statuses = new ArrayList<>();
-                        statuses.add(jobStatus);
-                               jobModel.setJobStatuses(statuses);
-                       }
+                    List<JobStatusResource> jobStatusResources = 
jobResource.getJobStatuses();
+                    jobModel.setJobStatuses(jobStatusResources.stream()
+                            .map(ThriftDataModelConversion::getJobStatus)
+                            .collect(Collectors.toList()));
                        jobs.add(jobModel);
                 }
                 return jobs;
@@ -1328,14 +1325,10 @@ public class ExperimentRegistry {
                 List<JobResource> resources = taskResource.getJobList();
                 for (JobResource jobResource : resources) {
                     JobModel jobModel = 
ThriftDataModelConversion.getJobModel(jobResource);
-                    JobStatusResource latestSR = jobResource.getJobStatus();
-                    if (latestSR != null) {
-                        JobStatus jobStatus = new 
JobStatus(JobState.valueOf(latestSR.getState()));
-                        jobStatus.setReason(latestSR.getReason());
-                        List<JobStatus> statuses = new ArrayList<>();
-                        statuses.add(jobStatus);
-                        jobModel.setJobStatuses(statuses);
-                    }
+                    List<JobStatusResource> jobStatusResources = 
jobResource.getJobStatuses();
+                    jobModel.setJobStatuses(jobStatusResources.stream()
+                            .map(ThriftDataModelConversion::getJobStatus)
+                            .collect(Collectors.toList()));
                     jobs.add(jobModel);
                 }
                 return jobs;
@@ -1346,14 +1339,10 @@ public class ExperimentRegistry {
                 List<JobResource> resources = resource.getJobsById();
                 for (JobResource jobResource : resources) {
                     JobModel jobModel = 
ThriftDataModelConversion.getJobModel(jobResource);
-                    JobStatusResource latestSR = jobResource.getJobStatus();
-                    if (latestSR != null) {
-                        JobStatus jobStatus = new 
JobStatus(JobState.valueOf(latestSR.getState()));
-                        jobStatus.setReason(latestSR.getReason());
-                        List<JobStatus> statuses = new ArrayList<>();
-                        statuses.add(jobStatus);
-                        jobModel.setJobStatuses(statuses);
-                    }
+                    List<JobStatusResource> jobStatusResources = 
jobResource.getJobStatuses();
+                    jobModel.setJobStatuses(jobStatusResources.stream()
+                            .map(ThriftDataModelConversion::getJobStatus)
+                            .collect(Collectors.toList()));
                     jobs.add(jobModel);
                 }
                 return jobs;
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
index d39d7b9..2e4afa5 100644
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
@@ -1,4 +1,4 @@
-/**
+/*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -381,7 +381,7 @@ public class ExperimentResource extends 
AbstractExpCatResource {
     }
 
     public List<ExperimentCatResource> get(ResourceType type) throws 
RegistryException{
-        List<ExperimentCatResource> resourceList = new 
ArrayList<ExperimentCatResource>();
+        List<ExperimentCatResource> resourceList = new ArrayList<>();
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
@@ -544,7 +544,7 @@ public class ExperimentResource extends 
AbstractExpCatResource {
     }
 
     public List<ExperimentInputResource> getExperimentInputs() throws 
RegistryException{
-        List<ExperimentInputResource> experimentInputResources = new 
ArrayList();
+        List<ExperimentInputResource> experimentInputResources = new 
ArrayList<>();
         List<ExperimentCatResource> resources = 
get(ResourceType.EXPERIMENT_INPUT);
         for (ExperimentCatResource resource : resources) {
             ExperimentInputResource inputResource = (ExperimentInputResource) 
resource;
@@ -554,7 +554,7 @@ public class ExperimentResource extends 
AbstractExpCatResource {
     }
 
     public List<ExperimentOutputResource> getExperimentOutputs() throws 
RegistryException{
-        List<ExperimentOutputResource> outputResources = new ArrayList();
+        List<ExperimentOutputResource> outputResources = new ArrayList<>();
         List<ExperimentCatResource> resources = 
get(ResourceType.EXPERIMENT_OUTPUT);
         for (ExperimentCatResource resource : resources) {
             ExperimentOutputResource outputResource = 
(ExperimentOutputResource) resource;
@@ -564,7 +564,7 @@ public class ExperimentResource extends 
AbstractExpCatResource {
     }
 
     public List<ExperimentStatusResource> getExperimentStatuses() throws 
RegistryException{
-        List<ExperimentStatusResource> experimentStatusResources = new 
ArrayList();
+        List<ExperimentStatusResource> experimentStatusResources = new 
ArrayList<>();
         List<ExperimentCatResource> resources = 
get(ResourceType.EXPERIMENT_STATUS);
         for (ExperimentCatResource resource : resources) {
             ExperimentStatusResource statusResource = 
(ExperimentStatusResource) resource;
@@ -585,29 +585,13 @@ public class ExperimentResource extends 
AbstractExpCatResource {
         return experimentStatusResources;
     }
 
-    public ExperimentStatusResource getExperimentStatus() throws 
RegistryException{
+    public ExperimentStatusResource getLastExperimentStatus() throws 
RegistryException{
         List<ExperimentStatusResource> experimentStatusResources = 
getExperimentStatuses();
-        if(experimentStatusResources.size() == 0){
-            return null;
-        }else{
-            ExperimentStatusResource max = experimentStatusResources.get(0);
-            for(int i=1; i<experimentStatusResources.size();i++){
-                Timestamp timeOfStateChange = 
experimentStatusResources.get(i).getTimeOfStateChange();
-                if (timeOfStateChange != null) {
-                    if (timeOfStateChange.after(max.getTimeOfStateChange())
-                            || 
(timeOfStateChange.equals(max.getTimeOfStateChange()) && 
experimentStatusResources.get(i).getState().equals(ExperimentState.COMPLETED.toString()))
-                            || 
(timeOfStateChange.equals(max.getTimeOfStateChange()) && 
experimentStatusResources.get(i).getState().equals(ExperimentState.FAILED.toString()))
-                            || 
(timeOfStateChange.equals(max.getTimeOfStateChange()) && 
experimentStatusResources.get(i).getState().equals(ExperimentState.CANCELED.toString()))){
-                        max = experimentStatusResources.get(i);
-                    }
-                }
-            }
-            return max;
-        }
+        return experimentStatusResources.size() > 0 ? 
experimentStatusResources.get(0) : null;
     }
 
     public List<ExperimentErrorResource> getExperimentErrors() throws 
RegistryException{
-        List<ExperimentErrorResource> experimentErrorResources = new 
ArrayList();
+        List<ExperimentErrorResource> experimentErrorResources = new 
ArrayList<>();
         List<ExperimentCatResource> resources = 
get(ResourceType.EXPERIMENT_ERROR);
         for (ExperimentCatResource resource : resources) {
             ExperimentErrorResource errorResource = (ExperimentErrorResource) 
resource;
@@ -637,7 +621,7 @@ public class ExperimentResource extends 
AbstractExpCatResource {
     }
 
     public List<ProcessResource> getProcessList() throws RegistryException{
-        List<ProcessResource> processResources = new ArrayList();
+        List<ProcessResource> processResources = new ArrayList<>();
         List<ExperimentCatResource> resources = get(ResourceType.PROCESS);
         for (ExperimentCatResource resource : resources) {
             ProcessResource processResource = (ProcessResource) resource;
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
index 30d3aa8..29d4677 100644
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
@@ -1,4 +1,4 @@
-/**
+/*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -35,6 +35,7 @@ import javax.persistence.EntityManager;
 import javax.persistence.Query;
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -378,30 +379,30 @@ public class JobResource extends AbstractExpCatResource {
     }
 
     public List<JobStatusResource> getJobStatuses() throws RegistryException{
-        List<JobStatusResource> jobStatusResources = new ArrayList();
+        List<JobStatusResource> jobStatusResources = new ArrayList<>();
         List<ExperimentCatResource> resources = get(ResourceType.JOB_STATUS);
         for (ExperimentCatResource resource : resources) {
             JobStatusResource statusResource = (JobStatusResource) resource;
             jobStatusResources.add(statusResource);
         }
-        return jobStatusResources;
-    }
 
-    public JobStatusResource getJobStatus() throws RegistryException{
-        List<JobStatusResource> jobStatusResources = getJobStatuses();
-        if(jobStatusResources.size() == 0){
-            return null;
-        }else{
-            JobStatusResource max = jobStatusResources.get(0);
-            for(int i=1; i<jobStatusResources.size();i++) {
-                if 
(jobStatusResources.get(i).getTimeOfStateChange().after(max.getTimeOfStateChange())
-                   || 
(jobStatusResources.get(i).getTimeOfStateChange().equals(max.getTimeOfStateChange())
 && jobStatusResources.get(i).getState().equals(JobState.COMPLETE.toString()))
-                   || 
(jobStatusResources.get(i).getTimeOfStateChange().equals(max.getTimeOfStateChange())
 && jobStatusResources.get(i).getState().equals(JobState.FAILED.toString()))
-                   || 
(jobStatusResources.get(i).getTimeOfStateChange().equals(max.getTimeOfStateChange())
 && jobStatusResources.get(i).getState().equals(JobState.CANCELED.toString()))) 
{
-                    max = jobStatusResources.get(i);
-                }
+        
jobStatusResources.sort(Comparator.comparing(JobStatusResource::getTimeOfStateChange).reversed());
+        for (int i = 0; i < jobStatusResources.size(); i++) {
+
+            JobStatusResource thisState = jobStatusResources.get(i);
+            if  (thisState.getState().equals(JobState.COMPLETE.toString()) ||
+                    thisState.getState().equals(JobState.FAILED.toString()) ||
+                    thisState.getState().equals(JobState.CANCELED.toString())) 
{
+                jobStatusResources.remove(i);
+                jobStatusResources.add(0, thisState);
+                break;
             }
-            return max;
         }
+        return jobStatusResources;
+    }
+
+    public JobStatusResource getLastJobStatus() throws RegistryException{
+        List<JobStatusResource> jobStatuses = getJobStatuses();
+        return jobStatuses.size() > 0 ? jobStatuses.get(0): null;
     }
 }
\ No newline at end of file
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 2149046..ac55a69 100644
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -481,12 +481,10 @@ public class ThriftDataModelConversion {
         
model.setComputeResourceConsumed(jobResource.getComputeResourceConsumed());
         model.setJobName(jobResource.getJobName());
         model.setWorkingDir(jobResource.getWorkingDir());
-        JobStatus jobStatus = getJobStatus(jobResource.getJobStatus());
-        if (jobStatus != null){
-            List<JobStatus> jobStatuses = new ArrayList<>();
-            jobStatuses.add(jobStatus);
-            model.setJobStatuses(jobStatuses);
-        }
+        List<JobStatusResource> jobStatusesResources = 
jobResource.getJobStatuses();
+        model.setJobStatuses(jobStatusesResources.stream()
+                .map(ThriftDataModelConversion::getJobStatus)
+                .collect(Collectors.toList()));
         model.setExitCode(jobResource.getExitCode());
         model.setStdOut(jobResource.getStdOut());
         model.setStdErr(jobResource.getStdErr());

Reply via email to