tabular-data-monitor-widget/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorTreeDataGenerator.java

311 lines
9.3 KiB
Java

package org.gcube.portlets.user.td.monitorwidget.client.details.tree;
import java.util.ArrayList;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.task.JobS;
import org.gcube.portlets.user.td.gwtservice.shared.task.TaskS;
import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsJobS;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.i18n.client.DateTimeFormat;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class MonitorTreeDataGenerator {
private DateTimeFormat sdf = DateTimeFormat
.getFormat("yyyy-MM-dd HH:mm:ss");
private MonitorFolderDto root;
private TaskS taskSCache;
public MonitorTreeDataGenerator() {
Log.debug("MonitorTreeDataGenerator");
}
public boolean isCacheValid(OperationMonitor operationMonitor) {
if (operationMonitor == null || operationMonitor.getTask() == null) {
taskSCache = null;
return false;
}
TaskS taskS = operationMonitor.getTask();
if (taskSCache == null) {
taskSCache = taskS;
return false;
}
if (taskS.getId().compareTo(taskSCache.getId()) == 0) {
if (taskS.getProgress() == taskSCache.getProgress()
&& taskS.getState().compareTo(taskSCache.getState()) == 0) {
ArrayList<JobS> listJobS = taskS.getJobs();
ArrayList<JobS> listJobSCache = taskSCache.getJobs();
if (listJobS.size() == listJobSCache.size()) {
for (int i = 0; i < listJobS.size(); i++) {
JobS jobS = listJobS.get(i);
JobS jobSCache = listJobSCache.get(i);
if (jobS.getId() == jobSCache.getId()
&& jobS.getProgress() == jobSCache
.getProgress()
&& jobS.getWorkerState().compareTo(
jobSCache.getWorkerState()) == 0) {
ArrayList<ValidationsJobS> listValidationsJobS = jobS
.getValidationsJobS();
ArrayList<ValidationsJobS> listValidationsJobSCache = jobSCache
.getValidationsJobS();
if (listValidationsJobS.size() == listValidationsJobSCache
.size()) {
for (int j = 0; j < listValidationsJobS.size(); j++) {
ValidationsJobS validationsJobS = listValidationsJobS
.get(j);
ValidationsJobS validationsJobSCache = listValidationsJobSCache
.get(j);
if (validationsJobS.getId() == validationsJobSCache
.getId()
&& validationsJobS.getProgress() == validationsJobSCache
.getProgress()
&& validationsJobS
.getWorkerState()
.compareTo(
validationsJobSCache
.getWorkerState()) == 0) {
} else {
taskSCache = taskS;
return false;
}
}
} else {
taskSCache = taskS;
return false;
}
} else {
taskSCache = taskS;
return false;
}
}
} else {
taskSCache = taskS;
return false;
}
} else {
taskSCache = taskS;
return false;
}
} else {
taskSCache = taskS;
return false;
}
return true;
}
public MonitorFolderDto getRoot(OperationMonitor operationMonitor) {
root = null;
try {
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
if (operationMonitor != null && operationMonitor.getTask() != null) {
TaskS task = operationMonitor.getTask();
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
for (JobS job : task.getJobs()) {
ArrayList<MonitorBaseDto> validations = new ArrayList<MonitorBaseDto>();
for (ValidationsJobS v : job.getValidationsJobS()) {
MonitorValidationJobSDto validationDto = new MonitorValidationJobSDto(
task.getId() + "-" + job.getId() + "-"
+ v.getId(), v.getWorkerState(),
v.getProgress(), v.getDescription(),
v.getErrorMessage(),
v.getHumanReadableStatus(), job.getInvocation());
validations.add(validationDto);
}
MonitorJobSDto foldJob = new MonitorJobSDto("job",
task.getId() + "-" + job.getId(),
job.getJobClassifier(), job.getDescription(), job
.getWorkerState().toString(),
job.getHumaReadableStatus(), job.getProgress(),
validations);
jobs.add(foldJob);
}
MonitorTaskSDto foldTask = new MonitorTaskSDto("task",
task.getId(), operationMonitor.getOperationId()
.toString(), task.getState().toString(), "",
task.getProgress(), jobs);
if (task.getStartTime() != null) {
foldTask.setStartTime(sdf.format(task.getStartTime()));
}
if (task.getEndTime() != null) {
foldTask.setEndTime(sdf.format(task.getEndTime()));
}
childrens.add(foldTask);
root = new MonitorFolderDto("root", "-1", "root", "root", "",
0, childrens);
Log.debug("Generated root");
// printRecorsive(root);
} else {
root = new MonitorFolderDto("root", "-1", "root", "root", "",
0, childrens);
Log.debug("Generated root without childrens");
}
} catch (Throwable e) {
Log.error(e.getLocalizedMessage());
e.printStackTrace();
}
return root;
}
public MonitorFolderDto getRootNoTask(OperationMonitor operationMonitor) {
root = null;
try {
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
if (operationMonitor != null && operationMonitor.getTask() != null) {
TaskS task = operationMonitor.getTask();
for (JobS job : task.getJobs()) {
ArrayList<MonitorBaseDto> validations = new ArrayList<MonitorBaseDto>();
for (ValidationsJobS v : job.getValidationsJobS()) {
MonitorValidationJobSDto validationDto = new MonitorValidationJobSDto(
task.getId() + "-" + job.getId() + "-"
+ v.getId(), v.getWorkerState(),
v.getProgress(), v.getDescription(),
v.getErrorMessage(),
v.getHumanReadableStatus(), job.getInvocation());
validations.add(validationDto);
}
MonitorJobSDto foldJob = new MonitorJobSDto("job",
task.getId() + "-" + job.getId(),
job.getJobClassifier(), job.getDescription(), job
.getWorkerState().toString(),
job.getHumaReadableStatus(), job.getProgress(),
validations);
jobs.add(foldJob);
}
root = new MonitorFolderDto("root", "-1", "root", "root", "",
0, jobs);
Log.debug("Generated root");
// printRecorsive(root);
} else {
root = new MonitorFolderDto("root", "-1", "root", "root", "",
0, jobs);
Log.debug("Generated root without childrens");
}
} catch (Throwable e) {
Log.error(e.getLocalizedMessage());
e.printStackTrace();
}
return root;
}
public MonitorFolderDto getRoot(
ArrayList<OperationMonitor> operationMonitorList) {
root = null;
try {
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
if (operationMonitorList != null && operationMonitorList.size() > 0) {
Log.debug("getRoot: " + operationMonitorList.size());
for (OperationMonitor operationMonitor : operationMonitorList) {
if (operationMonitor != null
&& operationMonitor.getTask() != null) {
Log.debug("getRoot: [TaskId="
+ operationMonitor.getTaskId() + "]");
TaskS task = operationMonitor.getTask();
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
for (JobS job : task.getJobs()) {
ArrayList<MonitorBaseDto> validations = new ArrayList<MonitorBaseDto>();
for (ValidationsJobS v : job.getValidationsJobS()) {
MonitorValidationJobSDto validationDto = new MonitorValidationJobSDto(
task.getId() + "-" + job.getId() + "-"
+ v.getId(),
v.getWorkerState(), v.getProgress(),
v.getDescription(),
v.getErrorMessage(),
v.getHumanReadableStatus(),
job.getInvocation());
validations.add(validationDto);
}
MonitorJobSDto foldJob = new MonitorJobSDto("job",
task.getId() + "-" + job.getId(),
job.getJobClassifier(),
job.getDescription(), job.getWorkerState()
.toString(),
job.getHumaReadableStatus(),
job.getProgress(), validations);
jobs.add(foldJob);
}
MonitorTaskSDto foldTask = new MonitorTaskSDto("task",
task.getId(), operationMonitor.getOperationId()
.toString(),
task.getState().toString(), "",
task.getProgress(), jobs);
if (task.getStartTime() != null) {
foldTask.setStartTime(sdf.format(task
.getStartTime()));
}
if (task.getEndTime() != null) {
foldTask.setEndTime(sdf.format(task.getEndTime()));
}
childrens.add(foldTask);
} else {
Log.debug("getRoot: operation null");
}
}
Log.debug("childrens size:" + childrens.size());
root = new MonitorFolderDto("root", "-1", "root", "root", "",
0, childrens);
Log.debug("Generated root");
} else {
root = new MonitorFolderDto("root", "-1", "root", "root", "",
0, childrens);
Log.debug("Generated root without childrens");
}
} catch (Throwable e) {
Log.error(e.getLocalizedMessage());
e.printStackTrace();
}
return root;
}
protected void printRecorsive(MonitorFolderDto root) {
for (MonitorBaseDto base : root.getChildrens()) {
Log.debug("+++");
Log.debug("Children:[id=" + base.getId() + ", toString="
+ base.toString() + "]");
if (base instanceof MonitorFolderDto) {
printRecorsive((MonitorFolderDto) base);
}
Log.debug("---");
}
}
}