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());