Updated Background Monitor

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-monitor-widget@99734 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2014-09-10 16:34:48 +00:00 committed by Giancarlo Panichi
parent 56b5816023
commit 4e4accb98e
10 changed files with 808 additions and 206 deletions

View File

@ -289,4 +289,5 @@
</dependency> </dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
<packaging>war</packaging>
</project> </project>

View File

@ -53,11 +53,19 @@ public class MonitorUpdater extends Timer implements MonitorDialogEventUIListene
+ result); + result);
if(result.isInBackground()){ if(result.isInBackground()){
Log.debug("Operation is in background");
cancel(); cancel();
fireMonitorPutInBackground(); fireMonitorPutInBackground();
return; return;
} }
if(result.isAbort()){
Log.debug("Operation is aborted");
cancel();
fireMonitorAborted();
}
switch (result.getTask().getState()) { switch (result.getTask().getState()) {
case INITIALIZING: case INITIALIZING:
Log.info("Initializing..."); Log.info("Initializing...");

View File

@ -10,6 +10,8 @@ import org.gcube.portlets.user.td.gwtservice.shared.task.State;
import org.gcube.portlets.user.td.gwtservice.shared.task.TaskS; import org.gcube.portlets.user.td.gwtservice.shared.task.TaskS;
import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsJobS; import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsJobS;
import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerState; import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerState;
import org.gcube.portlets.user.td.monitorwidget.client.background.MonitorBackgroundDialog;
import org.gcube.portlets.user.td.monitorwidget.client.background.MonitorBackgroundInfoDialog;
import com.allen_sauer.gwt.log.client.Log; import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.EntryPoint;
@ -26,37 +28,95 @@ import com.google.web.bindery.event.shared.SimpleEventBus;
public class MonitorWidgetEntry implements EntryPoint { public class MonitorWidgetEntry implements EntryPoint {
private MonitorDialog monitorWidget; private MonitorDialog monitorWidget;
private MonitorBackgroundDialog monitorBackgroundWidget;
private MonitorBackgroundInfoDialog monitorBackgroundInfoWidget;
private SimpleEventBus eventBus;
protected enum TestShow {
MONITORWIDGET, MONITORBACKGROUNDWIDGET, MONITORBACKGROUNDINFOWIDGET
};
public void onModuleLoad() { public void onModuleLoad() {
Log.debug("Test MonitorWidget"); TestShow testShow = TestShow.MONITORBACKGROUNDWIDGET;
SimpleEventBus eventBus = new SimpleEventBus(); Timer elapsedTimer;
monitorWidget = new MonitorDialog("1", eventBus);
monitorWidget.show();
Timer elapsedTimer = new Timer () {
public void run() {
showElapsed();
}
};
Log.debug("Start Time:"+System.currentTimeMillis());
// Schedule the timer for every 1/2 second (500 milliseconds) switch (testShow) {
elapsedTimer.scheduleRepeating(3000); case MONITORWIDGET:
Log.debug("Test MonitorWidget");
eventBus = new SimpleEventBus();
monitorWidget = new MonitorDialog("1", eventBus);
monitorWidget.show();
elapsedTimer = new Timer() {
public void run() {
showElapsed();
}
};
Log.debug("Start Time:" + System.currentTimeMillis());
// Schedule the timer for every 1/2 second (500 milliseconds)
elapsedTimer.scheduleRepeating(3000);
break;
case MONITORBACKGROUNDWIDGET:
Log.debug("Test MonitorBackgroundWidget");
eventBus = new SimpleEventBus();
monitorBackgroundWidget = new MonitorBackgroundDialog(eventBus);
monitorBackgroundWidget.show();
elapsedTimer = new Timer() {
public void run() {
showBackgroundElapsed();
}
};
Log.debug("Start Time:" + System.currentTimeMillis());
// Schedule the timer for every 1/2 second (500 milliseconds)
elapsedTimer.scheduleRepeating(3000);
break;
case MONITORBACKGROUNDINFOWIDGET:
eventBus = new SimpleEventBus();
showBackgroundInfoWidget();
break;
}
} }
private void showElapsed(){ private void showElapsed() {
OperationMonitor operationMonitor = new OperationMonitor("1", OperationMonitor operationMonitor = new OperationMonitor("1",
UIOperationsId.EditRow); UIOperationsId.EditRow);
operationMonitor.setTask(createTaskForTest()); operationMonitor.setTask(createTaskForTest("1"));
monitorWidget.updateOperationMonitor(operationMonitor); monitorWidget.updateOperationMonitor(operationMonitor);
} }
private void showBackgroundElapsed() {
private TaskS createTaskForTest() { ArrayList<OperationMonitor> backgroundOperationMonitorList = new ArrayList<OperationMonitor>();
for (int i = 0; i < 20; i++) {
OperationMonitor operationMonitor = new OperationMonitor(String.valueOf(i),
UIOperationsId.EditRow);
operationMonitor.setTask(createTaskForTest(String.valueOf(i)));
backgroundOperationMonitorList.add(operationMonitor);
}
monitorBackgroundWidget
.updateBackgroundOperationMonitor(backgroundOperationMonitorList);
}
private void showBackgroundInfoWidget() {
OperationMonitor operationMonitor = new OperationMonitor("1",
UIOperationsId.EditRow);
operationMonitor.setTask(createTaskForTest("1"));
monitorBackgroundInfoWidget = new MonitorBackgroundInfoDialog(
operationMonitor, eventBus);
monitorBackgroundInfoWidget.show();
}
private TaskS createTaskForTest(String taskId) {
ArrayList<ValidationsJobS> validationsJobs = new ArrayList<ValidationsJobS>(); ArrayList<ValidationsJobS> validationsJobs = new ArrayList<ValidationsJobS>();
ValidationsJobS validationJobS = new ValidationsJobS("1", ValidationsJobS validationJobS = new ValidationsJobS("1",
WorkerState.IN_PROGRESS, genProgress(), "Row Validate", null, WorkerState.IN_PROGRESS, genProgress(), "Row Validate", null,
@ -71,28 +131,42 @@ public class MonitorWidgetEntry implements EntryPoint {
JobS job2 = new JobS("2", genProgress(), "Add Row Job for Human", JobS job2 = new JobS("2", genProgress(), "Add Row Job for Human",
"Add Row Job", WorkerState.IN_PROGRESS, null, validationsJobs); "Add Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
jobs.add(job2); jobs.add(job2);
JobS job3 = new JobS("3", genProgress(), "Delete Job for Human", JobS job3 = new JobS("3", genProgress(), "Delete Job for Human",
"Delete Row Job", WorkerState.IN_PROGRESS, null, validationsJobs); "Delete Row Job", WorkerState.IN_PROGRESS, null,
validationsJobs);
jobs.add(job3); jobs.add(job3);
TaskS task = new TaskS("1", genProgress(), State.IN_PROGRESS, null, "default", JobS job4 = new JobS("4", genProgress(), "Edit Row Job for Human",
new Date(), null, jobs); "Edit Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
jobs.add(job4);
JobS job5 = new JobS("5", genProgress(), "Add Row Job for Human",
"Add Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
jobs.add(job5);
JobS job6 = new JobS("6", genProgress(), "Delete Job for Human",
"Delete Row Job", WorkerState.IN_PROGRESS, null,
validationsJobs);
jobs.add(job6);
TaskS task = new TaskS(taskId, genProgress(), State.IN_PROGRESS, null,
"default", new Date(), null, jobs);
return task; return task;
} }
private float genProgress(){ private float genProgress() {
float fperc; float fperc;
int perc=Random.nextInt(100); int perc = Random.nextInt(100);
if(perc==0){ if (perc == 0) {
fperc=0f; fperc = 0f;
} else { } else {
fperc= new Float(perc)/100; fperc = new Float(perc) / 100;
} }
Log.debug("ProgressSet: "+fperc); // Log.debug("ProgressSet: " + fperc);
return fperc; return fperc;
} }
} }

View File

@ -1,7 +1,14 @@
package org.gcube.portlets.user.td.monitorwidget.client.background; package org.gcube.portlets.user.td.monitorwidget.client.background;
import java.util.ArrayList;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import com.allen_sauer.gwt.log.client.Log;
import com.google.web.bindery.event.shared.EventBus; import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.widget.core.client.Window; import com.sencha.gxt.widget.core.client.Window;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
/** /**
* Background Operations Monitor * Background Operations Monitor
@ -11,23 +18,22 @@ import com.sencha.gxt.widget.core.client.Window;
* *
*/ */
public class MonitorBackgroundDialog extends Window { public class MonitorBackgroundDialog extends Window {
private static final String WIDTH = "400px"; protected static final String WIDTH = "400px";
private static final String HEIGHT = "520px"; protected static final String HEIGHT = "520px";
protected EventBus eventBus; protected EventBus eventBus;
protected MonitorBackgroundPanel monitorBackgroundPanel; protected MonitorBackgroundPanel monitorBackgroundPanel;
public MonitorBackgroundDialog(EventBus eventBus) { public MonitorBackgroundDialog(EventBus eventBus) {
super();
Log.debug("MonitorBackgroundDialog");
this.eventBus = eventBus; this.eventBus = eventBus;
initWindow(); initWindow();
create(); create();
} }
protected void initWindow(){ protected void initWindow() {
setWidth(WIDTH); setWidth(WIDTH);
setHeight(HEIGHT); setHeight(HEIGHT);
setBodyBorder(false); setBodyBorder(false);
@ -36,42 +42,38 @@ public class MonitorBackgroundDialog extends Window {
setClosable(true); setClosable(true);
setHeadingText("Background Operations Monitor"); setHeadingText("Background Operations Monitor");
} }
protected void create(){ protected void create() {
monitorBackgroundPanel = new MonitorBackgroundPanel(eventBus); monitorBackgroundPanel = new MonitorBackgroundPanel(this, eventBus);
add(monitorBackgroundPanel); add(monitorBackgroundPanel);
show();
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
protected void initTools() { protected void initTools() {
/*if (backgroundBtnEnabled) {
backgroundBtn = new ToolButton(ToolButton.CLOSE);
backgroundBtn.setToolTip("Put in the background");
backgroundBtn.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
hide();
}
});
header.addTool(backgroundBtn);
}*/
super.initTools();
closeBtn.setVisible(false);
/* /*
* if (backgroundBtnEnabled) { backgroundBtn = new
* ToolButton(ToolButton.CLOSE);
* backgroundBtn.setToolTip("Put in the background");
* backgroundBtn.addSelectHandler(new SelectHandler() {
*
* @Override public void onSelect(SelectEvent event) { hide(); } });
*
* header.addTool(backgroundBtn); }
*/
super.initTools();
closeBtn.setVisible(true);
closeBtn.addSelectHandler(new SelectHandler() { closeBtn.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) { public void onSelect(SelectEvent event) {
close(); close();
} }
});*/ });
} }
@ -79,6 +81,12 @@ public class MonitorBackgroundDialog extends Window {
hide(); hide();
} }
public void updateBackgroundOperationMonitor(ArrayList<OperationMonitor> operationMonitorList) {
if (monitorBackgroundPanel != null) {
monitorBackgroundPanel.operationMonitorListUpdated(operationMonitorList);
}
forceLayout();
}
} }

View File

@ -0,0 +1,79 @@
package org.gcube.portlets.user.td.monitorwidget.client.background;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import com.allen_sauer.gwt.log.client.Log;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.widget.core.client.Window;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
/**
* Background Operations Monitor
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class MonitorBackgroundInfoDialog extends Window {
private static final String WIDTH = "640px";
private static final String HEIGHT = "378px";
protected EventBus eventBus;
protected MonitorBackgroundInfoPanel monitorBackgroundInfoPanel;
protected OperationMonitor operationMonitor;
public MonitorBackgroundInfoDialog(OperationMonitor operationMonitor, EventBus eventBus) {
super();
Log.debug("MonitorBackgroundInfoDialog");
this.eventBus = eventBus;
this.operationMonitor =operationMonitor;
initWindow();
create();
}
protected void initWindow() {
setWidth(WIDTH);
setHeight(HEIGHT);
setBodyBorder(false);
setResizable(false);
setModal(false);
setClosable(true);
setHeadingText("Info Operation");
}
protected void create() {
monitorBackgroundInfoPanel = new MonitorBackgroundInfoPanel(this, operationMonitor,eventBus);
add(monitorBackgroundInfoPanel);
}
/**
* {@inheritDoc}
*/
@Override
protected void initTools() {
super.initTools();
closeBtn.setVisible(true);
closeBtn.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) {
close();
}
});
}
protected void close() {
hide();
}
}

View File

@ -0,0 +1,399 @@
package org.gcube.portlets.user.td.monitorwidget.client.background;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsTasksMetadata;
import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerState;
import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerStateParser;
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorBaseDto;
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorFolderDto;
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorTreeDataGenerator;
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorValidationJobSDto;
import org.gcube.portlets.user.td.monitorwidget.client.resources.ResourceBundle;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.cell.core.client.ProgressBarCell;
import com.sencha.gxt.core.client.ToStringValueProvider;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.data.shared.IconProvider;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.TreeStore;
import com.sencha.gxt.widget.core.client.FramedPanel;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.event.CollapseItemEvent;
import com.sencha.gxt.widget.core.client.event.CollapseItemEvent.CollapseItemHandler;
import com.sencha.gxt.widget.core.client.event.ExpandItemEvent;
import com.sencha.gxt.widget.core.client.event.ExpandItemEvent.ExpandItemHandler;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
import com.sencha.gxt.widget.core.client.grid.ColumnModel;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
import com.sencha.gxt.widget.core.client.treegrid.TreeGrid;
/**
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class MonitorBackgroundInfoPanel extends FramedPanel {
protected static final String WIDTH = "618px";
protected static final String HEIGHT = "370px";
protected static final String HEIGHTGRID ="300px";
protected static final int CC1WIDTH = 168;
protected static final int CC2WIDTH = 100;
protected static final int CC3WIDTH = 140;
protected static final int CC4WIDTH = 100;
protected MonitorBackgroundInfoDialog parent;
protected MonitorBackgroundInfoPanel thisPanel;
protected TRId trId;
protected VerticalLayoutContainer con;
protected ValidationsTasksMetadata validationsTasksMetadata;
protected MonitorTreeDataGenerator gen;
protected TreeStore<MonitorBaseDto> store;
protected TreeGrid<MonitorBaseDto> tree;
protected OperationMonitor operationMonitor;
protected EventBus eventBus;
protected MonitorBackgroundUpdater monitorBackgroundUpdater;
class KeyProvider implements ModelKeyProvider<MonitorBaseDto> {
@Override
public String getKey(MonitorBaseDto item) {
return (item instanceof MonitorFolderDto ? "f-" : "v-")
+ item.getId();
}
}
public MonitorBackgroundInfoPanel(MonitorBackgroundInfoDialog parent,
OperationMonitor operationMonitor, EventBus eventBus) {
super();
this.parent = parent;
this.operationMonitor=operationMonitor;
this.eventBus = eventBus;
forceLayoutOnResize = true;
init();
create();
}
protected void init() {
setWidth(WIDTH);
setHeight(HEIGHT);
setHeaderVisible(false);
setBodyBorder(false);
setResize(true);
}
protected void create() {
con = new VerticalLayoutContainer();
// con.setScrollMode(ScrollMode.AUTO);
store = new TreeStore<MonitorBaseDto>(new KeyProvider());
addChildrensToStore();
ColumnConfig<MonitorBaseDto, String> cc1 = new ColumnConfig<MonitorBaseDto, String>(
new ToStringValueProvider<MonitorBaseDto>("task"), CC1WIDTH,
"Task");
cc1.setHeader("Task");
cc1.setCell(new AbstractCell<String>() {
@Override
public void render(Context context, String value, SafeHtmlBuilder sb) {
sb.appendHtmlConstant("<span title='"
+ SafeHtmlUtils.htmlEscape(value) + "'>" + value
+ "</span>");
}
});
ColumnConfig<MonitorBaseDto, String> cc2 = new ColumnConfig<MonitorBaseDto, String>(
new ValueProvider<MonitorBaseDto, String>() {
@Override
public String getValue(MonitorBaseDto object) {
String state = null;
if (object instanceof MonitorValidationJobSDto) {
state = ((MonitorValidationJobSDto) object)
.getWorkerState().toString();
}
if (object instanceof MonitorFolderDto) {
state = ((MonitorFolderDto) object).getState();
}
return state;
}
@Override
public void setValue(MonitorBaseDto object, String value) {
if (object instanceof MonitorValidationJobSDto) {
WorkerState workerState = WorkerStateParser.parse(value);
((MonitorValidationJobSDto) object)
.setWorkerState(workerState);
}
if (object instanceof MonitorFolderDto) {
((MonitorFolderDto) object).setState(value);
}
}
@Override
public String getPath() {
return "status";
}
}, CC2WIDTH, "Status");
cc2.setHeader("Status");
ColumnConfig<MonitorBaseDto, String> cc3 = new ColumnConfig<MonitorBaseDto, String>(
new ValueProvider<MonitorBaseDto, String>() {
@Override
public String getValue(MonitorBaseDto object) {
String state = null;
if (object instanceof MonitorValidationJobSDto) {
state = ((MonitorValidationJobSDto) object).getHumanReadableStatus();
}
if (object instanceof MonitorFolderDto) {
state = ((MonitorFolderDto) object)
.getHumanReadableStatus();
}
return state;
}
@Override
public void setValue(MonitorBaseDto object, String value) {
if (object instanceof MonitorValidationJobSDto) {
((MonitorValidationJobSDto) object)
.setHumanReadableStatus(value);
}
if (object instanceof MonitorFolderDto) {
((MonitorFolderDto) object)
.setHumanReadableStatus(value);
}
}
@Override
public String getPath() {
return "humanreadablestatus";
}
}, CC3WIDTH, "Human Readble");
cc3.setHeader("Human Readble");
ColumnConfig<MonitorBaseDto, Double> cc4 = new ColumnConfig<MonitorBaseDto, Double>(
new ValueProvider<MonitorBaseDto, Double>() {
@Override
public Double getValue(MonitorBaseDto object) {
Double d = null;
if (object instanceof MonitorValidationJobSDto) {
Float f = ((MonitorValidationJobSDto) object).getProgress();
d = new Double(f);
}
if (object instanceof MonitorFolderDto) {
Float f = ((MonitorFolderDto) object).getProgress();
d = new Double(f);
}
return d;
}
@Override
public void setValue(MonitorBaseDto object, Double value) {
if (object instanceof MonitorValidationJobSDto) {
((MonitorValidationJobSDto) object)
.setProgress(value.floatValue());
}
if (object instanceof MonitorFolderDto) {
((MonitorFolderDto) object).setProgress(value
.floatValue());
}
}
@Override
public String getPath() {
return "progress";
}
}, CC4WIDTH, "Progress");
cc4.setHeader("Progress");
ProgressBarCell progress = new ProgressBarCell() {
@Override
public boolean handlesSelection() {
return true;
}
};
progress.setProgressText("{0}% Complete");
progress.setWidth(110);
cc4.setCell(progress);
List<ColumnConfig<MonitorBaseDto, ?>> l = new ArrayList<ColumnConfig<MonitorBaseDto, ?>>();
l.add(cc1);
l.add(cc2);
l.add(cc3);
l.add(cc4);
ColumnModel<MonitorBaseDto> cm = new ColumnModel<MonitorBaseDto>(l);
tree = new TreeGrid<MonitorBaseDto>(store, cm, cc1);
tree.getView().setAutoFill(true);
tree.setBorders(false);
tree.setLoadMask(true);
tree.setColumnResize(true);
tree.getView().setAutoExpandColumn(cc1);
tree.setHeight(HEIGHTGRID);
tree.setAutoExpand(true);
IconProvider<MonitorBaseDto> iconProvider = new IconProvider<MonitorBaseDto>() {
@Override
public ImageResource getIcon(MonitorBaseDto model) {
ImageResource img = null;
if (model instanceof MonitorFolderDto) {
String type = ((MonitorFolderDto) model).getType();
if (type.compareTo("job") == 0) {
img = ResourceBundle.INSTANCE.cog();
} else {
if (type.compareTo("task") == 0) {
img = ResourceBundle.INSTANCE.basket();
} else {
}
}
} else {
img = ResourceBundle.INSTANCE.tableValidation();
}
return img;
}
};
tree.setIconProvider(iconProvider);
tree.addExpandHandler(new ExpandItemHandler<MonitorBaseDto>() {
@Override
public void onExpand(ExpandItemEvent<MonitorBaseDto> event) {
forceLayout();
}
});
tree.addCollapseHandler(new CollapseItemHandler<MonitorBaseDto>() {
@Override
public void onCollapse(CollapseItemEvent<MonitorBaseDto> event) {
forceLayout();
}
});
ToolBar toolBar = new ToolBar();
TextButton btnExpandAll = new TextButton();
btnExpandAll.setIcon(ResourceBundle.INSTANCE.magnifierZoomIn());
btnExpandAll.setToolTip("Expand All");
btnExpandAll.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
tree.expandAll();
forceLayout();
}
});
toolBar.add(btnExpandAll);
TextButton btnCollapseAll = new TextButton();
btnCollapseAll.setIcon(ResourceBundle.INSTANCE.magnifierZoomOut());
btnCollapseAll.setToolTip("Collapse All");
btnCollapseAll.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
tree.collapseAll();
forceLayout();
}
});
toolBar.add(btnCollapseAll);
con.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
con.add(tree, new VerticalLayoutData(1, -1, new Margins(0)));
add(con, new MarginData(0));
forceLayout();
tree.expandAll();
}
protected void close() {
if (parent != null) {
parent.close();
}
}
private void addChildrensToStore() {
gen = new MonitorTreeDataGenerator();
try {
MonitorFolderDto root = gen.getRoot(operationMonitor);
Log.debug("root childrens " + root.getChildrens().size());
for (MonitorBaseDto base : root.getChildrens()) {
Log.debug("Check children: " + base);
store.add(base);
if (base instanceof MonitorFolderDto) {
processFolder((MonitorFolderDto) base);
}
}
} catch (Throwable e) {
Log.error("Error adding childrens to store :"
+ e.getLocalizedMessage());
e.printStackTrace();
}
}
private void processFolder(MonitorFolderDto folder) {
for (MonitorBaseDto child : folder.getChildrens()) {
store.add(folder, child);
if (child instanceof MonitorFolderDto) {
processFolder((MonitorFolderDto) child);
}
}
}
}

View File

@ -3,6 +3,7 @@ package org.gcube.portlets.user.td.monitorwidget.client.background;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor; import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsTasksMetadata; import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsTasksMetadata;
import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerState; import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerState;
@ -12,10 +13,16 @@ import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorFolde
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorTreeDataGenerator; import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorTreeDataGenerator;
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorValidationJobSDto; import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorValidationJobSDto;
import org.gcube.portlets.user.td.monitorwidget.client.resources.ResourceBundle; import org.gcube.portlets.user.td.monitorwidget.client.resources.ResourceBundle;
import org.gcube.portlets.user.td.monitorwidget.client.utils.UtilsGXT3;
import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.Cell.Context; import com.google.gwt.cell.client.Cell.Context;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.resources.client.ImageResource; import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.safehtml.shared.SafeHtmlUtils;
@ -23,12 +30,12 @@ import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.cell.core.client.ProgressBarCell; import com.sencha.gxt.cell.core.client.ProgressBarCell;
import com.sencha.gxt.core.client.ToStringValueProvider; import com.sencha.gxt.core.client.ToStringValueProvider;
import com.sencha.gxt.core.client.ValueProvider; import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
import com.sencha.gxt.core.client.util.Margins; import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.data.shared.IconProvider; import com.sencha.gxt.data.shared.IconProvider;
import com.sencha.gxt.data.shared.ModelKeyProvider; import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.TreeStore; import com.sencha.gxt.data.shared.TreeStore;
import com.sencha.gxt.widget.core.client.FramedPanel; import com.sencha.gxt.widget.core.client.FramedPanel;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.MarginData; import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
@ -36,13 +43,11 @@ import com.sencha.gxt.widget.core.client.event.CollapseItemEvent;
import com.sencha.gxt.widget.core.client.event.CollapseItemEvent.CollapseItemHandler; import com.sencha.gxt.widget.core.client.event.CollapseItemEvent.CollapseItemHandler;
import com.sencha.gxt.widget.core.client.event.ExpandItemEvent; import com.sencha.gxt.widget.core.client.event.ExpandItemEvent;
import com.sencha.gxt.widget.core.client.event.ExpandItemEvent.ExpandItemHandler; import com.sencha.gxt.widget.core.client.event.ExpandItemEvent.ExpandItemHandler;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
import com.sencha.gxt.widget.core.client.grid.ColumnModel; import com.sencha.gxt.widget.core.client.grid.ColumnModel;
import com.sencha.gxt.widget.core.client.menu.Item;
import com.sencha.gxt.widget.core.client.menu.Menu; import com.sencha.gxt.widget.core.client.menu.Menu;
import com.sencha.gxt.widget.core.client.menu.MenuItem; import com.sencha.gxt.widget.core.client.menu.MenuItem;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
import com.sencha.gxt.widget.core.client.treegrid.TreeGrid; import com.sencha.gxt.widget.core.client.treegrid.TreeGrid;
/** /**
@ -51,22 +56,23 @@ import com.sencha.gxt.widget.core.client.treegrid.TreeGrid;
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a> * href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
* *
*/ */
public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackgroundUpdaterListener { public class MonitorBackgroundPanel extends FramedPanel implements
protected static final int STATUS_POLLING_DELAY = 2000; MonitorBackgroundUpdaterListener {
protected static final int STATUS_POLLING_DELAY = 4000;
protected static final String WIDTH = "298px"; protected static final String WIDTH = "298px";
protected static final String HEIGHT = "520px"; protected static final String HEIGHT = "520px";
protected static final int CC1WIDTH = 168; protected static final int CC1WIDTH = 110;
protected static final int CC2WIDTH = 100; protected static final int CC2WIDTH = 70;
protected static final int CC3WIDTH = 140; protected static final int CC3WIDTH = 100;
protected static final int CC4WIDTH = 100; protected MonitorBackgroundDialog parent;
protected ArrayList<MonitorBackgroundEventUIListener> monitorBackgroundEventUIListeners = new ArrayList<MonitorBackgroundEventUIListener>(); protected ArrayList<MonitorBackgroundEventUIListener> monitorBackgroundEventUIListeners = new ArrayList<MonitorBackgroundEventUIListener>();
protected MonitorBackgroundPanel thisPanel; protected MonitorBackgroundPanel thisPanel;
protected Menu contextMenu; protected Menu contextMenu;
protected MenuItem resumeItem; protected MenuItem infoItem;
protected MenuItem resolveItem; protected MenuItem abortItem;
protected TRId trId; protected TRId trId;
protected VerticalLayoutContainer con; protected VerticalLayoutContainer con;
@ -79,7 +85,7 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
protected EventBus eventBus; protected EventBus eventBus;
protected MonitorBackgroundUpdater monitorBackgroundUpdater; protected MonitorBackgroundUpdater monitorBackgroundUpdater;
class KeyProvider implements ModelKeyProvider<MonitorBaseDto> { class KeyProvider implements ModelKeyProvider<MonitorBaseDto> {
@Override @Override
public String getKey(MonitorBaseDto item) { public String getKey(MonitorBaseDto item) {
@ -87,8 +93,7 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
+ item.getId(); + item.getId();
} }
} }
public MonitorBackgroundPanel(EventBus eventBus) { public MonitorBackgroundPanel(EventBus eventBus) {
super(); super();
this.eventBus = eventBus; this.eventBus = eventBus;
@ -96,7 +101,17 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
init(); init();
create(); create();
} }
public MonitorBackgroundPanel(MonitorBackgroundDialog parent,
EventBus eventBus) {
super();
this.eventBus = eventBus;
this.parent = parent;
forceLayoutOnResize = true;
init();
create();
}
protected void init() { protected void init() {
setWidth(WIDTH); setWidth(WIDTH);
setHeight(HEIGHT); setHeight(HEIGHT);
@ -105,17 +120,18 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
setResize(true); setResize(true);
} }
protected void create() { protected void create() {
con = new VerticalLayoutContainer(); con = new VerticalLayoutContainer();
// con.setScrollMode(ScrollMode.AUTO); con.setScrollMode(ScrollMode.AUTO);
store = new TreeStore<MonitorBaseDto>(new KeyProvider()); store = new TreeStore<MonitorBaseDto>(new KeyProvider());
addChildrensToStore(); addChildrensToStore();
ColumnConfig<MonitorBaseDto, String> cc1 = new ColumnConfig<MonitorBaseDto, String>( ColumnConfig<MonitorBaseDto, String> cc1 = new ColumnConfig<MonitorBaseDto, String>(
new ToStringValueProvider<MonitorBaseDto>("task"), CC1WIDTH, "Task"); new ToStringValueProvider<MonitorBaseDto>("task"), CC1WIDTH,
"Task");
cc1.setHeader("Task"); cc1.setHeader("Task");
cc1.setCell(new AbstractCell<String>() { cc1.setCell(new AbstractCell<String>() {
@ -165,41 +181,7 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
}, CC2WIDTH, "Status"); }, CC2WIDTH, "Status");
cc2.setHeader("Status"); cc2.setHeader("Status");
ColumnConfig<MonitorBaseDto, String> cc3 = new ColumnConfig<MonitorBaseDto, String>( ColumnConfig<MonitorBaseDto, Double> cc3 = new ColumnConfig<MonitorBaseDto, Double>(
new ValueProvider<MonitorBaseDto, String>() {
@Override
public String getValue(MonitorBaseDto object) {
String state = null;
if (object instanceof MonitorValidationJobSDto) {
state = ((MonitorValidationJobSDto) object).getHumanReadableStatus();
}
if (object instanceof MonitorFolderDto) {
state = ((MonitorFolderDto) object).getHumanReadableStatus();
}
return state;
}
@Override
public void setValue(MonitorBaseDto object, String value) {
if (object instanceof MonitorValidationJobSDto) {
((MonitorValidationJobSDto) object)
.setHumanReadableStatus(value);
}
if (object instanceof MonitorFolderDto) {
((MonitorFolderDto) object).setHumanReadableStatus(value);
}
}
@Override
public String getPath() {
return "humanreadablestatus";
}
}, CC3WIDTH, "Human Readble");
cc3.setHeader("Human Readble");
ColumnConfig<MonitorBaseDto, Double> cc4 = new ColumnConfig<MonitorBaseDto, Double>(
new ValueProvider<MonitorBaseDto, Double>() { new ValueProvider<MonitorBaseDto, Double>() {
@Override @Override
@ -233,8 +215,8 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
public String getPath() { public String getPath() {
return "progress"; return "progress";
} }
}, CC4WIDTH, "Progress"); }, CC3WIDTH, "Progress");
cc4.setHeader("Progress"); cc3.setHeader("Progress");
ProgressBarCell progress = new ProgressBarCell() { ProgressBarCell progress = new ProgressBarCell() {
@Override @Override
@ -245,13 +227,12 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
progress.setProgressText("{0}% Complete"); progress.setProgressText("{0}% Complete");
progress.setWidth(110); progress.setWidth(110);
cc4.setCell(progress); cc3.setCell(progress);
List<ColumnConfig<MonitorBaseDto, ?>> l = new ArrayList<ColumnConfig<MonitorBaseDto, ?>>(); List<ColumnConfig<MonitorBaseDto, ?>> l = new ArrayList<ColumnConfig<MonitorBaseDto, ?>>();
l.add(cc1); l.add(cc1);
l.add(cc2); l.add(cc2);
l.add(cc3); l.add(cc3);
l.add(cc4);
ColumnModel<MonitorBaseDto> cm = new ColumnModel<MonitorBaseDto>(l); ColumnModel<MonitorBaseDto> cm = new ColumnModel<MonitorBaseDto>(l);
tree = new TreeGrid<MonitorBaseDto>(store, cm, cc1); tree = new TreeGrid<MonitorBaseDto>(store, cm, cc1);
@ -260,8 +241,8 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
tree.setLoadMask(true); tree.setLoadMask(true);
tree.setColumnResize(true); tree.setColumnResize(true);
tree.getView().setAutoExpandColumn(cc1); tree.getView().setAutoExpandColumn(cc1);
tree.getElement().setAttribute("height", "auto");
IconProvider<MonitorBaseDto> iconProvider = new IconProvider<MonitorBaseDto>() { IconProvider<MonitorBaseDto> iconProvider = new IconProvider<MonitorBaseDto>() {
@Override @Override
@ -304,59 +285,27 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
} }
}); });
// createContextMenu(); createContextMenu();
ToolBar toolBar = new ToolBar();
TextButton btnExpandAll = new TextButton();
btnExpandAll.setIcon(ResourceBundle.INSTANCE.magnifierZoomIn());
btnExpandAll.setToolTip("Expand All");
btnExpandAll.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
tree.expandAll();
forceLayout();
}
});
toolBar.add(btnExpandAll);
TextButton btnCollapseAll = new TextButton();
btnCollapseAll.setIcon(ResourceBundle.INSTANCE.magnifierZoomOut());
btnCollapseAll.setToolTip("Collapse All");
btnCollapseAll.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
tree.collapseAll();
forceLayout();
}
});
toolBar.add(btnCollapseAll);
con.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
con.add(tree, new VerticalLayoutData(1, -1, new Margins(0))); con.add(tree, new VerticalLayoutData(1, -1, new Margins(0)));
add(con, new MarginData(0)); add(con, new MarginData(0));
addMonitor(); // addMonitor();
//tree.expandAll();
forceLayout(); forceLayout();
} }
protected void addMonitor() { protected void addMonitor() {
monitorBackgroundUpdater = new MonitorBackgroundUpdater(); monitorBackgroundUpdater = new MonitorBackgroundUpdater();
monitorBackgroundUpdater.addListener(this); monitorBackgroundUpdater.addListener(this);
monitorBackgroundUpdater.scheduleRepeating(STATUS_POLLING_DELAY); monitorBackgroundUpdater.scheduleRepeating(STATUS_POLLING_DELAY);
addMonitorBackgroundEventUIListener(monitorBackgroundUpdater);
}
addMonitorBackgroundEventUIListener(monitorBackgroundUpdater);
}
public void addMonitorBackgroundEventUIListener( public void addMonitorBackgroundEventUIListener(
MonitorBackgroundEventUIListener listener) { MonitorBackgroundEventUIListener listener) {
@ -367,20 +316,18 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
MonitorBackgroundEventUIListener listener) { MonitorBackgroundEventUIListener listener) {
monitorBackgroundEventUIListeners.remove(listener); monitorBackgroundEventUIListeners.remove(listener);
} }
public void update() { public void update() {
forceLayout(); forceLayout();
} }
protected void close() { protected void close() {
/* if (parent != null) {
* if (parent != null) { parent.close(); } parent.close();
*/ }
} }
protected void requestOperationOnKey(Context context) { protected void requestOperationOnKey(Context context) {
String key = (String) context.getKey(); String key = (String) context.getKey();
@SuppressWarnings("unused") @SuppressWarnings("unused")
@ -388,50 +335,104 @@ public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackg
} }
private void addChildrensToStore() { private void addChildrensToStore() {
gen = new MonitorTreeDataGenerator(); gen = new MonitorTreeDataGenerator();
try {
MonitorFolderDto root = gen.getRoot(operationMonitorList);
Log.debug("root childrens " + root.getChildrens().size());
for (MonitorBaseDto base : root.getChildrens()) {
Log.debug("Check children: " + base);
store.add(base);
MonitorFolderDto root = gen.getRoot(operationMonitorList);
for (MonitorBaseDto base : root.getChildrens()) {
store.add(base);
if (base instanceof MonitorFolderDto) {
processFolder(store, (MonitorFolderDto) base);
} }
} catch (Throwable e) {
Log.error("Error adding childrens to store :"
+ e.getLocalizedMessage());
e.printStackTrace();
} }
} }
private void processFolder(TreeStore<MonitorBaseDto> store, protected void createContextMenu() {
MonitorFolderDto folder) { contextMenu = new Menu();
for (MonitorBaseDto child : folder.getChildrens()) {
store.add(folder, child); infoItem = new MenuItem();
if (child instanceof MonitorFolderDto) { infoItem.setText("Info");
processFolder(store, (MonitorFolderDto) child); infoItem.setIcon(ResourceBundle.INSTANCE.ok());
infoItem.addSelectionHandler(new SelectionHandler<Item>() {
@Override
public void onSelection(SelectionEvent<Item> event) {
MonitorBaseDto selected = tree.getSelectionModel()
.getSelectedItem();
Log.debug(selected.toString());
requestMoreInfo(selected);
}
});
abortItem = new MenuItem();
abortItem.setText("Abort");
abortItem.setIcon(ResourceBundle.INSTANCE.basket());
abortItem.addSelectionHandler(new SelectionHandler<Item>() {
@Override
public void onSelection(SelectionEvent<Item> event) {
MonitorBaseDto selected = tree.getSelectionModel()
.getSelectedItem();
Log.debug(selected.toString());
requestBacgroundAbort(selected);
}
});
contextMenu.add(infoItem);
contextMenu.add(abortItem);
tree.setContextMenu(contextMenu);
}
protected void requestMoreInfo(MonitorBaseDto selected) {
for (OperationMonitor operationMonitor : operationMonitorList) {
if (operationMonitor.getTaskId().compareTo(selected.getId()) == 0) {
Log.debug("Found Task Id: " + operationMonitor.getTaskId());
MonitorBackgroundInfoDialog monitorBackgroundInfoDialog = new MonitorBackgroundInfoDialog(
operationMonitor, eventBus);
monitorBackgroundInfoDialog.show();
return;
} }
} }
} }
protected void requestBacgroundAbort(MonitorBaseDto selected) {
}
@Override @Override
public void operationMonitorListUpdated( public void operationMonitorListUpdated(
ArrayList<OperationMonitor> operationMonitorList) { ArrayList<OperationMonitor> operationMonitorList) {
this.operationMonitorList = operationMonitorList;
store.clear(); store.clear();
store.commitChanges(); store.commitChanges();
addChildrensToStore(); addChildrensToStore();
store.commitChanges(); store.commitChanges();
tree.expandAll(); // tree.expandAll();
forceLayout(); forceLayout();
}
}
@Override @Override
public void retrieveOperationMonitorListFailed(Throwable caught) { public void retrieveOperationMonitorListFailed(Throwable caught) {
// TODO Auto-generated method stub if (caught instanceof TDGWTSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
} else {
UtilsGXT3.alert("Error", "Error retrieving tasks in bacground: "
+ caught.getLocalizedMessage());
}
} }
} }

View File

@ -17,6 +17,8 @@ public class MonitorFolderDto extends MonitorBaseDto {
protected String state; protected String state;
protected String humanReadableStatus; protected String humanReadableStatus;
protected float progress; protected float progress;
protected String startTime;
protected String endTime;
public MonitorFolderDto(){ public MonitorFolderDto(){
@ -77,7 +79,6 @@ public class MonitorFolderDto extends MonitorBaseDto {
this.state = state; this.state = state;
} }
public String getHumanReadableStatus() { public String getHumanReadableStatus() {
return humanReadableStatus; return humanReadableStatus;
@ -86,6 +87,24 @@ public class MonitorFolderDto extends MonitorBaseDto {
public void setHumanReadableStatus(String humanReadableStatus) { public void setHumanReadableStatus(String humanReadableStatus) {
this.humanReadableStatus = humanReadableStatus; this.humanReadableStatus = humanReadableStatus;
} }
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
@Override @Override
public String toString() { public String toString() {

View File

@ -54,12 +54,17 @@ public class MonitorTreeDataGenerator {
jobs.add(foldJob); jobs.add(foldJob);
} }
MonitorFolderDto foldTask = new MonitorFolderDto("task", MonitorFolderDto foldTask = new MonitorFolderDto("task",
task.getId(), task.getId() + " [Date:" task.getId(), operationMonitor.getOperationId().toString(),
+ sdf.format(task.getStartTime()) + "]", task task.getState().toString(), "", task.getProgress(),
.getState().toString(), "", task.getProgress(),
jobs); jobs);
if(task.getStartTime()!=null){
foldTask.setStartTime(sdf.format(task.getStartTime()));
}
if(task.getEndTime()!=null){
foldTask.setEndTime(sdf.format(task.getEndTime()));
}
childrens.add(foldTask); childrens.add(foldTask);
root = new MonitorFolderDto("root", "-1", "root", "root", "", 0, root = new MonitorFolderDto("root", "-1", "root", "root", "", 0,
childrens); childrens);
Log.debug("Generated root"); Log.debug("Generated root");
@ -115,9 +120,11 @@ public class MonitorTreeDataGenerator {
ArrayList<OperationMonitor> operationMonitorList) { ArrayList<OperationMonitor> operationMonitorList) {
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>(); ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
if (operationMonitorList != null && operationMonitorList.size() > 0) { if (operationMonitorList != null && operationMonitorList.size() > 0) {
Log.debug("getRoot: "+operationMonitorList.size());
for (OperationMonitor operationMonitor : operationMonitorList) { for (OperationMonitor operationMonitor : operationMonitorList) {
if (operationMonitor != null if (operationMonitor != null
&& operationMonitor.getTask() != null) { && operationMonitor.getTask() != null) {
Log.debug("getRoot: [TaskId="+operationMonitor.getTaskId()+"]");
TaskS task = operationMonitor.getTask(); TaskS task = operationMonitor.getTask();
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>(); ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
for (JobS job : task.getJobs()) { for (JobS job : task.getJobs()) {
@ -143,15 +150,21 @@ public class MonitorTreeDataGenerator {
jobs.add(foldJob); jobs.add(foldJob);
} }
MonitorFolderDto foldTask = new MonitorFolderDto("task", MonitorFolderDto foldTask = new MonitorFolderDto("task",
task.getId(), task.getId() + " [Date:" task.getId(), operationMonitor.getOperationId().toString(),
+ sdf.format(task.getStartTime()) + "]",
task.getState().toString(), "", task.getProgress(), task.getState().toString(), "", task.getProgress(),
jobs); jobs);
if(task.getStartTime()!=null){
foldTask.setStartTime(sdf.format(task.getStartTime()));
}
if(task.getEndTime()!=null){
foldTask.setEndTime(sdf.format(task.getEndTime()));
}
childrens.add(foldTask); childrens.add(foldTask);
} else { } else {
Log.debug("getRoot: operation null");
} }
} }
Log.debug("childrens size:"+childrens.size());
root = new MonitorFolderDto("root", "-1", "root", "root", root = new MonitorFolderDto("root", "-1", "root", "root",
"", 0, childrens); "", 0, childrens);
Log.debug("Generated root"); Log.debug("Generated root");

View File

@ -23,9 +23,9 @@
<!-- Specify the app entry point class. --> <!-- Specify the app entry point class. -->
<!-- <entry-point class='org.gcube.portlets.user.td.monitorwidget.client.MonitorWidgetEntry' /> --> <entry-point class='org.gcube.portlets.user.td.monitorwidget.client.MonitorWidgetEntry' />
<!-- Logger <!-- Logger -->
<set-property name="log_DivLogger" value="ENABLED" /> <set-property name="log_DivLogger" value="ENABLED" />
<set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property name="log_ConsoleLogger" value="ENABLED" />
<set-property name="log_FirebugLogger" value="ENABLED" /> <set-property name="log_FirebugLogger" value="ENABLED" />