From ceaa84ec3b09fb0151f45e7f9dbd0292dcb2e747 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Fri, 29 Aug 2014 17:31:26 +0000 Subject: [PATCH] Updated OperationMonitor git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-monitor-widget@99352 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 1 - .../monitorwidget/client/MonitorDialog.java | 64 ++++++----- .../client/details/MonitorDetailPanel.java | 104 ++++++++++++------ .../client/details/tree/MonitorFolderDto.java | 15 ++- .../tree/MonitorTreeDataGenerator.java | 10 +- .../td/monitorwidget/MonitorWidgetTD.gwt.xml | 7 +- 6 files changed, 126 insertions(+), 75 deletions(-) diff --git a/pom.xml b/pom.xml index b627b99..43f17dd 100644 --- a/pom.xml +++ b/pom.xml @@ -289,5 +289,4 @@ - war diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/MonitorDialog.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/MonitorDialog.java index a1c50e4..d776667 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/MonitorDialog.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/MonitorDialog.java @@ -6,28 +6,23 @@ import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpire import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor; import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitorSession; import org.gcube.portlets.user.td.monitorwidget.client.details.MonitorDetailPanel; -import org.gcube.portlets.user.td.monitorwidget.client.resources.ResourceBundle; 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 com.allen_sauer.gwt.log.client.Log; import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; -import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode; import com.sencha.gxt.core.client.util.Margins; import com.sencha.gxt.widget.core.client.FramedPanel; import com.sencha.gxt.widget.core.client.ProgressBar; import com.sencha.gxt.widget.core.client.Window; import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.button.ToolButton; -import com.sencha.gxt.widget.core.client.container.FlowLayoutContainer; -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.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.event.SelectEvent; import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; @@ -42,10 +37,12 @@ import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; public class MonitorDialog extends Window implements MonitorUpdaterListener { public static final int STATUS_POLLING_DELAY = 1000; - private static final String WIDTH = "520px"; + private static final String WIDTH = "640px"; private static final String HEIGHT = "378px"; - private static final String PANELWIDTH = "500px"; + private static final String PANELWIDTH = "620px"; private static final String PANELHEIGHT = "308px"; + private static final String PROGRESSWIDTH = "618px"; + private EventBus eventBus; private String taskId; private MonitorUpdater progressUpdater; @@ -81,7 +78,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { setBodyBorder(false); setResizable(true); setModal(true); - setClosable(false); + setClosable(true); setHeadingText("Progress"); } @@ -99,7 +96,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { ProgressBar progressBar = new ProgressBar(); - progressBar.setWidth("498px"); + progressBar.setWidth(PROGRESSWIDTH); /*FieldSet detailsSet = new FieldSet(); detailsSet.setHeadingText("Details"); @@ -138,8 +135,8 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { btnBackground = new TextButton("Background"); btnBackground.setWidth("70px"); - //btnOk.setIcon(ResourceBundle.INSTANCE.ok()); - //btnOk.setIconAlign(IconAlign.RIGHT); + //btnBackground.setIcon(ResourceBundle.INSTANCE.background()); + //btnBackground.setIconAlign(IconAlign.RIGHT); btnBackground.setTitle("Background"); @@ -156,8 +153,8 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { btnAbort = new TextButton("Abort"); btnAbort.setWidth("70px"); - //btnOk.setIcon(ResourceBundle.INSTANCE.ok()); - //btnOk.setIconAlign(IconAlign.RIGHT); + //btnAbort.setIcon(ResourceBundle.INSTANCE.abort()); + //btnAbort.setIconAlign(IconAlign.RIGHT); btnAbort.setTitle("Abort"); @@ -194,34 +191,34 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { add(panel); - - - - //panel.addButton(btnOk); - - - /* + OperationMonitorSession operationMonitorSession = new OperationMonitorSession( taskId); progressUpdater = new MonitorUpdater(operationMonitorSession); progressUpdater.addListener(new MonitorBarUpdater(progressBar)); progressUpdater.addListener(this); - progressUpdater.scheduleRepeating(STATUS_POLLING_DELAY);*/ + progressUpdater.scheduleRepeating(STATUS_POLLING_DELAY); show(); - //ok.setVisible(false); + btnOk.setVisible(false); + } protected void startAbort() { // TODO Auto-generated method stub + btnOk.setEnabled(false); + btnBackground.setEnabled(false); + btnAbort.setEnabled(false); close(); } protected void startBackground() { // TODO Auto-generated method stub + btnOk.setEnabled(false); + btnBackground.setEnabled(false); + btnAbort.setEnabled(false); close(); - } public void addProgressDialogListener(MonitorDialogListener listener) { @@ -256,8 +253,11 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { } Log.debug("Operation Complete return: " + trId.toString()); this.trId = trId; + btnBackground.setVisible(false); + btnAbort.setVisible(false); + forceLayout(); fireOperationComplete(trId); - hide(); + close(); } @Override @@ -272,7 +272,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { SessionExpiredType.EXPIREDONSERVER)); } else { fireOperationFailed(caught,reason,details); - hide(); + close(); } } @@ -281,7 +281,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { if (trId != null) { fireOperationStopped(trId, reason, details); } - hide(); + close(); } @@ -296,6 +296,8 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { this.reason = reason; this.details = details; btnOk.setVisible(true); + btnBackground.setVisible(false); + btnAbort.setVisible(false); forceLayout(); } @@ -321,12 +323,13 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { @Override public void monitorAborted() { fireOperationAborted(); - + close(); } @Override public void monitorPutInBackground() { fireOperationPutInBackground(); + close(); } @@ -376,7 +379,8 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener { }*/ super.initTools(); - + + closeBtn.setVisible(false); /* closeBtn.addSelectHandler(new SelectHandler() { diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/MonitorDetailPanel.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/MonitorDetailPanel.java index 51afd92..52c1d29 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/MonitorDetailPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/MonitorDetailPanel.java @@ -47,10 +47,17 @@ import com.sencha.gxt.widget.core.client.toolbar.ToolBar; import com.sencha.gxt.widget.core.client.treegrid.TreeGrid; public class MonitorDetailPanel extends FramedPanel { - protected static final String WIDTH = "498px"; + protected static final String WIDTH = "618px"; protected static final String HEIGHT = "256px"; - protected static final String GRIDHEIGHT = "212px"; + protected static final String GRIDHEIGHT = "332px"; + + 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 MonitorDetailPanel thisPanel; protected Menu contextMenu; @@ -90,8 +97,6 @@ public class MonitorDetailPanel extends FramedPanel { } - - protected void init() { setWidth(WIDTH); setHeight(HEIGHT); @@ -100,18 +105,16 @@ public class MonitorDetailPanel extends FramedPanel { forceLayoutOnResize = true; } - - protected void create() { con = new VerticalLayoutContainer(); - //con.setScrollMode(ScrollMode.AUTO); + // con.setScrollMode(ScrollMode.AUTO); store = new TreeStore(new KeyProvider()); - + addChildrensToStore(); - + ColumnConfig cc1 = new ColumnConfig( - new ToStringValueProvider("task"), 168, "Task"); + new ToStringValueProvider("task"), CC1WIDTH, "Task"); cc1.setHeader("Task"); cc1.setCell(new AbstractCell() { @@ -131,25 +134,26 @@ public class MonitorDetailPanel extends FramedPanel { public String getValue(MonitorBaseDto object) { String state = null; if (object instanceof MonitorValidationJobSDto) { - state = ((MonitorValidationJobSDto) object).getWorkerState().toString(); + 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); + WorkerState workerState = WorkerStateParser.parse(value); ((MonitorValidationJobSDto) object) .setWorkerState(workerState); - + } if (object instanceof MonitorFolderDto) { - ((MonitorFolderDto) object) - .setState(value); + ((MonitorFolderDto) object).setState(value); } } @@ -157,10 +161,44 @@ public class MonitorDetailPanel extends FramedPanel { public String getPath() { return "status"; } - }, 100, "Status"); + }, CC2WIDTH, "Status"); cc2.setHeader("Status"); - - ColumnConfig cc3 = new ColumnConfig( + + ColumnConfig cc3 = new ColumnConfig( + new ValueProvider() { + + @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 cc4 = new ColumnConfig( new ValueProvider() { @Override @@ -174,7 +212,7 @@ public class MonitorDetailPanel extends FramedPanel { Float f = ((MonitorFolderDto) object).getProgress(); d = new Double(f); } - + return d; } @@ -185,8 +223,8 @@ public class MonitorDetailPanel extends FramedPanel { .setProgress(value.floatValue()); } if (object instanceof MonitorFolderDto) { - ((MonitorFolderDto) object) - .setProgress(value.floatValue()); + ((MonitorFolderDto) object).setProgress(value + .floatValue()); } } @@ -194,8 +232,8 @@ public class MonitorDetailPanel extends FramedPanel { public String getPath() { return "progress"; } - }, 100, "Progress"); - cc3.setHeader("Progress"); + }, CC4WIDTH, "Progress"); + cc4.setHeader("Progress"); ProgressBarCell progress = new ProgressBarCell() { @Override @@ -205,15 +243,14 @@ public class MonitorDetailPanel extends FramedPanel { }; progress.setProgressText("{0}% Complete"); progress.setWidth(110); - - cc3.setCell(progress); - - + cc4.setCell(progress); + List> l = new ArrayList>(); l.add(cc1); l.add(cc2); l.add(cc3); + l.add(cc4); ColumnModel cm = new ColumnModel(l); tree = new TreeGrid(store, cm, cc1); @@ -223,7 +260,6 @@ public class MonitorDetailPanel extends FramedPanel { tree.setColumnResize(true); tree.getView().setAutoExpandColumn(cc1); tree.setHeight(GRIDHEIGHT); - IconProvider iconProvider = new IconProvider() { @@ -267,7 +303,7 @@ public class MonitorDetailPanel extends FramedPanel { } }); - //createContextMenu(); + // createContextMenu(); ToolBar toolBar = new ToolBar(); @@ -297,11 +333,11 @@ public class MonitorDetailPanel extends FramedPanel { }); toolBar.add(btnCollapseAll); - con.add(toolBar, new VerticalLayoutData(1, -1,new Margins(0))); + 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)); - + tree.expandAll(); forceLayout(); @@ -317,17 +353,17 @@ public class MonitorDetailPanel extends FramedPanel { public void update(OperationMonitor operationMonitor) { this.operationMonitor = operationMonitor; store.clear(); + store.commitChanges(); addChildrensToStore(); store.commitChanges(); tree.expandAll(); forceLayout(); - } private void addChildrensToStore() { gen = new MonitorTreeDataGenerator(operationMonitor); - + MonitorFolderDto root = gen.getRoot(); for (MonitorBaseDto base : root.getChildrens()) { store.add(base); diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorFolderDto.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorFolderDto.java index ea084d6..2194b88 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorFolderDto.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorFolderDto.java @@ -15,17 +15,20 @@ public class MonitorFolderDto extends MonitorBaseDto { protected ArrayList childrens; protected String type; protected String state; + protected String humanReadableStatus; protected float progress; public MonitorFolderDto(){ } - public MonitorFolderDto(String type,String id,String description, String state, float progress, ArrayList childrens){ + public MonitorFolderDto(String type,String id,String description, String state, + String humanReadableStatus, float progress, ArrayList childrens){ super(id); this.type=type; this.description=description; this.state=state; + this.humanReadableStatus=humanReadableStatus; this.progress=progress; this.childrens=childrens; @@ -73,6 +76,16 @@ public class MonitorFolderDto extends MonitorBaseDto { public void setState(String state) { this.state = state; } + + + + public String getHumanReadableStatus() { + return humanReadableStatus; + } + + public void setHumanReadableStatus(String humanReadableStatus) { + this.humanReadableStatus = humanReadableStatus; + } @Override public String toString() { diff --git a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorTreeDataGenerator.java b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorTreeDataGenerator.java index f43354e..cea4768 100644 --- a/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorTreeDataGenerator.java +++ b/src/main/java/org/gcube/portlets/user/td/monitorwidget/client/details/tree/MonitorTreeDataGenerator.java @@ -42,22 +42,22 @@ public class MonitorTreeDataGenerator { } MonitorFolderDto foldJob = new MonitorFolderDto("job", task.getId() + "-" + job.getId(), job.getDescription(), - job.getWorkerState().toString(), job.getProgress(), + job.getWorkerState().toString(), job.getHumaReadableStatus(),job.getProgress(), validations); jobs.add(foldJob); } MonitorFolderDto foldTask = new MonitorFolderDto("task", task.getId(), sdf.format(task.getStartTime()), task - .getState().toString(), task.getProgress(), jobs); + .getState().toString(), "",task.getProgress(), jobs); childrens.add(foldTask); - root = new MonitorFolderDto("root", "-1", "root", "root", 0, + root = new MonitorFolderDto("root", "-1", "root", "root", "",0, childrens); Log.debug("Generated root"); //printRecorsive(root); } else { - root = new MonitorFolderDto("root", "-1", "root", "root", 0, + root = new MonitorFolderDto("root", "-1", "root", "root", "", 0, childrens); Log.debug("Generated root without childrens"); } @@ -70,7 +70,7 @@ public class MonitorTreeDataGenerator { protected void printRecorsive(MonitorFolderDto root) { for (MonitorBaseDto base : root.getChildrens()) { Log.debug("+++"); - Log.debug("Children:" + base.toString()); + Log.debug("Children:[id=" +base.getId() +", toString="+base.toString()+"]"); if (base instanceof MonitorFolderDto) { printRecorsive((MonitorFolderDto) base); } diff --git a/src/main/resources/org/gcube/portlets/user/td/monitorwidget/MonitorWidgetTD.gwt.xml b/src/main/resources/org/gcube/portlets/user/td/monitorwidget/MonitorWidgetTD.gwt.xml index 179a03d..b10d50a 100644 --- a/src/main/resources/org/gcube/portlets/user/td/monitorwidget/MonitorWidgetTD.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/td/monitorwidget/MonitorWidgetTD.gwt.xml @@ -23,15 +23,14 @@ - + - +