Minor Update
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-monitor-widget@99644 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
d406e0371a
commit
56b5816023
|
@ -36,7 +36,7 @@ import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
|
||||||
*/
|
*/
|
||||||
public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
|
|
||||||
public static final int STATUS_POLLING_DELAY = 1000;
|
private static final int STATUS_POLLING_DELAY = 1000;
|
||||||
private static final String WIDTH = "640px";
|
private static final String WIDTH = "640px";
|
||||||
private static final String HEIGHT = "378px";
|
private static final String HEIGHT = "378px";
|
||||||
private static final String PANELWIDTH = "620px";
|
private static final String PANELWIDTH = "620px";
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
package org.gcube.portlets.user.td.monitorwidget.client.background;
|
package org.gcube.portlets.user.td.monitorwidget.client.background;
|
||||||
|
|
||||||
import org.gcube.portlets.user.td.monitorwidget.client.details.MonitorDetailPanel;
|
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
|
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
|
@ -15,26 +12,15 @@ import com.sencha.gxt.widget.core.client.Window;
|
||||||
*/
|
*/
|
||||||
public class MonitorBackgroundDialog extends Window {
|
public class MonitorBackgroundDialog extends Window {
|
||||||
|
|
||||||
private static final String WIDTH = "640px";
|
private static final String WIDTH = "400px";
|
||||||
private static final String HEIGHT = "378px";
|
private static final String HEIGHT = "520px";
|
||||||
private static final String PANELWIDTH = "620px";
|
|
||||||
private static final String PANELHEIGHT = "308px";
|
|
||||||
private static final String PROGRESSWIDTH = "618px";
|
|
||||||
|
|
||||||
private EventBus eventBus;
|
protected EventBus eventBus;
|
||||||
private String taskId;
|
protected MonitorBackgroundPanel monitorBackgroundPanel;
|
||||||
|
|
||||||
private TRId trId;
|
public MonitorBackgroundDialog(EventBus eventBus) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private MonitorDetailPanel monitorDetailPanel;
|
|
||||||
|
|
||||||
public MonitorBackgroundDialog(String taskId, EventBus eventBus) {
|
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
this.taskId=taskId;
|
|
||||||
trId = null;
|
|
||||||
initWindow();
|
initWindow();
|
||||||
create();
|
create();
|
||||||
|
|
||||||
|
@ -46,13 +32,15 @@ public class MonitorBackgroundDialog extends Window {
|
||||||
setHeight(HEIGHT);
|
setHeight(HEIGHT);
|
||||||
setBodyBorder(false);
|
setBodyBorder(false);
|
||||||
setResizable(true);
|
setResizable(true);
|
||||||
setModal(true);
|
setModal(false);
|
||||||
setClosable(true);
|
setClosable(true);
|
||||||
setHeadingText("Background Operations Monitor");
|
setHeadingText("Background Operations Monitor");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void create(){
|
protected void create(){
|
||||||
|
monitorBackgroundPanel = new MonitorBackgroundPanel(eventBus);
|
||||||
|
add(monitorBackgroundPanel);
|
||||||
|
show();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package org.gcube.portlets.user.td.monitorwidget.client.background;
|
||||||
|
|
||||||
|
public interface MonitorBackgroundEventUIListener {
|
||||||
|
/**
|
||||||
|
* Called when the task is aborted
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void requestAborted(String taskId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the task is resumed
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void requestResume(String taskId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,437 @@
|
||||||
|
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.google.gwt.cell.client.AbstractCell;
|
||||||
|
import com.google.gwt.cell.client.Cell.Context;
|
||||||
|
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.menu.Menu;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class MonitorBackgroundPanel extends FramedPanel implements MonitorBackgroundUpdaterListener {
|
||||||
|
protected static final int STATUS_POLLING_DELAY = 2000;
|
||||||
|
protected static final String WIDTH = "298px";
|
||||||
|
protected static final String HEIGHT = "520px";
|
||||||
|
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 ArrayList<MonitorBackgroundEventUIListener> monitorBackgroundEventUIListeners = new ArrayList<MonitorBackgroundEventUIListener>();
|
||||||
|
|
||||||
|
protected MonitorBackgroundPanel thisPanel;
|
||||||
|
|
||||||
|
protected Menu contextMenu;
|
||||||
|
protected MenuItem resumeItem;
|
||||||
|
protected MenuItem resolveItem;
|
||||||
|
|
||||||
|
protected TRId trId;
|
||||||
|
protected VerticalLayoutContainer con;
|
||||||
|
protected ValidationsTasksMetadata validationsTasksMetadata;
|
||||||
|
|
||||||
|
protected MonitorTreeDataGenerator gen;
|
||||||
|
protected TreeStore<MonitorBaseDto> store;
|
||||||
|
protected TreeGrid<MonitorBaseDto> tree;
|
||||||
|
protected ArrayList<OperationMonitor> operationMonitorList;
|
||||||
|
|
||||||
|
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 MonitorBackgroundPanel(EventBus eventBus) {
|
||||||
|
super();
|
||||||
|
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);
|
||||||
|
|
||||||
|
|
||||||
|
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();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 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)));
|
||||||
|
|
||||||
|
add(con, new MarginData(0));
|
||||||
|
|
||||||
|
addMonitor();
|
||||||
|
|
||||||
|
//tree.expandAll();
|
||||||
|
forceLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void addMonitor() {
|
||||||
|
monitorBackgroundUpdater = new MonitorBackgroundUpdater();
|
||||||
|
|
||||||
|
monitorBackgroundUpdater.addListener(this);
|
||||||
|
monitorBackgroundUpdater.scheduleRepeating(STATUS_POLLING_DELAY);
|
||||||
|
|
||||||
|
addMonitorBackgroundEventUIListener(monitorBackgroundUpdater);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void addMonitorBackgroundEventUIListener(
|
||||||
|
MonitorBackgroundEventUIListener listener) {
|
||||||
|
monitorBackgroundEventUIListeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeMonitorBackgroundEventUIListener(
|
||||||
|
MonitorBackgroundEventUIListener listener) {
|
||||||
|
monitorBackgroundEventUIListeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update() {
|
||||||
|
forceLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected void close() {
|
||||||
|
/*
|
||||||
|
* if (parent != null) { parent.close(); }
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void requestOperationOnKey(Context context) {
|
||||||
|
String key = (String) context.getKey();
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
MonitorBaseDto d = store.findModelWithKey(key);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void addChildrensToStore() {
|
||||||
|
gen = new MonitorTreeDataGenerator();
|
||||||
|
|
||||||
|
MonitorFolderDto root = gen.getRoot(operationMonitorList);
|
||||||
|
for (MonitorBaseDto base : root.getChildrens()) {
|
||||||
|
store.add(base);
|
||||||
|
if (base instanceof MonitorFolderDto) {
|
||||||
|
processFolder(store, (MonitorFolderDto) base);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processFolder(TreeStore<MonitorBaseDto> store,
|
||||||
|
MonitorFolderDto folder) {
|
||||||
|
for (MonitorBaseDto child : folder.getChildrens()) {
|
||||||
|
store.add(folder, child);
|
||||||
|
if (child instanceof MonitorFolderDto) {
|
||||||
|
processFolder(store, (MonitorFolderDto) child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void operationMonitorListUpdated(
|
||||||
|
ArrayList<OperationMonitor> operationMonitorList) {
|
||||||
|
store.clear();
|
||||||
|
store.commitChanges();
|
||||||
|
addChildrensToStore();
|
||||||
|
store.commitChanges();
|
||||||
|
tree.expandAll();
|
||||||
|
forceLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void retrieveOperationMonitorListFailed(Throwable caught) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
package org.gcube.portlets.user.td.monitorwidget.client.background;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.shared.monitor.BackgroundOperationMonitorSession;
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitorSession;
|
||||||
|
|
||||||
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
|
import com.google.gwt.user.client.Timer;
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi"
|
||||||
|
* <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class MonitorBackgroundUpdater extends Timer implements MonitorBackgroundEventUIListener {
|
||||||
|
|
||||||
|
protected ArrayList<MonitorBackgroundUpdaterListener> listeners = new ArrayList<MonitorBackgroundUpdaterListener>();
|
||||||
|
protected BackgroundOperationMonitorSession backgroundOperationMonitorSession;
|
||||||
|
|
||||||
|
public MonitorBackgroundUpdater(){
|
||||||
|
backgroundOperationMonitorSession=new BackgroundOperationMonitorSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Log.debug("requesting list of operation in background ");
|
||||||
|
TDGWTServiceAsync.INSTANCE
|
||||||
|
.getBackgroundOperationMonitor(backgroundOperationMonitorSession, new AsyncCallback<ArrayList<OperationMonitor>>() {
|
||||||
|
|
||||||
|
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
cancel();
|
||||||
|
|
||||||
|
Log.error("Error retrieving operation monitor list",
|
||||||
|
caught);
|
||||||
|
|
||||||
|
fireRetrieveOperationMonitorListFailed(caught);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onSuccess(ArrayList<OperationMonitor> result) {
|
||||||
|
Log.debug("retrieved Operation Monitor List: "
|
||||||
|
+ result.size());
|
||||||
|
|
||||||
|
fireOperationMonitorListUpdated(result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void fireOperationMonitorListUpdated(ArrayList<OperationMonitor> operationMonitorList){
|
||||||
|
for (MonitorBackgroundUpdaterListener listener : listeners)
|
||||||
|
listener.operationMonitorListUpdated(operationMonitorList);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void fireRetrieveOperationMonitorListFailed(Throwable throwable){
|
||||||
|
for (MonitorBackgroundUpdaterListener listener : listeners)
|
||||||
|
listener.retrieveOperationMonitorListFailed(throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param listener
|
||||||
|
*/
|
||||||
|
public void addListener(MonitorBackgroundUpdaterListener listener) {
|
||||||
|
listeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param listener
|
||||||
|
*/
|
||||||
|
public void removeListener(MonitorBackgroundUpdaterListener listener) {
|
||||||
|
listeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void requestAborted(String taskId) {
|
||||||
|
OperationMonitorSession operationMonitorSession=new OperationMonitorSession(taskId);
|
||||||
|
operationMonitorSession.setAbort(true);
|
||||||
|
backgroundOperationMonitorSession.addToOperationMonitorSessionList(operationMonitorSession);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void requestResume(String taskId) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.gcube.portlets.user.td.monitorwidget.client.background;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author giancarlo
|
||||||
|
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface MonitorBackgroundUpdaterListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the list of opration is updated
|
||||||
|
*/
|
||||||
|
public void operationMonitorListUpdated(ArrayList<OperationMonitor> operationMonitorList);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when operation is failed
|
||||||
|
*/
|
||||||
|
public void retrieveOperationMonitorListFailed(Throwable caught);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -362,9 +362,9 @@ public class MonitorDetailPanel extends FramedPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addChildrensToStore() {
|
private void addChildrensToStore() {
|
||||||
gen = new MonitorTreeDataGenerator(operationMonitor);
|
gen = new MonitorTreeDataGenerator();
|
||||||
|
|
||||||
MonitorFolderDto root = gen.getRootNoTask();
|
MonitorFolderDto root = gen.getRootNoTask(operationMonitor);
|
||||||
for (MonitorBaseDto base : root.getChildrens()) {
|
for (MonitorBaseDto base : root.getChildrens()) {
|
||||||
store.add(base);
|
store.add(base);
|
||||||
if (base instanceof MonitorFolderDto) {
|
if (base instanceof MonitorFolderDto) {
|
||||||
|
|
|
@ -21,15 +21,16 @@ public class MonitorTreeDataGenerator {
|
||||||
.getFormat("yyyy-MM-dd HH:mm:ss");
|
.getFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
protected MonitorFolderDto root;
|
protected MonitorFolderDto root;
|
||||||
protected OperationMonitor operationMonitor;
|
|
||||||
|
|
||||||
public MonitorTreeDataGenerator(OperationMonitor operationMonitor) {
|
protected boolean singleOperation;
|
||||||
|
|
||||||
|
public MonitorTreeDataGenerator() {
|
||||||
Log.debug("MonitorTreeDataGenerator");
|
Log.debug("MonitorTreeDataGenerator");
|
||||||
this.operationMonitor = operationMonitor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public MonitorFolderDto getRoot() {
|
public MonitorFolderDto getRoot(OperationMonitor operationMonitor) {
|
||||||
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
|
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
|
||||||
|
|
||||||
if (operationMonitor != null && operationMonitor.getTask() != null) {
|
if (operationMonitor != null && operationMonitor.getTask() != null) {
|
||||||
TaskS task = operationMonitor.getTask();
|
TaskS task = operationMonitor.getTask();
|
||||||
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
|
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
|
||||||
|
@ -72,8 +73,8 @@ public class MonitorTreeDataGenerator {
|
||||||
|
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MonitorFolderDto getRootNoTask(){
|
public MonitorFolderDto getRootNoTask(OperationMonitor operationMonitor) {
|
||||||
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
|
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
|
||||||
if (operationMonitor != null && operationMonitor.getTask() != null) {
|
if (operationMonitor != null && operationMonitor.getTask() != null) {
|
||||||
TaskS task = operationMonitor.getTask();
|
TaskS task = operationMonitor.getTask();
|
||||||
|
@ -95,7 +96,7 @@ public class MonitorTreeDataGenerator {
|
||||||
validations);
|
validations);
|
||||||
jobs.add(foldJob);
|
jobs.add(foldJob);
|
||||||
}
|
}
|
||||||
|
|
||||||
root = new MonitorFolderDto("root", "-1", "root", "root", "", 0,
|
root = new MonitorFolderDto("root", "-1", "root", "root", "", 0,
|
||||||
jobs);
|
jobs);
|
||||||
Log.debug("Generated root");
|
Log.debug("Generated root");
|
||||||
|
@ -109,7 +110,61 @@ public class MonitorTreeDataGenerator {
|
||||||
|
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MonitorFolderDto getRoot(
|
||||||
|
ArrayList<OperationMonitor> operationMonitorList) {
|
||||||
|
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
|
||||||
|
if (operationMonitorList != null && operationMonitorList.size() > 0) {
|
||||||
|
for (OperationMonitor operationMonitor : operationMonitorList) {
|
||||||
|
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(), task.getId() + " [Date:"
|
||||||
|
+ sdf.format(task.getStartTime()) + "]",
|
||||||
|
task.getState().toString(), "", task.getProgress(),
|
||||||
|
jobs);
|
||||||
|
childrens.add(foldTask);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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) {
|
protected void printRecorsive(MonitorFolderDto root) {
|
||||||
for (MonitorBaseDto base : root.getChildrens()) {
|
for (MonitorBaseDto base : root.getChildrens()) {
|
||||||
|
|
Loading…
Reference in New Issue