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

228 lines
7.1 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 email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class MonitorTreeDataGenerator {
protected DateTimeFormat sdf = DateTimeFormat
.getFormat("yyyy-MM-dd HH:mm:ss");
protected MonitorFolderDto root;
protected boolean singleOperation;
public MonitorTreeDataGenerator() {
Log.debug("MonitorTreeDataGenerator");
}
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);
}
MonitorFolderDto foldJob = new MonitorFolderDto("job",
task.getId() + "-" + job.getId(),
job.getDescription(), job.getWorkerState()
.toString(), job.getHumaReadableStatus(),
job.getProgress(), validations);
jobs.add(foldJob);
}
MonitorFolderDto foldTask = new MonitorFolderDto("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);
}
MonitorFolderDto foldJob = new MonitorFolderDto("job",
task.getId() + "-" + job.getId(),
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);
}
MonitorFolderDto foldJob = new MonitorFolderDto(
"job", task.getId() + "-" + job.getId(),
job.getDescription(), job.getWorkerState()
.toString(),
job.getHumaReadableStatus(),
job.getProgress(), validations);
jobs.add(foldJob);
}
MonitorFolderDto foldTask = new MonitorFolderDto(
"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("---");
}
}
}