diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 160c7b8..29abf99 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -3,5 +3,4 @@ encoding//src/main/java=UTF-8 encoding//src/main/resources=UTF-8 encoding//src/test/java=UTF-8 encoding//src/test/resources=UTF-8 -encoding//target/generated-sources/gwt=UTF-8 encoding/=UTF-8 diff --git a/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/client/WsTaskExecutorWidget.java b/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/client/WsTaskExecutorWidget.java index 9140841..5f034f7 100644 --- a/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/client/WsTaskExecutorWidget.java +++ b/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/client/WsTaskExecutorWidget.java @@ -1,6 +1,10 @@ package org.gcube.portlets.widgets.wstaskexecutor.client; +import org.gcube.portlets.widgets.wstaskexecutor.client.view.WsTaskExecutorWidgetViewManager; + +import com.google.gwt.event.shared.HandlerManager; + /** * Entry point classes define onModuleLoad(). @@ -20,6 +24,11 @@ public class WsTaskExecutorWidget { */ public static final WsTaskExecutorWidgetServiceAsync greetingService = WsTaskExecutorWidgetServiceAsync.Util.getInstance(); + /** The Constant eventBus. */ + public final static HandlerManager eventBus = new HandlerManager(null); + + private WsTaskExecutorWidgetViewManager viewManager = new WsTaskExecutorWidgetViewManager(); + /** * */ diff --git a/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/client/view/WsTaskExecutorWidgetViewManager.java b/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/client/view/WsTaskExecutorWidgetViewManager.java new file mode 100644 index 0000000..4641a65 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/client/view/WsTaskExecutorWidgetViewManager.java @@ -0,0 +1,420 @@ +package org.gcube.portlets.widgets.wstaskexecutor.client.view; + + + + + +// TODO: Auto-generated Javadoc +/** + * The Class WsThreddsWidgetViewManager. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Feb 19, 2018 + */ +public class WsTaskExecutorWidgetViewManager { + + //private Map mapMonitor = new HashMap(); + + + /** + * Instantiates a new ws thredds widget view manager. + */ + public WsTaskExecutorWidgetViewManager() { + } + + +// /** +// * Cancel monitor. +// * +// * @param folder the folder +// */ +// public void cancelMonitor(WsFolder folder) { +// try { +// MonitorFolderSyncStatusView monitor = cancelScheduler(folder); +// if(monitor!=null) { +// GWT.log("Removed monitor for folder: "+folder.getFolderId()); +// mapMonitor.remove(folder.getFolderId()); +// } +// }catch (Exception e) { +// GWT.log("Error on removing map monitor for id: "+folder.getFolderId()); +// } +// } +// +// +// /** +// * Gets the monitor. +// * +// * @param folder the folder +// * @return the monitor +// */ +// public MonitorFolderSyncStatusView getMonitor(WsFolder folder){ +// +// if(folder==null) +// return null; +// +// return mapMonitor.get(folder.getFolderId()); +// } +// +// +// /** +// * Save monitor. +// * +// * @param folder the folder +// * @param monitor the monitor +// */ +// private void saveMonitor(WsFolder folder, MonitorFolderSyncStatusView monitor) { +// GWT.log("Saving monitor for folder: "+folder.getFolderId()); +// mapMonitor.put(folder.getFolderId(), monitor); +// } +// +// +// /** +// * Cancel scheduler. +// * +// * @param folder the folder +// * @return +// */ +// private MonitorFolderSyncStatusView cancelScheduler(final WsFolder folder) { +// +// MonitorFolderSyncStatusView monitor = getMonitor(folder); +// if(monitor.getSchedulerTime()!=null) { +// GWT.log("Cancelling scheduler time on folder: "+folder.getFolderId()); +// monitor.getSchedulerTime().cancel(); +// } +// +// return monitor; +// +// } +// +// /** +// * Show monitor sync to folder. +// * +// * @param folder the folder +// * @param syncEventsListeners +// */ +// public void showMonitorSyncToFolder(final WsFolder folder, final List syncEventsListeners) { +// GWT.log("showMonitorSyncToFolder for folder: "+folder.getFolderId()); +// +// final Modal box = new Modal(true); +// box.addStyleName("ws-thredds-modal-body"); +// box.setTitle("Monitor transferring of: "+FormatUtil.getFolderTitle(folder.getFoderName(), 20)); +// box.setWidth(800); +// box.hide(false); +// +// MonitorFolderSyncStatusView monitorView = getMonitor(folder); +// GWT.log("monitorView is: "+monitorView); +// +// final AbstractViewDialogBox panelView = new AbstractViewDialogBox() { +// +// @Override +// public void closeHandler() { +// //cancelScheduler(folder); +// box.hide(); +// +// } +// +// @Override +// public void confirmHanlder(CONFIRM_VALUE confirm, Command command) { +// +// // TODO Auto-generated method stub +// +// } +// }; +// +// if(monitorView==null) { +// +// monitorView = new MonitorFolderSyncStatusView() { +// +// @Override +// public void closetHandler() { +// //TODO CLIENT SIDE? +// //cancelMonitor(folder); +// panelView.closeHandler(); +// } +// +// @Override +// public void setError(boolean visible, String error) { +// panelView.setError(visible, error); +// } +// }; +// +// } +// +// if(monitorView.getSchedulerTime()==null) { +// +// //Removing old monitor +// //cancelMonitor(folder); +// //Creating new one +// final MonitorFolderSyncStatusView currentMonitor = monitorView; +// +// Timer schedulingTimer = new Timer() { +// +// @Override +// public void run() { +// +// WsThreddsWidget.wsThreddsSyncService.monitorSyncStatus(folder.getFolderId(), new AsyncCallback() { +// +// @Override +// public void onFailure(Throwable caught) { +// cancelMonitor(folder); +// Window.alert(caught.getMessage()); +// +// //CALLING METHOD ON SYNC ERROR TO THE LISTENERS +// for (SyncCompletedNotificationListner listener : syncEventsListeners) { +// listener.onSyncError(folder); +// } +// } +// +// @Override +// public void onSuccess(ThSyncStatus status) { +// GWT.log("monitorSyncStatus: "+status); +// if(status==null) { +// GWT.log("The status is null server-side, cancelling polling"); +// cancelMonitor(folder); +// } +// +// currentMonitor.updateStatusView(folder, status); +// +// if(status!=null && status.getProcessStatus()!=null) { +// +// if(status.getProcessStatus().getStatus().equals(Status.COMPLETED)) { +// GWT.log("Sync completed cancel the polling: "+status); +// cancelMonitor(folder); +// +// //CALLING METHOD ON SYNC COMPLETED TO THE LISTENERS +// for (SyncCompletedNotificationListner listener : syncEventsListeners) { +// listener.onSyncCompleted(folder); +// } +// } +// +// } +// } +// }); +// } +// }; +// +// schedulingTimer.scheduleRepeating(2000); +// currentMonitor.setScheduler(schedulingTimer); +// saveMonitor(folder, currentMonitor); +// +// } +// +// panelView.addViewAsWidget(monitorView); +// box.add(panelView); +// box.show(); +// +// } +// +// +// /** +// * Show create configuration folder. +// * +// * @param folder the folder +// * @param conf the conf +// */ +// public void showCreateConfigurationFolder(final WsFolder folder, WsThreddsSynchFolderDescriptor conf){ +// +// final Modal box = new Modal(true); +// box.setTitle("Create Thredds Sync Configuration for: "+FormatUtil.getFolderTitle(folder.getFoderName(), 20)); +// //box.getElement().getStyle().setZIndex(10000); +// +// final AbstractViewDialogBox panelView = new AbstractViewDialogBox() { +// +// @Override +// public void closeHandler() { +// box.hide(); +// +// } +// +// @Override +// public void confirmHanlder(CONFIRM_VALUE confirm, Command command) { +// +// if(confirm.equals(CONFIRM_VALUE.YES)){ +// box.hide(); +// } +// +// if(command!=null) +// command.execute(); +// +// } +// }; +// +// CreateThreddsConfigurationView createThreddsConfiguration = new CreateThreddsConfigurationView(folder.getFolderId()) { +// +// @Override +// public void submitHandler() { +// panelView.closeHandler(); +// WsThreddsSynchFolderConfiguration conf = new WsThreddsSynchFolderConfiguration(); +// conf.setFilter(null); +// +// ThCatalogueBean catalogueSelected = getSelectedCatalogue(); +// String remotePath = catalogueSelected.getPath()!=null?catalogueSelected.getPath():""; +// remotePath = remotePath.isEmpty()?getFolderName():remotePath+"/"+getFolderName(); +// conf.setRemotePath(remotePath); +// conf.setCatalogName(catalogueSelected.getName()); +// conf.setSelectedScope(getSelectedScope()); +// conf.setRootFolderId(folder.getFolderId()); +// WsThreddsWidget.eventBus.fireEvent(new PerformDoSyncEvent(folder, conf)); +// } +// +// @Override +// public void setError(boolean visible, String error) { +// panelView.setError(visible, error); +// +// } +// +// @Override +// public void setConfirm(boolean visible, String msg) { +// +// Command yes = new Command() { +// +// @Override +// public void execute() { +// +// submitHandler(); +// } +// }; +// +// Command no = new Command() { +// +// @Override +// public void execute() { +// +// panelView.setConfirm(false, "", null, null); +// } +// }; +// +// panelView.setConfirm(visible, msg, yes, no); +// +// } +// }; +// +// panelView.addViewAsWidget(createThreddsConfiguration); +// box.add(panelView); +// box.show(); +// +// } +// +// +// /** +// * Show thredds folder info. +// * +// * @param folder the folder +// * @param folderDescriptor the folder descriptor +// */ +// public void showThreddsFolderInfo(final WsFolder folder, final WsThreddsSynchFolderDescriptor folderDescriptor){ +// GWT.log("ShowThreddsFolderInfo folder: "+folder); +// //GWT.log("WsThreddsSynchFolderDescriptor is: "+folderDescriptor); +// +// final Modal box = new Modal(true); +// box.hide(false); +// //box.setWidth(WIDHT_DIALOG+"px"); +// box.setTitle("Thredds Sync Information for: "+FormatUtil.getFolderTitle(folder.getFoderName(), 20)); +// //box.getElement().getStyle().setZIndex(10000); +// +// final AbstractViewDialogBox panelView = new AbstractViewDialogBox() { +// +// @Override +// public void closeHandler() { +// box.hide(); +// } +// +// @Override +// public void confirmHanlder(CONFIRM_VALUE confirm, Command command) { +// +// // TODO Auto-generated method stub +// +// } +// }; +// +// boolean isCreateConfiguration = folderDescriptor==null?true:false; +// +// +// ShowThreddsFolderInfoView folderInfo = new ShowThreddsFolderInfoView(folder.getFolderId(), isCreateConfiguration) { +// +// @Override +// public void submitHandler(SUBMIT_ACTION action) { +// panelView.closeHandler(); +// +// if(action==null) +// return; +// +// switch (action) { +// +// case CREATE_UPDATE_CONFIGURATION: +// +// if(folderDescriptor==null) { +// GWT.log("Performing a create configuration"); +// //PERFORM A CREATE CONFIGURATION (AT FIRST TIME), THE CONFIGURATION DOES NOT EXITS +// showCreateConfigurationFolder(folder, null); +// +// } +//// else { +//// GWT.log("Performing an updated configuration"); +//// //PERFORM AN UPDATE CONFIGURATION. THE CONFIGURATION EXIST +//// //BeanConverter.toWsThreddsFolderConfig(t, vre); +//// showCreateConfigurationFolder(folder, result); +//// } +//// +// +// break; +// +// case DO_SYNC: +// GWT.log("Performing a do sync using server folder configuration"); +// //PERFORM A DO SYNC BUT NOT AT FIRST TIME +// WsThreddsWidget.eventBus.fireEvent(new PerformDoSyncEvent(folder, null)); +// +// break; +// +// default: +// break; +// } +// +// } +// @Override +// public void setError(boolean visible, String error) { +// //panelView.setError(visible, error); +// panelView.setInfo(visible, error); +// } +// }; +// +// folderInfo.updateViewToResult(folder, folderDescriptor); +// +// if(isCreateConfiguration) { +// folderInfo.getMainPanel().setVisible(false); +// folderInfo.setError(true, "This Folder is not configured. Do you want create a configuration?"); +// folderInfo.getPager().getLeft().setText("Create Configuration"); +// }else { +// //USER CAN PERFORM DO SYNC +// //MOREOVER, HE/SHE COULD UPDATE THE CONFIGURATION BUT IT IS NOT SUPPORTED SERVER-SIDE +// folderInfo.getPager().getLeft().setVisible(false); +// +// if(folderDescriptor.getServerFolderDescriptor().isLocked()) { +// VerticalPanel v = new VerticalPanel(); +// Alert alert = new Alert("Current Folder synchronization is locked by another proccess. Do you want see synchronization status?"); +// alert.setClose(true); +// alert.setType(AlertType.INFO); +// +// Button butt = new Button("Show Status"); +// butt.addClickHandler(new ClickHandler() { +// +// @Override +// public void onClick(ClickEvent event) { +// WsThreddsWidget.eventBus.fireEvent(new ShowMonitorSyncStatusEvent(folder)); +// } +// }); +// +// v.add(alert); +// v.add(butt); +// box.add(v); +// } +// +// } +// +// panelView.addViewAsWidget(folderInfo); +// box.add(panelView); +// box.show(); +// +// } + +} diff --git a/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/shared/GcubeScope.java b/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/shared/GcubeScope.java index 6750e7b..bc2cc7c 100644 --- a/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/shared/GcubeScope.java +++ b/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/shared/GcubeScope.java @@ -16,10 +16,11 @@ import com.google.gwt.user.client.rpc.IsSerializable; public class GcubeScope implements Serializable, IsSerializable, Comparable{ + /** * */ - private static final long serialVersionUID = -6427520549519606384L; + private static final long serialVersionUID = 1L; private GcubeScopeType scopeType; diff --git a/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/shared/WsFolder.java b/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/shared/WsFolder.java new file mode 100644 index 0000000..3380103 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wstaskexecutor/shared/WsFolder.java @@ -0,0 +1,64 @@ +package org.gcube.portlets.widgets.wstaskexecutor.shared; + +import java.io.Serializable; + +import com.google.gwt.user.client.rpc.IsSerializable; + +public class WsFolder implements Serializable, IsSerializable{ + + + /** + * + */ + private static final long serialVersionUID = 1L; + private String folderId; + private String foderName; + + + public WsFolder() { + } + + + + public WsFolder(String folderId, String foderName) { + this.folderId = folderId; + this.foderName = foderName; + } + + + + public String getFolderId() { + return folderId; + } + + + public void setFolderId(String folderId) { + this.folderId = folderId; + } + + + public String getFoderName() { + return foderName; + } + + + public void setFoderName(String foderName) { + this.foderName = foderName; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("WsFolder [folderId="); + builder.append(folderId); + builder.append(", foderName="); + builder.append(foderName); + builder.append("]"); + return builder.toString(); + } + + + + + +}