From b4dcc0c78ae1ff7b492198896e624c08e8723da6 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Fri, 13 Feb 2015 13:39:34 +0000 Subject: [PATCH] Updated background operation monitor git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-monitor-widget@112011 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/MonitorWidgetEntry.java | 29 +- .../background/MonitorBackgroundDialog.java | 4 +- .../MonitorBackgroundInfoDialog.java | 17 +- .../MonitorBackgroundInfoPanel.java | 100 ++++-- .../MonitorBackgroundInfoUpdater.java | 88 ++++++ .../MonitorBackgroundInfoUpdaterListener.java | 26 ++ .../background/MonitorBackgroundPanel.java | 289 +++++------------- .../background/MonitorBackgroundUpdater.java | 8 +- .../MonitorBackgroundUpdaterListener.java | 4 +- 9 files changed, 303 insertions(+), 262 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoUpdater.java create mode 100644 src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoUpdaterListener.java diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/MonitorWidgetEntry.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/MonitorWidgetEntry.java index 52b35e3..a5f895f 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/MonitorWidgetEntry.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/MonitorWidgetEntry.java @@ -3,6 +3,7 @@ package org.gcube.portlets.user.td.monitorwidget.client; import java.util.ArrayList; import java.util.Date; +import org.gcube.portlets.user.td.gwtservice.shared.monitor.BackgroundOperationMonitor; 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.State; @@ -91,15 +92,20 @@ public class MonitorWidgetEntry implements EntryPoint { } private void showBackgroundElapsed() { - ArrayList backgroundOperationMonitorList = new ArrayList(); + ArrayList backgroundOperationMonitorList = new ArrayList(); for (int i = 0; i < 20; i++) { - OperationMonitor operationMonitor = new OperationMonitor(String.valueOf(i), - UIOperationsId.EditRow); - operationMonitor.setTask(createTaskForTest(String.valueOf(i))); + BackgroundOperationMonitor backgroundOperationMonitor=new + BackgroundOperationMonitor(); + backgroundOperationMonitor.setTaskId(String.valueOf(i)); + backgroundOperationMonitor.setOperationId(UIOperationsId.EditRow); + backgroundOperationMonitor.setTabularResourceId("1"); + backgroundOperationMonitor.setTabularResourceName("TestTR"); + backgroundOperationMonitor.setState(State.IN_PROGRESS); + backgroundOperationMonitor.setProgress(genProgress()); - backgroundOperationMonitorList.add(operationMonitor); + backgroundOperationMonitorList.add(backgroundOperationMonitor); } monitorBackgroundWidget @@ -107,11 +113,16 @@ public class MonitorWidgetEntry implements EntryPoint { } private void showBackgroundInfoWidget() { - OperationMonitor operationMonitor = new OperationMonitor("1", - UIOperationsId.EditRow); - operationMonitor.setTask(createTaskForTest("1")); + BackgroundOperationMonitor backgroundOperationMonitor=new + BackgroundOperationMonitor(); + backgroundOperationMonitor.setTaskId("1"); + backgroundOperationMonitor.setOperationId(UIOperationsId.EditRow); + backgroundOperationMonitor.setTabularResourceId("1"); + backgroundOperationMonitor.setTabularResourceName("TestTR"); + backgroundOperationMonitor.setState(State.IN_PROGRESS); + backgroundOperationMonitor.setProgress(genProgress()); monitorBackgroundInfoWidget = new MonitorBackgroundInfoDialog( - operationMonitor, eventBus); + backgroundOperationMonitor, eventBus); monitorBackgroundInfoWidget.show(); } diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundDialog.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundDialog.java index e57c5f7..0e60bbe 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundDialog.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundDialog.java @@ -2,7 +2,7 @@ package org.gcube.portlets.user.td.monitorwidget.client.background; import java.util.ArrayList; -import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor; +import org.gcube.portlets.user.td.gwtservice.shared.monitor.BackgroundOperationMonitor; import com.allen_sauer.gwt.log.client.Log; import com.google.web.bindery.event.shared.EventBus; @@ -82,7 +82,7 @@ public class MonitorBackgroundDialog extends Window { } - public void updateBackgroundOperationMonitor(ArrayList operationMonitorList) { + public void updateBackgroundOperationMonitor(ArrayList operationMonitorList) { if (monitorBackgroundPanel != null) { monitorBackgroundPanel.operationMonitorListUpdated(operationMonitorList); } diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoDialog.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoDialog.java index 45dea51..878ea97 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoDialog.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoDialog.java @@ -1,7 +1,7 @@ package org.gcube.portlets.user.td.monitorwidget.client.background; -import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor; +import org.gcube.portlets.user.td.gwtservice.shared.monitor.BackgroundOperationMonitor; import com.allen_sauer.gwt.log.client.Log; import com.google.web.bindery.event.shared.EventBus; @@ -21,15 +21,16 @@ public class MonitorBackgroundInfoDialog extends Window { private static final String WIDTH = "640px"; private static final String HEIGHT = "408px"; - protected EventBus eventBus; - protected MonitorBackgroundInfoPanel monitorBackgroundInfoPanel; - protected OperationMonitor operationMonitor; + private EventBus eventBus; + private MonitorBackgroundInfoPanel monitorBackgroundInfoPanel; + private BackgroundOperationMonitor backgroundOperationMonitor; - public MonitorBackgroundInfoDialog(OperationMonitor operationMonitor, EventBus eventBus) { + public MonitorBackgroundInfoDialog(BackgroundOperationMonitor backgroundOperationMonitor, EventBus eventBus) { super(); + Log.debug("MonitorBackgroundInfoDialog"); this.eventBus = eventBus; - this.operationMonitor =operationMonitor; + this.backgroundOperationMonitor =backgroundOperationMonitor; initWindow(); create(); } @@ -41,11 +42,11 @@ public class MonitorBackgroundInfoDialog extends Window { setResizable(false); setModal(false); setClosable(true); - setHeadingText("Info Operation"); + setHeadingText(backgroundOperationMonitor.getTabularResourceName()); } protected void create() { - monitorBackgroundInfoPanel = new MonitorBackgroundInfoPanel(this, operationMonitor,eventBus); + monitorBackgroundInfoPanel = new MonitorBackgroundInfoPanel(this, backgroundOperationMonitor,eventBus); add(monitorBackgroundInfoPanel); } diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoPanel.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoPanel.java index 9b1edae..dbbb351 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoPanel.java @@ -3,8 +3,9 @@ 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.BackgroundOperationMonitor; 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.monitor.OperationMonitorSession; 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; @@ -13,7 +14,6 @@ import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorTreeD 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.utils.UtilsGXT3; -import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.cell.client.AbstractCell; @@ -30,12 +30,12 @@ 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.HBoxLayoutContainer; -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.BoxLayoutContainer.BoxLayoutData; import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack; +import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer; import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign; +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; @@ -54,31 +54,33 @@ import com.sencha.gxt.widget.core.client.treegrid.TreeGrid; * href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it * */ -public class MonitorBackgroundInfoPanel extends FramedPanel { - protected static final String WIDTH = "618px"; - protected static final String HEIGHT = "400px"; - protected static final String HEIGHTGRID = "290px"; +public class MonitorBackgroundInfoPanel extends FramedPanel implements + MonitorBackgroundInfoUpdaterListener { + private static final int STATUS_POLLING_DELAY = 1000; + + private static final String WIDTH = "618px"; + private static final String HEIGHT = "400px"; + private static final String HEIGHTGRID = "290px"; - protected static final int CC1WIDTH = 168; - protected static final int CC2WIDTH = 100; - protected static final int CC3WIDTH = 140; - protected static final int CC4WIDTH = 100; + private static final int CC1WIDTH = 168; + private static final int CC2WIDTH = 100; + private static final int CC3WIDTH = 140; + private static final int CC4WIDTH = 100; - protected MonitorBackgroundInfoDialog parent; - protected MonitorBackgroundInfoPanel thisPanel; + private MonitorBackgroundInfoDialog parent; + + private VerticalLayoutContainer con; + - protected TRId trId; - protected VerticalLayoutContainer con; - protected ValidationsTasksMetadata validationsTasksMetadata; + private MonitorTreeDataGenerator gen; + private TreeStore store; + private TreeGrid tree; + private OperationMonitor operationMonitor; - protected MonitorTreeDataGenerator gen; - protected TreeStore store; - protected TreeGrid tree; - protected OperationMonitor operationMonitor; - - protected EventBus eventBus; - protected MonitorBackgroundUpdater monitorBackgroundUpdater; + + private MonitorBackgroundInfoUpdater monitorBackgroundInfoUpdater; private TextButton btnClose; + private OperationMonitorSession operationMonitorSession; class KeyProvider implements ModelKeyProvider { @Override @@ -89,11 +91,13 @@ public class MonitorBackgroundInfoPanel extends FramedPanel { } public MonitorBackgroundInfoPanel(MonitorBackgroundInfoDialog parent, - OperationMonitor operationMonitor, EventBus eventBus) { + BackgroundOperationMonitor backgroundOperationMonitor, + EventBus eventBus) { super(); this.parent = parent; - this.operationMonitor = operationMonitor; - this.eventBus = eventBus; + this.operationMonitorSession = new OperationMonitorSession( + backgroundOperationMonitor.getTaskId()); + operationMonitorSession.setInBackground(true); forceLayoutOnResize = true; init(); create(); @@ -125,8 +129,8 @@ public class MonitorBackgroundInfoPanel extends FramedPanel { @Override public void render(Context context, String value, SafeHtmlBuilder sb) { sb.appendHtmlConstant("" + SafeHtmlUtils.htmlEscape(value) - + ""); + + SafeHtmlUtils.htmlEscape(value) + "'>" + + SafeHtmlUtils.htmlEscape(value) + ""); } }); @@ -367,11 +371,20 @@ public class MonitorBackgroundInfoPanel extends FramedPanel { add(con, new MarginData(0)); + addMonitor(); + forceLayout(); tree.expandAll(); } + protected void addMonitor() { + monitorBackgroundInfoUpdater = new MonitorBackgroundInfoUpdater(operationMonitorSession); + monitorBackgroundInfoUpdater.addListener(this); + monitorBackgroundInfoUpdater.scheduleRepeating(STATUS_POLLING_DELAY); + monitorBackgroundInfoUpdater.run(); + } + protected void close() { if (parent != null) { parent.close(); @@ -406,6 +419,19 @@ public class MonitorBackgroundInfoPanel extends FramedPanel { } + public void update(OperationMonitor operationMonitor) { + this.operationMonitor = operationMonitor; + + store.clear(); + store.commitChanges(); + addChildrensToStore(); + store.commitChanges(); + tree.expandAll(); + + forceLayout(); + + } + private void processFolder(MonitorFolderDto folder) { for (MonitorBaseDto child : folder.getChildrens()) { try { @@ -422,4 +448,18 @@ public class MonitorBackgroundInfoPanel extends FramedPanel { } } + @Override + public void backgroundOperationMonitorUpdated( + OperationMonitor operationMonitor) { + update(operationMonitor); + + } + + @Override + public void retrieveBackgroundOperationMonitorFailed(Throwable caught) { + Log.error("Error retrieving background operation monitor: "+caught.getLocalizedMessage()); + UtilsGXT3.alert("Error", "Error generating informations: "+caught.getLocalizedMessage()); + close(); + } + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoUpdater.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoUpdater.java new file mode 100644 index 0000000..a0bf107 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoUpdater.java @@ -0,0 +1,88 @@ +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.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" g.panichi@isti.cnr.it + * + */ +public class MonitorBackgroundInfoUpdater extends Timer { + + protected ArrayList listeners = new ArrayList(); + protected OperationMonitorSession operationMonitorSession; + + public MonitorBackgroundInfoUpdater( + OperationMonitorSession operationMonitorSession) { + this.operationMonitorSession = operationMonitorSession; + + } + + /** + * {@inheritDoc} + */ + @Override + public void run() { + Log.debug("requesting operation in background "); + TDGWTServiceAsync.INSTANCE + .getBackgroundOperationMonitorForSpecificTask( + operationMonitorSession, + new AsyncCallback() { + + public void onFailure(Throwable caught) { + cancel(); + + Log.error("Error retrieving operation monitor", + caught); + + fireRetrieveOperationMonitorFailed(caught); + } + + public void onSuccess(OperationMonitor result) { + Log.debug("retrieved Operation Monitor"); + + fireOperationMonitorUpdated(result); + + } + + }); + + } + + protected void fireOperationMonitorUpdated(OperationMonitor operationMonitor) { + for (MonitorBackgroundInfoUpdaterListener listener : listeners) + listener.backgroundOperationMonitorUpdated(operationMonitor); + } + + protected void fireRetrieveOperationMonitorFailed(Throwable throwable) { + for (MonitorBackgroundInfoUpdaterListener listener : listeners) + listener.retrieveBackgroundOperationMonitorFailed(throwable); + } + + /** + * + * + * @param listener + */ + public void addListener(MonitorBackgroundInfoUpdaterListener listener) { + listeners.add(listener); + } + + /** + * + * @param listener + */ + public void removeListener(MonitorBackgroundInfoUpdaterListener listener) { + listeners.remove(listener); + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoUpdaterListener.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoUpdaterListener.java new file mode 100644 index 0000000..bf778f3 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundInfoUpdaterListener.java @@ -0,0 +1,26 @@ +package org.gcube.portlets.user.td.monitorwidget.client.background; + +import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor; + +/** + * + * @author giancarlo + * email: g.panichi@isti.cnr.it + * + */ +public interface MonitorBackgroundInfoUpdaterListener { + + /** + * Called when the operation is updated + */ + public void backgroundOperationMonitorUpdated(OperationMonitor operationMonitor); + + + /** + * Called when operation is failed + */ + public void retrieveBackgroundOperationMonitorFailed(Throwable caught); + + + +} diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundPanel.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundPanel.java index ea51604..ec31505 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundPanel.java @@ -4,15 +4,9 @@ import java.util.ArrayList; 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.BackgroundOperationMonitor; import org.gcube.portlets.user.td.gwtservice.shared.task.State; 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.monitorwidget.client.utils.UtilsGXT3; import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; @@ -21,35 +15,30 @@ 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.Cell.Context; +import com.google.gwt.core.client.GWT; +import com.google.gwt.editor.client.Editor.Path; 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.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.dom.ScrollSupport.ScrollMode; import com.sencha.gxt.core.client.util.Margins; -import com.sencha.gxt.data.shared.IconProvider; +import com.sencha.gxt.data.shared.ListStore; import com.sencha.gxt.data.shared.ModelKeyProvider; -import com.sencha.gxt.data.shared.TreeStore; +import com.sencha.gxt.data.shared.PropertyAccess; import com.sencha.gxt.widget.core.client.FramedPanel; 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.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; +import com.sencha.gxt.widget.core.client.grid.Grid; 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.MenuItem; -import com.sencha.gxt.widget.core.client.treegrid.TreeGrid; /** * @@ -62,9 +51,9 @@ public class MonitorBackgroundPanel extends FramedPanel implements protected static final int STATUS_POLLING_DELAY = 5000; protected static final String WIDTH = "640px"; protected static final String HEIGHT = "520px"; - protected static final int CC1WIDTH = 100; - protected static final int CC2WIDTH = 60; - protected static final int CC3WIDTH = 100; + protected static final int CC1WIDTH = 104; + protected static final int CC2WIDTH = 52; + protected static final int CC3WIDTH = 104; protected MonitorBackgroundDialog parent; protected ArrayList monitorBackgroundEventUIListeners = new ArrayList(); @@ -80,20 +69,24 @@ public class MonitorBackgroundPanel extends FramedPanel implements protected VerticalLayoutContainer con; protected ValidationsTasksMetadata validationsTasksMetadata; - protected MonitorTreeDataGenerator gen; - protected TreeStore store; - protected TreeGrid tree; - protected ArrayList operationMonitorList; + protected ListStore store; + protected Grid grid; + protected ArrayList backgroundOperationMonitorList; protected EventBus eventBus; protected MonitorBackgroundUpdater monitorBackgroundUpdater; - class KeyProvider implements ModelKeyProvider { - @Override - public String getKey(MonitorBaseDto item) { - return (item instanceof MonitorFolderDto ? "f-" : "v-") - + item.getId(); - } + public interface BackgroundOperationMonitorProperties extends + PropertyAccess { + + @Path("taskId") + ModelKeyProvider taskId(); + + ValueProvider tabularResourceName(); + + ValueProvider state(); + + ValueProvider progress(); } public MonitorBackgroundPanel(EventBus eventBus) { @@ -126,91 +119,45 @@ public class MonitorBackgroundPanel extends FramedPanel implements protected void create() { con = new VerticalLayoutContainer(); con.setScrollMode(ScrollMode.AUTO); - - store = new TreeStore(new KeyProvider()); + BackgroundOperationMonitorProperties props = GWT + .create(BackgroundOperationMonitorProperties.class); + store = new ListStore(props.taskId()); addChildrensToStore(); - ColumnConfig cc1 = new ColumnConfig( - new ToStringValueProvider("task"), CC1WIDTH, - "Task"); - cc1.setHeader("Task"); + ColumnConfig cc1 = new ColumnConfig( + props.tabularResourceName()); + cc1.setHeader("Tabular Resource"); cc1.setCell(new AbstractCell() { @Override public void render(Context context, String value, SafeHtmlBuilder sb) { sb.appendHtmlConstant("" + SafeHtmlUtils.htmlEscape(value) - + ""); + + SafeHtmlUtils.htmlEscape(value) + "'>" + + SafeHtmlUtils.htmlEscape(value) + ""); } }); - ColumnConfig cc2 = new ColumnConfig( - new ValueProvider() { - - @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"); + ColumnConfig cc2 = new ColumnConfig( + props.state()); cc2.setHeader("Status"); - ColumnConfig cc3 = new ColumnConfig( - new ValueProvider() { + ColumnConfig cc3 = new ColumnConfig( + new ValueProvider() { @Override - public Double getValue(MonitorBaseDto object) { + public Double getValue(BackgroundOperationMonitor 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); - } - + Float f = 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()); - } + public void setValue(BackgroundOperationMonitor object, + Double value) { + object.setProgress(value.floatValue()); } @Override @@ -231,65 +178,25 @@ public class MonitorBackgroundPanel extends FramedPanel implements cc3.setCell(progress); - List> l = new ArrayList>(); + List> l = new ArrayList>(); l.add(cc1); l.add(cc2); l.add(cc3); - ColumnModel cm = new ColumnModel(l); + ColumnModel cm = new ColumnModel( + l); - tree = new TreeGrid(store, cm, cc1); - tree.getView().setAutoFill(true); - tree.setBorders(false); - tree.setLoadMask(true); - tree.setColumnResize(true); - tree.getView().setAutoExpandColumn(cc1); - tree.getElement().setAttribute("height", "auto"); - - IconProvider iconProvider = new IconProvider() { - - @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() { - - @Override - public void onExpand(ExpandItemEvent event) { - forceLayout(); - - } - }); - - tree.addCollapseHandler(new CollapseItemHandler() { - - @Override - public void onCollapse(CollapseItemEvent event) { - forceLayout(); - - } - }); + grid = new Grid(store, cm); + grid.getView().setStripeRows(true); + grid.getView().setColumnLines(true); + grid.getView().setAutoFill(true); + grid.setBorders(false); + grid.setLoadMask(true); + grid.setColumnReordering(false); + grid.setColumnResize(true); createContextMenu(); - con.add(tree, new VerticalLayoutData(1, -1, new Margins(0))); + con.add(grid, new VerticalLayoutData(1, -1, new Margins(0))); add(con, new MarginData(0)); @@ -301,7 +208,6 @@ public class MonitorBackgroundPanel extends FramedPanel implements protected void addMonitor() { monitorBackgroundUpdater = new MonitorBackgroundUpdater(); - monitorBackgroundUpdater.addListener(this); addMonitorBackgroundEventUIListener(monitorBackgroundUpdater); @@ -331,29 +237,11 @@ public class MonitorBackgroundPanel extends FramedPanel implements } - protected void requestOperationOnKey(Context context) { - String key = (String) context.getKey(); - @SuppressWarnings("unused") - MonitorBaseDto d = store.findModelWithKey(key); - - } - + private void addChildrensToStore() { - 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); - - } - } catch (Throwable e) { - Log.error("Error adding childrens to store :" - + e.getLocalizedMessage()); - e.printStackTrace(); - } + if(backgroundOperationMonitorList!=null){ + store.addAll(backgroundOperationMonitorList); + } } protected void createContextMenu() { @@ -366,7 +254,7 @@ public class MonitorBackgroundPanel extends FramedPanel implements @Override public void onSelection(SelectionEvent event) { - MonitorBaseDto selected = tree.getSelectionModel() + BackgroundOperationMonitor selected = grid.getSelectionModel() .getSelectedItem(); Log.debug(selected.toString()); requestMoreInfo(selected); @@ -380,7 +268,7 @@ public class MonitorBackgroundPanel extends FramedPanel implements @Override public void onSelection(SelectionEvent event) { - MonitorBaseDto selected = tree.getSelectionModel() + BackgroundOperationMonitor selected = grid.getSelectionModel() .getSelectedItem(); Log.debug(selected.toString()); requestBacgroundAbort(selected); @@ -396,7 +284,7 @@ public class MonitorBackgroundPanel extends FramedPanel implements @Override public void onSelection(SelectionEvent event) { - MonitorBaseDto selected = tree.getSelectionModel() + BackgroundOperationMonitor selected = grid.getSelectionModel() .getSelectedItem(); Log.debug(selected.toString()); requestBacgroundHidden(selected); @@ -409,56 +297,43 @@ public class MonitorBackgroundPanel extends FramedPanel implements contextMenu.add(abortItem); contextMenu.add(hideItem); - tree.setContextMenu(contextMenu); + grid.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 requestMoreInfo(BackgroundOperationMonitor selected) { + Log.debug("Found Task Id: " + selected.getTaskId()); + MonitorBackgroundInfoDialog monitorBackgroundInfoDialog = new MonitorBackgroundInfoDialog( + selected, eventBus); + monitorBackgroundInfoDialog.show(); + return; + + } + + protected void requestBacgroundAbort(BackgroundOperationMonitor selected) { + Log.debug("Found Task Id: " + selected.getTaskId()); + if (selected.getState() == State.IN_PROGRESS + || selected.getState() == State.INITIALIZING + || selected.getState() == State.VALIDATING_RULES) { + fireRequestAborted(selected.getTaskId()); } } - protected void requestBacgroundAbort(MonitorBaseDto selected) { - for (OperationMonitor operationMonitor : operationMonitorList) { - if (operationMonitor.getTaskId().compareTo(selected.getId()) == 0) { - Log.debug("Found Task Id: " + operationMonitor.getTaskId()); - if (operationMonitor.getTask().getState() == State.IN_PROGRESS - || operationMonitor.getTask().getState() == State.INITIALIZING - || operationMonitor.getTask().getState() == State.VALIDATING_RULES) { - fireRequestAborted(operationMonitor.getTaskId()); - } - return; - } - } - } - - protected void requestBacgroundHidden(MonitorBaseDto selected) { - for (OperationMonitor operationMonitor : operationMonitorList) { - if (operationMonitor.getTaskId().compareTo(selected.getId()) == 0) { - Log.debug("Found Task Id: " + operationMonitor.getTaskId()); - fireRequestHidden(operationMonitor.getTaskId()); - return; - } - } + protected void requestBacgroundHidden(BackgroundOperationMonitor selected) { + Log.debug("Found Task Id: " + selected.getTaskId()); + fireRequestHidden(selected.getTaskId()); + return; } @Override public void operationMonitorListUpdated( - ArrayList operationMonitorList) { - this.operationMonitorList = operationMonitorList; + ArrayList operationMonitorList) { + this.backgroundOperationMonitorList = operationMonitorList; store.clear(); store.commitChanges(); addChildrensToStore(); store.commitChanges(); - // tree.expandAll(); forceLayout(); } diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundUpdater.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundUpdater.java index ec85298..ea72dc0 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundUpdater.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundUpdater.java @@ -3,8 +3,8 @@ 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.BackgroundOperationMonitor; 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; @@ -35,7 +35,7 @@ public class MonitorBackgroundUpdater extends Timer implements MonitorBackground public void run() { Log.debug("requesting list of operation in background "); TDGWTServiceAsync.INSTANCE - .getBackgroundOperationMonitor(backgroundOperationMonitorSession, new AsyncCallback>() { + .getBackgroundOperationMonitor(backgroundOperationMonitorSession, new AsyncCallback>() { public void onFailure(Throwable caught) { @@ -47,7 +47,7 @@ public class MonitorBackgroundUpdater extends Timer implements MonitorBackground fireRetrieveOperationMonitorListFailed(caught); } - public void onSuccess(ArrayList result) { + public void onSuccess(ArrayList result) { Log.debug("retrieved Operation Monitor List: " + result.size()); @@ -62,7 +62,7 @@ public class MonitorBackgroundUpdater extends Timer implements MonitorBackground } - protected void fireOperationMonitorListUpdated(ArrayList operationMonitorList){ + protected void fireOperationMonitorListUpdated(ArrayList operationMonitorList){ for (MonitorBackgroundUpdaterListener listener : listeners) listener.operationMonitorListUpdated(operationMonitorList); } diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundUpdaterListener.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundUpdaterListener.java index 0d99406..fd82a3b 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundUpdaterListener.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/background/MonitorBackgroundUpdaterListener.java @@ -2,7 +2,7 @@ package org.gcube.portlets.user.td.monitorwidget.client.background; import java.util.ArrayList; -import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor; +import org.gcube.portlets.user.td.gwtservice.shared.monitor.BackgroundOperationMonitor; /** * @@ -15,7 +15,7 @@ public interface MonitorBackgroundUpdaterListener { /** * Called when the list of opration is updated */ - public void operationMonitorListUpdated(ArrayList operationMonitorList); + public void operationMonitorListUpdated(ArrayList operationMonitorList); /**