Updated OperationMonitor
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-monitor-widget@99337 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
e4fe8efe0e
commit
7ea82a3f6a
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
|
||||||
|
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.DevMode"/>
|
||||||
|
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="MonitorWidgetTD.html"/>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/tabular-data-monitor-widget"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gdt.eclipse.maven.mavenClasspathProvider"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -startupUrl MonitorWidgetTD.html -logLevel INFO -codeServerPort 9997 -port 8888"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="tabular-data-monitor-widget"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m -Dgwt.nowarn.legacy.tools"/>
|
||||||
|
</launchConfiguration>
|
1
pom.xml
1
pom.xml
|
@ -289,4 +289,5 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
<packaging>war</packaging>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -6,23 +6,31 @@ 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.OperationMonitor;
|
||||||
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitorSession;
|
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.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.event.SessionExpiredEvent;
|
||||||
import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType;
|
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.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.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.core.client.util.Margins;
|
||||||
import com.sencha.gxt.widget.core.client.FramedPanel;
|
import com.sencha.gxt.widget.core.client.FramedPanel;
|
||||||
import com.sencha.gxt.widget.core.client.ProgressBar;
|
import com.sencha.gxt.widget.core.client.ProgressBar;
|
||||||
import com.sencha.gxt.widget.core.client.Window;
|
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.TextButton;
|
||||||
import com.sencha.gxt.widget.core.client.button.ToolButton;
|
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.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.HBoxLayoutAlign;
|
||||||
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
|
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;
|
||||||
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
|
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
|
||||||
import com.sencha.gxt.widget.core.client.form.FieldSet;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AddColumnProgressDialog is a Dialog that show progress of AddColumn
|
* AddColumnProgressDialog is a Dialog that show progress of AddColumn
|
||||||
|
@ -34,12 +42,16 @@ import com.sencha.gxt.widget.core.client.form.FieldSet;
|
||||||
public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
|
|
||||||
public static final int STATUS_POLLING_DELAY = 1000;
|
public static final int STATUS_POLLING_DELAY = 1000;
|
||||||
private static final String WIDTH = "400px";
|
private static final String WIDTH = "520px";
|
||||||
private static final String HEIGHT = "120px";
|
private static final String HEIGHT = "378px";
|
||||||
|
private static final String PANELWIDTH = "500px";
|
||||||
|
private static final String PANELHEIGHT = "308px";
|
||||||
private EventBus eventBus;
|
private EventBus eventBus;
|
||||||
private String taskId;
|
private String taskId;
|
||||||
private MonitorUpdater progressUpdater;
|
private MonitorUpdater progressUpdater;
|
||||||
private TextButton ok;
|
private TextButton btnOk;
|
||||||
|
private TextButton btnBackground;
|
||||||
|
private TextButton btnAbort;
|
||||||
private TRId trId;
|
private TRId trId;
|
||||||
private String reason;
|
private String reason;
|
||||||
private String details;
|
private String details;
|
||||||
|
@ -69,24 +81,32 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
setBodyBorder(false);
|
setBodyBorder(false);
|
||||||
setResizable(true);
|
setResizable(true);
|
||||||
setModal(true);
|
setModal(true);
|
||||||
|
setClosable(false);
|
||||||
setHeadingText("Progress");
|
setHeadingText("Progress");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void create(){
|
protected void create(){
|
||||||
FramedPanel panel = new FramedPanel();
|
FramedPanel panel = new FramedPanel();
|
||||||
|
panel.setWidth(PANELWIDTH);
|
||||||
|
panel.setHeight(PANELHEIGHT);
|
||||||
panel.setHeaderVisible(false);
|
panel.setHeaderVisible(false);
|
||||||
panel.setBodyBorder(false);
|
panel.setBodyBorder(false);
|
||||||
|
|
||||||
VerticalLayoutContainer v = new VerticalLayoutContainer();
|
VerticalLayoutContainer v = new VerticalLayoutContainer();
|
||||||
|
/*FlowLayoutContainer progressDetailContainer = new FlowLayoutContainer();
|
||||||
ProgressBar progressBar = new ProgressBar();
|
progressDetailContainer.setScrollMode(ScrollMode.AUTO);
|
||||||
|
MarginData layoutData = new MarginData(new Margins(5, 5, 5, 5));*/
|
||||||
|
|
||||||
FieldSet detailsSet = new FieldSet();
|
|
||||||
|
ProgressBar progressBar = new ProgressBar();
|
||||||
|
progressBar.setWidth("498px");
|
||||||
|
|
||||||
|
/*FieldSet detailsSet = new FieldSet();
|
||||||
detailsSet.setHeadingText("Details");
|
detailsSet.setHeadingText("Details");
|
||||||
detailsSet.setCollapsible(true);
|
detailsSet.setCollapsible(true);*/
|
||||||
|
|
||||||
monitorDetailPanel=new MonitorDetailPanel(eventBus);
|
monitorDetailPanel=new MonitorDetailPanel(eventBus);
|
||||||
detailsSet.add(monitorDetailPanel);
|
//detailsSet.add(monitorDetailPanel);
|
||||||
|
|
||||||
/*TextField
|
/*TextField
|
||||||
|
|
||||||
|
@ -101,33 +121,107 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
RootPanel.get().add(v);
|
RootPanel.get().add(v);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ok = new TextButton("OK");
|
btnOk = new TextButton("Ok");
|
||||||
ok.addSelectHandler(new SelectHandler() {
|
btnOk.setWidth("70px");
|
||||||
|
//btnOk.setIcon(ResourceBundle.INSTANCE.ok());
|
||||||
|
//btnOk.setIconAlign(IconAlign.RIGHT);
|
||||||
|
btnOk.setTitle("Ok");
|
||||||
|
|
||||||
|
|
||||||
|
btnOk.addSelectHandler(new SelectHandler() {
|
||||||
|
|
||||||
public void onSelect(SelectEvent event) {
|
public void onSelect(SelectEvent event) {
|
||||||
updateInvocation();
|
updateInvocation();
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
v.add(progressBar,
|
|
||||||
new VerticalLayoutData(1, 1, new Margins(5, 5, 5, 5)));
|
|
||||||
|
|
||||||
v.add(detailsSet,new VerticalLayoutData(1, 1, new Margins(5, 5, 5, 5)));
|
btnBackground = new TextButton("Background");
|
||||||
|
btnBackground.setWidth("70px");
|
||||||
|
//btnOk.setIcon(ResourceBundle.INSTANCE.ok());
|
||||||
|
//btnOk.setIconAlign(IconAlign.RIGHT);
|
||||||
|
btnBackground.setTitle("Background");
|
||||||
|
|
||||||
|
|
||||||
|
btnBackground.addSelectHandler(new SelectHandler() {
|
||||||
|
|
||||||
|
public void onSelect(SelectEvent event) {
|
||||||
|
startBackground();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
btnAbort = new TextButton("Abort");
|
||||||
|
btnAbort.setWidth("70px");
|
||||||
|
//btnOk.setIcon(ResourceBundle.INSTANCE.ok());
|
||||||
|
//btnOk.setIconAlign(IconAlign.RIGHT);
|
||||||
|
btnAbort.setTitle("Abort");
|
||||||
|
|
||||||
|
|
||||||
|
btnAbort.addSelectHandler(new SelectHandler() {
|
||||||
|
|
||||||
|
public void onSelect(SelectEvent event) {
|
||||||
|
startAbort();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
HBoxLayoutContainer flowButton = new HBoxLayoutContainer();
|
||||||
|
flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
|
||||||
|
flowButton.setPack(BoxLayoutPack.CENTER);
|
||||||
|
|
||||||
|
flowButton.add(btnOk, new BoxLayoutData(new Margins(0, 4, 0, 4)));
|
||||||
|
flowButton.add(btnBackground, new BoxLayoutData(new Margins(0, 4, 0, 4)));
|
||||||
|
flowButton.add(btnAbort, new BoxLayoutData(new Margins(0, 4, 0, 4)));
|
||||||
|
|
||||||
|
|
||||||
|
v.add(progressBar,
|
||||||
|
new VerticalLayoutData(1, -1, new Margins(5, 5, 5, 5)));
|
||||||
|
|
||||||
|
v.add(monitorDetailPanel,new VerticalLayoutData(1, -1, new Margins(5, 5, 5, 5)));
|
||||||
|
|
||||||
|
v.add(flowButton, new VerticalLayoutData(1, 36,
|
||||||
|
new Margins(5, 5, 5, 5)));
|
||||||
|
|
||||||
|
/*progressDetailContainer.add(progressBar, layoutData);
|
||||||
|
progressDetailContainer.add(monitorDetailPanel, layoutData);*/
|
||||||
|
|
||||||
panel.add(v);
|
panel.add(v);
|
||||||
panel.addButton(ok);
|
|
||||||
add(panel);
|
add(panel);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//panel.addButton(btnOk);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
OperationMonitorSession operationMonitorSession = new OperationMonitorSession(
|
OperationMonitorSession operationMonitorSession = new OperationMonitorSession(
|
||||||
taskId);
|
taskId);
|
||||||
progressUpdater = new MonitorUpdater(operationMonitorSession);
|
progressUpdater = new MonitorUpdater(operationMonitorSession);
|
||||||
progressUpdater.addListener(new MonitorBarUpdater(progressBar));
|
progressUpdater.addListener(new MonitorBarUpdater(progressBar));
|
||||||
|
|
||||||
progressUpdater.addListener(this);
|
progressUpdater.addListener(this);
|
||||||
progressUpdater.scheduleRepeating(STATUS_POLLING_DELAY);
|
progressUpdater.scheduleRepeating(STATUS_POLLING_DELAY);*/
|
||||||
show();
|
show();
|
||||||
ok.setVisible(false);
|
//ok.setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void startAbort() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void startBackground() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
close();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addProgressDialogListener(MonitorDialogListener listener) {
|
public void addProgressDialogListener(MonitorDialogListener listener) {
|
||||||
|
@ -143,6 +237,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
if(monitorDetailPanel!=null){
|
if(monitorDetailPanel!=null){
|
||||||
monitorDetailPanel.update(operationMonitor);
|
monitorDetailPanel.update(operationMonitor);
|
||||||
}
|
}
|
||||||
|
forceLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +246,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
if(monitorDetailPanel!=null){
|
if(monitorDetailPanel!=null){
|
||||||
monitorDetailPanel.update(operationMonitor);
|
monitorDetailPanel.update(operationMonitor);
|
||||||
}
|
}
|
||||||
|
forceLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -169,15 +264,17 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
public void monitorFailed(Throwable caught, String reason, String details, OperationMonitor operationMonitor) {
|
public void monitorFailed(Throwable caught, String reason, String details, OperationMonitor operationMonitor) {
|
||||||
if(monitorDetailPanel!=null){
|
if(monitorDetailPanel!=null){
|
||||||
monitorDetailPanel.update(operationMonitor);
|
monitorDetailPanel.update(operationMonitor);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
forceLayout();
|
||||||
if (caught instanceof TDGWTSessionExpiredException) {
|
if (caught instanceof TDGWTSessionExpiredException) {
|
||||||
eventBus.fireEvent(new SessionExpiredEvent(
|
eventBus.fireEvent(new SessionExpiredEvent(
|
||||||
SessionExpiredType.EXPIREDONSERVER));
|
SessionExpiredType.EXPIREDONSERVER));
|
||||||
} else {
|
} else {
|
||||||
fireOperationFailed(caught,reason,details);
|
fireOperationFailed(caught,reason,details);
|
||||||
hide();
|
hide();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateInvocation() {
|
public void updateInvocation() {
|
||||||
|
@ -198,8 +295,8 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
this.trId = trId;
|
this.trId = trId;
|
||||||
this.reason = reason;
|
this.reason = reason;
|
||||||
this.details = details;
|
this.details = details;
|
||||||
ok.setVisible(true);
|
btnOk.setVisible(true);
|
||||||
|
forceLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -207,6 +304,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
if(monitorDetailPanel!=null){
|
if(monitorDetailPanel!=null){
|
||||||
monitorDetailPanel.update(operationMonitor);
|
monitorDetailPanel.update(operationMonitor);
|
||||||
}
|
}
|
||||||
|
forceLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +313,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
if(monitorDetailPanel!=null){
|
if(monitorDetailPanel!=null){
|
||||||
monitorDetailPanel.update(operationMonitor);
|
monitorDetailPanel.update(operationMonitor);
|
||||||
}
|
}
|
||||||
|
forceLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -263,7 +361,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void initTools() {
|
protected void initTools() {
|
||||||
if (backgroundBtnEnabled) {
|
/*if (backgroundBtnEnabled) {
|
||||||
backgroundBtn = new ToolButton(ToolButton.CLOSE);
|
backgroundBtn = new ToolButton(ToolButton.CLOSE);
|
||||||
backgroundBtn.setToolTip("Put in the background");
|
backgroundBtn.setToolTip("Put in the background");
|
||||||
backgroundBtn.addSelectHandler(new SelectHandler() {
|
backgroundBtn.addSelectHandler(new SelectHandler() {
|
||||||
|
@ -275,16 +373,17 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
});
|
});
|
||||||
|
|
||||||
header.addTool(backgroundBtn);
|
header.addTool(backgroundBtn);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
super.initTools();
|
super.initTools();
|
||||||
|
|
||||||
|
/*
|
||||||
closeBtn.addSelectHandler(new SelectHandler() {
|
closeBtn.addSelectHandler(new SelectHandler() {
|
||||||
|
|
||||||
public void onSelect(SelectEvent event) {
|
public void onSelect(SelectEvent event) {
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
});
|
});*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,6 +392,11 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateOperationMonitor(OperationMonitor operationMonitor){
|
||||||
|
if(monitorDetailPanel!=null){
|
||||||
|
monitorDetailPanel.update(operationMonitor);
|
||||||
|
}
|
||||||
|
forceLayout();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,64 @@
|
||||||
package org.gcube.portlets.user.td.monitorwidget.client;
|
package org.gcube.portlets.user.td.monitorwidget.client;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.td.gwtservice.shared.UIOperationsId;
|
||||||
|
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;
|
||||||
|
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.WorkerState;
|
||||||
|
|
||||||
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
import com.google.gwt.core.client.EntryPoint;
|
import com.google.gwt.core.client.EntryPoint;
|
||||||
import com.google.web.bindery.event.shared.SimpleEventBus;
|
import com.google.web.bindery.event.shared.SimpleEventBus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author "Giancarlo Panichi"
|
* @author "Giancarlo Panichi" email: <a
|
||||||
* email: <a 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 MonitorWidgetEntry implements EntryPoint {
|
public class MonitorWidgetEntry implements EntryPoint {
|
||||||
|
|
||||||
public void onModuleLoad() {
|
public void onModuleLoad() {
|
||||||
SimpleEventBus eventBus=new SimpleEventBus();
|
Log.debug("Test MonitorWidget");
|
||||||
MonitorDialog monitorWidget= new MonitorDialog("taskId",eventBus);
|
SimpleEventBus eventBus = new SimpleEventBus();
|
||||||
|
MonitorDialog monitorWidget = new MonitorDialog("1", eventBus);
|
||||||
monitorWidget.show();
|
monitorWidget.show();
|
||||||
|
OperationMonitor operationMonitor = new OperationMonitor("1",
|
||||||
|
UIOperationsId.EditRow);
|
||||||
|
operationMonitor.setTask(createTaskForTest());
|
||||||
|
monitorWidget.updateOperationMonitor(operationMonitor);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private TaskS createTaskForTest() {
|
||||||
|
ArrayList<ValidationsJobS> validationsJobs = new ArrayList<ValidationsJobS>();
|
||||||
|
ValidationsJobS validationJobS = new ValidationsJobS("1",
|
||||||
|
WorkerState.IN_PROGRESS, 0.5f, "Row Validate", null,
|
||||||
|
"Validation in progress");
|
||||||
|
validationsJobs.add(validationJobS);
|
||||||
|
|
||||||
|
ArrayList<JobS> jobs = new ArrayList<JobS>();
|
||||||
|
JobS job1 = new JobS("1", 0.8f, "Edit Row Job for Human",
|
||||||
|
"Edit Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
|
||||||
|
jobs.add(job1);
|
||||||
|
|
||||||
|
JobS job2 = new JobS("2", 0.3f, "Add Row Job for Human",
|
||||||
|
"Add Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
|
||||||
|
jobs.add(job2);
|
||||||
|
|
||||||
|
JobS job3 = new JobS("3", 0.72f, "Delete Job for Human",
|
||||||
|
"Delete Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
|
||||||
|
jobs.add(job3);
|
||||||
|
|
||||||
|
TaskS task = new TaskS("1", 0.3f, State.IN_PROGRESS, null, "default",
|
||||||
|
new Date(), null, jobs);
|
||||||
|
|
||||||
|
return task;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ import java.util.List;
|
||||||
|
|
||||||
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.WorkerStateParser;
|
||||||
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorBaseDto;
|
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.MonitorFolderDto;
|
||||||
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorTreeDataGenerator;
|
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorTreeDataGenerator;
|
||||||
|
@ -22,7 +24,7 @@ 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.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;
|
||||||
|
@ -45,8 +47,10 @@ 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;
|
||||||
|
|
||||||
public class MonitorDetailPanel extends FramedPanel {
|
public class MonitorDetailPanel extends FramedPanel {
|
||||||
protected String WIDTH = "380px";
|
protected static final String WIDTH = "498px";
|
||||||
protected String HEIGHT = "200px";
|
protected static final String HEIGHT = "256px";
|
||||||
|
protected static final String GRIDHEIGHT = "212px";
|
||||||
|
|
||||||
protected MonitorDetailPanel thisPanel;
|
protected MonitorDetailPanel thisPanel;
|
||||||
|
|
||||||
protected Menu contextMenu;
|
protected Menu contextMenu;
|
||||||
|
@ -90,9 +94,9 @@ public class MonitorDetailPanel extends FramedPanel {
|
||||||
if (tree != null) {
|
if (tree != null) {
|
||||||
remove(tree);
|
remove(tree);
|
||||||
}
|
}
|
||||||
if(operationMonitor!=null){
|
|
||||||
createTreeData();
|
createTreeData();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void init() {
|
protected void init() {
|
||||||
|
@ -110,7 +114,7 @@ public class MonitorDetailPanel extends FramedPanel {
|
||||||
|
|
||||||
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());
|
||||||
|
|
||||||
|
@ -136,34 +140,42 @@ public class MonitorDetailPanel extends FramedPanel {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ColumnConfig<MonitorBaseDto, Double> cc2 = new ColumnConfig<MonitorBaseDto, Double>(
|
ColumnConfig<MonitorBaseDto, String> cc2 = new ColumnConfig<MonitorBaseDto, String>(
|
||||||
new ValueProvider<MonitorBaseDto, Double>() {
|
new ValueProvider<MonitorBaseDto, String>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Double getValue(MonitorBaseDto object) {
|
public String getValue(MonitorBaseDto object) {
|
||||||
Double d = null;
|
String state = null;
|
||||||
if (object instanceof MonitorValidationJobSDto) {
|
if (object instanceof MonitorValidationJobSDto) {
|
||||||
Float f = ((MonitorValidationJobSDto) object).getProgress();
|
state = ((MonitorValidationJobSDto) object).getWorkerState().toString();
|
||||||
d = new Double(f);
|
|
||||||
}
|
}
|
||||||
return d;
|
if (object instanceof MonitorFolderDto) {
|
||||||
|
state = ((MonitorFolderDto) object).getState();
|
||||||
|
}
|
||||||
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValue(MonitorBaseDto object, Double value) {
|
public void setValue(MonitorBaseDto object, String value) {
|
||||||
if (object instanceof MonitorValidationJobSDto) {
|
if (object instanceof MonitorValidationJobSDto) {
|
||||||
|
WorkerState workerState=WorkerStateParser.parse(value);
|
||||||
((MonitorValidationJobSDto) object)
|
((MonitorValidationJobSDto) object)
|
||||||
.setProgress(value.floatValue());
|
.setWorkerState(workerState);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (object instanceof MonitorFolderDto) {
|
||||||
|
((MonitorFolderDto) object)
|
||||||
|
.setState(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPath() {
|
public String getPath() {
|
||||||
return "progress";
|
return "status";
|
||||||
}
|
}
|
||||||
}, 140, "Progress");
|
}, 100, "Status");
|
||||||
cc2.setHeader("Progress");
|
cc2.setHeader("Status");
|
||||||
|
/*
|
||||||
ProgressBarCell progress = new ProgressBarCell() {
|
ProgressBarCell progress = new ProgressBarCell() {
|
||||||
@Override
|
@Override
|
||||||
public boolean handlesSelection() {
|
public boolean handlesSelection() {
|
||||||
|
@ -173,10 +185,60 @@ public class MonitorDetailPanel extends FramedPanel {
|
||||||
progress.setProgressText("{0}% Complete");
|
progress.setProgressText("{0}% Complete");
|
||||||
progress.setWidth(140);
|
progress.setWidth(140);
|
||||||
cc2.setCell(progress);
|
cc2.setCell(progress);
|
||||||
|
*/
|
||||||
|
ColumnConfig<MonitorBaseDto, Double> cc3 = 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";
|
||||||
|
}
|
||||||
|
}, 100, "Progress");
|
||||||
|
cc3.setHeader("Progress");
|
||||||
|
|
||||||
|
ProgressBarCell progress = new ProgressBarCell() {
|
||||||
|
@Override
|
||||||
|
public boolean handlesSelection() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
progress.setProgressText("{0}% Complete");
|
||||||
|
progress.setWidth(110);
|
||||||
|
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);
|
||||||
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);
|
||||||
|
@ -185,6 +247,8 @@ public class MonitorDetailPanel extends FramedPanel {
|
||||||
tree.setLoadMask(true);
|
tree.setLoadMask(true);
|
||||||
tree.setColumnResize(true);
|
tree.setColumnResize(true);
|
||||||
tree.getView().setAutoExpandColumn(cc1);
|
tree.getView().setAutoExpandColumn(cc1);
|
||||||
|
tree.setHeight(GRIDHEIGHT);
|
||||||
|
|
||||||
|
|
||||||
IconProvider<MonitorBaseDto> iconProvider = new IconProvider<MonitorBaseDto>() {
|
IconProvider<MonitorBaseDto> iconProvider = new IconProvider<MonitorBaseDto>() {
|
||||||
|
|
||||||
|
@ -258,11 +322,11 @@ public class MonitorDetailPanel extends FramedPanel {
|
||||||
});
|
});
|
||||||
toolBar.add(btnCollapseAll);
|
toolBar.add(btnCollapseAll);
|
||||||
|
|
||||||
con.add(toolBar, new VerticalLayoutData(1, -1));
|
con.add(toolBar, new VerticalLayoutData(1, -1,new Margins(0)));
|
||||||
con.add(tree, new VerticalLayoutData(1, -1));
|
con.add(tree, new VerticalLayoutData(1, -1, new Margins(0)));
|
||||||
|
|
||||||
add(con, new MarginData(0));
|
add(con, new MarginData(0));
|
||||||
|
|
||||||
forceLayout();
|
forceLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -279,6 +343,7 @@ public class MonitorDetailPanel extends FramedPanel {
|
||||||
public void update(OperationMonitor operationMonitor) {
|
public void update(OperationMonitor operationMonitor) {
|
||||||
this.operationMonitor = operationMonitor;
|
this.operationMonitor = operationMonitor;
|
||||||
draw();
|
draw();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,16 +14,21 @@ public class MonitorFolderDto extends MonitorBaseDto {
|
||||||
protected String description;
|
protected String description;
|
||||||
protected ArrayList<MonitorBaseDto> childrens;
|
protected ArrayList<MonitorBaseDto> childrens;
|
||||||
protected String type;
|
protected String type;
|
||||||
|
protected String state;
|
||||||
|
protected float progress;
|
||||||
|
|
||||||
public MonitorFolderDto(){
|
public MonitorFolderDto(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public MonitorFolderDto(String type,String id,String description, ArrayList<MonitorBaseDto> childrens){
|
public MonitorFolderDto(String type,String id,String description, String state, float progress, ArrayList<MonitorBaseDto> childrens){
|
||||||
super(id);
|
super(id);
|
||||||
this.type=type;
|
this.type=type;
|
||||||
this.description=description;
|
this.description=description;
|
||||||
|
this.state=state;
|
||||||
|
this.progress=progress;
|
||||||
this.childrens=childrens;
|
this.childrens=childrens;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,6 +57,22 @@ public class MonitorFolderDto extends MonitorBaseDto {
|
||||||
this.description = description;
|
this.description = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getProgress() {
|
||||||
|
return progress;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProgress(float progress) {
|
||||||
|
this.progress = progress;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setState(String state) {
|
||||||
|
this.state = state;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class MonitorTreeDataGenerator {
|
||||||
public MonitorTreeDataGenerator(OperationMonitor operationMonitor) {
|
public MonitorTreeDataGenerator(OperationMonitor operationMonitor) {
|
||||||
Log.debug("MonitorTreeDataGenerator");
|
Log.debug("MonitorTreeDataGenerator");
|
||||||
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
|
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
|
||||||
if (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>();
|
||||||
for (JobS job : task.getJobs()) {
|
for (JobS job : task.getJobs()) {
|
||||||
|
@ -42,19 +42,23 @@ public class MonitorTreeDataGenerator {
|
||||||
}
|
}
|
||||||
MonitorFolderDto foldJob = new MonitorFolderDto("job",
|
MonitorFolderDto foldJob = new MonitorFolderDto("job",
|
||||||
task.getId() + "-" + job.getId(), job.getDescription(),
|
task.getId() + "-" + job.getId(), job.getDescription(),
|
||||||
|
job.getWorkerState().toString(), job.getProgress(),
|
||||||
validations);
|
validations);
|
||||||
jobs.add(foldJob);
|
jobs.add(foldJob);
|
||||||
}
|
}
|
||||||
MonitorFolderDto foldTask = new MonitorFolderDto("task",
|
MonitorFolderDto foldTask = new MonitorFolderDto("task",
|
||||||
task.getId(), sdf.format(task.getStartTime()), jobs);
|
task.getId(), sdf.format(task.getStartTime()), task
|
||||||
|
.getState().toString(), task.getProgress(), jobs);
|
||||||
childrens.add(foldTask);
|
childrens.add(foldTask);
|
||||||
|
|
||||||
root = new MonitorFolderDto("root", "-1", "root", childrens);
|
root = new MonitorFolderDto("root", "-1", "root", "root", 0,
|
||||||
|
childrens);
|
||||||
Log.debug("Generated root");
|
Log.debug("Generated root");
|
||||||
// printRecorsive(root);
|
printRecorsive(root);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
root = new MonitorFolderDto("root", "-1", "root", childrens);
|
root = new MonitorFolderDto("root", "-1", "root", "root", 0,
|
||||||
|
childrens);
|
||||||
Log.debug("Generated root without childrens");
|
Log.debug("Generated root without childrens");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
@CHARSET "UTF-8";
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,44 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module rename-to='MonitorWidgetTD'>
|
<module rename-to='MonitorWidgetTD'>
|
||||||
<!-- Inherit the core Web Toolkit stuff. -->
|
<!-- Inherit the core Web Toolkit stuff. -->
|
||||||
<inherits name='com.google.gwt.user.User' />
|
<inherits name='com.google.gwt.user.User' />
|
||||||
|
|
||||||
<!-- We need the JUnit module in the main module, -->
|
<!-- We need the JUnit module in the main module, -->
|
||||||
<!-- otherwise eclipse complains (Google plugin bug?) -->
|
<!-- otherwise eclipse complains (Google plugin bug?) -->
|
||||||
<inherits name='com.google.gwt.junit.JUnit' />
|
<inherits name='com.google.gwt.junit.JUnit' />
|
||||||
|
|
||||||
<!-- Inherit the default GWT style sheet. You can change -->
|
<!-- Inherit the default GWT style sheet. You can change -->
|
||||||
<!-- the theme of your GWT application by uncommenting -->
|
<!-- the theme of your GWT application by uncommenting -->
|
||||||
<!-- any one of the following lines. -->
|
<!-- any one of the following lines. -->
|
||||||
<inherits name='com.google.gwt.user.theme.standard.Standard' />
|
<inherits name='com.google.gwt.user.theme.standard.Standard' />
|
||||||
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
|
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
|
||||||
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
|
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
|
||||||
|
|
||||||
<!-- Other module inherits -->
|
<!-- Other module inherits -->
|
||||||
<inherits name='com.sencha.gxt.ui.GXT' />
|
<inherits name='com.sencha.gxt.ui.GXT' />
|
||||||
<inherits name="com.allen_sauer.gwt.log.gwt-log-TRACE" />
|
<inherits name="com.allen_sauer.gwt.log.gwt-log-TRACE" />
|
||||||
<inherits name='org.gcube.portlets.user.td.gwtservice.TDGWTService' />
|
<inherits name="com.google.gwt.resources.Resources" />
|
||||||
|
|
||||||
|
<inherits name='org.gcube.portlets.user.td.gwtservice.TDGWTService' />
|
||||||
<!-- Specify the app entry point class. -->
|
|
||||||
<!-- <entry-point class='org.gcube.portlets.user.monitorwidget.client.MonitorWidgetEntry' /> -->
|
|
||||||
|
<!-- Specify the app entry point class. -->
|
||||||
|
<entry-point
|
||||||
|
class='org.gcube.portlets.user.td.monitorwidget.client.MonitorWidgetEntry' />
|
||||||
|
|
||||||
|
<!-- Logger -->
|
||||||
|
<set-property name="log_DivLogger" value="ENABLED" />
|
||||||
|
<set-property name="log_ConsoleLogger" value="ENABLED" />
|
||||||
|
<set-property name="log_FirebugLogger" value="ENABLED" />
|
||||||
|
<set-property name="log_GWTLogger" value="ENABLED" />
|
||||||
|
<set-property name="log_SystemLogger" value="ENABLED" />
|
||||||
|
<!-- <set-property name="log_DivLogger" value="DISABLED" /> <set-property
|
||||||
|
name="log_ConsoleLogger" value="DISABLED" /> <set-property name="log_FirebugLogger"
|
||||||
|
value="DISABLED" /> <set-property name="log_GWTLogger" value="DISABLED" />
|
||||||
|
<set-property name="log_SystemLogger" value="DISABLED" /> -->
|
||||||
|
|
||||||
|
<!-- Specify the paths for translatable code -->
|
||||||
|
<source path='client' />
|
||||||
|
<source path='shared' />
|
||||||
|
|
||||||
<!-- Specify the paths for translatable code -->
|
|
||||||
<source path='client' />
|
|
||||||
<source path='shared' />
|
|
||||||
<!-- <source path='org.gcube.data.analysis.tabulardata.operation.worker'/> -->
|
|
||||||
|
|
||||||
</module>
|
</module>
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>jUnitHostImpl</servlet-name>
|
<servlet-name>jUnitHostImpl</servlet-name>
|
||||||
<url-pattern>UnionWizardWidgets/junithost/*</url-pattern>
|
<url-pattern>/MonitorWidgetTD/junithost/*</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue