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

196 lines
6.5 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) {
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");
}
return root;
}
public MonitorFolderDto getRootNoTask(OperationMonitor operationMonitor) {
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");
}
return root;
}
public MonitorFolderDto getRoot(
ArrayList<OperationMonitor> operationMonitorList) {
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");
}
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("---");
}
}
}