From dba7f8f5012f728b36376ae5fb248409bbf44c3f Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Tue, 13 Mar 2018 16:39:09 +0000 Subject: [PATCH] add Do UnSync interaction git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/widgets/ws-thredds-sync-widget@165023 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/SyncCompletedNotification.java | 8 +++ .../wsthreddssync/client/WsThreddsWidget.java | 63 +++++++++++++++++++ .../client/event/PerformDoUnSyncEvent.java | 57 +++++++++++++++++ .../event/PerformDoUnSyncEventHandler.java | 21 +++++++ .../rpc/ThreddsWorkspaceSyncService.java | 10 +++ .../rpc/ThreddsWorkspaceSyncServiceAsync.java | 9 +++ .../view/WsThreddsWidgetViewManager.java | 1 + .../binder/ShowThreddsFolderInfoView.java | 20 +++++- .../binder/ShowThreddsFolderInfoView.ui.xml | 1 + .../server/SyncronizeWithThredds.java | 17 +++++ .../ThreddsWorkspaceSyncServiceImpl.java | 30 +++++++++ 11 files changed, 234 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/event/PerformDoUnSyncEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/event/PerformDoUnSyncEventHandler.java diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/SyncCompletedNotification.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/SyncCompletedNotification.java index 1c42d66..b8c9aae 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/SyncCompletedNotification.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/SyncCompletedNotification.java @@ -36,6 +36,14 @@ public class SyncCompletedNotification { * @param folder the folder */ void onSyncError(WsFolder folder); + + + /** + * On un sync performed. + * + * @param folder the folder + */ + void onUnSyncPerformed(WsFolder folder); } diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/WsThreddsWidget.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/WsThreddsWidget.java index ecbf898..5414821 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/WsThreddsWidget.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/WsThreddsWidget.java @@ -4,8 +4,12 @@ import org.gcube.portal.wssynclibrary.shared.WorkspaceFolderLocked; import org.gcube.portal.wssynclibrary.shared.thredds.ThSyncStatus; import org.gcube.portlets.widgets.wsthreddssync.client.SyncCompletedNotification.HasWsSyncNotificationListner; import org.gcube.portlets.widgets.wsthreddssync.client.SyncCompletedNotification.SyncCompletedNotificationListner; +import org.gcube.portlets.widgets.wsthreddssync.client.dialog.DialogConfirm; +import org.gcube.portlets.widgets.wsthreddssync.client.dialog.DialogResult; import org.gcube.portlets.widgets.wsthreddssync.client.event.PerformDoSyncEvent; import org.gcube.portlets.widgets.wsthreddssync.client.event.PerformDoSyncEventHandler; +import org.gcube.portlets.widgets.wsthreddssync.client.event.PerformDoUnSyncEvent; +import org.gcube.portlets.widgets.wsthreddssync.client.event.PerformDoUnSyncEventHandler; import org.gcube.portlets.widgets.wsthreddssync.client.event.ShowMonitorSyncStatusEvent; import org.gcube.portlets.widgets.wsthreddssync.client.event.ShowMonitorSyncStatusEventHandler; import org.gcube.portlets.widgets.wsthreddssync.client.rpc.ThreddsWorkspaceSyncServiceAsync; @@ -18,6 +22,8 @@ import org.gcube.portlets.widgets.wsthreddssync.shared.WsThreddsSynchFolderDescr import com.github.gwtbootstrap.client.ui.Modal; import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -80,6 +86,28 @@ public class WsThreddsWidget implements HasWsSyncNotificationListner { } }); + eventBus.addHandler(PerformDoUnSyncEvent.TYPE, new PerformDoUnSyncEventHandler() { + + @Override + public void onPerformDoUnSync(final PerformDoUnSyncEvent performDoUnSyncEvent) { + + if(performDoUnSyncEvent.getFolder()!=null){ + + DialogConfirm confirm = new DialogConfirm(null, "Unsync confirm?", "Deleting sync configurations to the folder: "+performDoUnSyncEvent.getFolder().getFoderName() +", Confirm?"); + + confirm.getYesButton().addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + performFolderUnSync(performDoUnSyncEvent.getFolder()); + } + }); + + } + } + + }); } @@ -140,6 +168,41 @@ public class WsThreddsWidget implements HasWsSyncNotificationListner { } + private void performFolderUnSync(WsFolder folder) { + this.currentFolder = folder; + GWT.log("Performing doSyncFolder on: "+folder); + final Modal box = new Modal(true); + box.setTitle("Deleting..."); + box.hide(false); + LoaderIcon loader = new LoaderIcon("Deleting sync configurations to the folder: "+folder.getFoderName()); + box.add(loader); + + wsThreddsSyncService.doUnSyncFolder(folder.getFolderId(), new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + Window.alert(caught.getMessage()); + if(box!=null) + box.hide(); + + } + + @Override + public void onSuccess(Boolean result) { + box.hide(); + + if(result){ + DialogResult dlg = new DialogResult(null, "Unsync performed", "Unsync was performed correctly"); + dlg.show(); + } + + } + }); + + box.show(); + + } + /** * Perform folder sync. diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/event/PerformDoUnSyncEvent.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/event/PerformDoUnSyncEvent.java new file mode 100644 index 0000000..ee70699 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/event/PerformDoUnSyncEvent.java @@ -0,0 +1,57 @@ +package org.gcube.portlets.widgets.wsthreddssync.client.event; + +import org.gcube.portlets.widgets.wsthreddssync.shared.WsFolder; + +import com.google.gwt.event.shared.GwtEvent; + + + +/** + * The Class PerformDoUnSyncEvent. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Mar 13, 2018 + */ +public class PerformDoUnSyncEvent extends GwtEvent { + + /** The type. */ + public static Type TYPE = new Type(); + private WsFolder folder; + + + /** + * Instantiates a new perform do sync event. + * + * @param folder the folder + */ + public PerformDoUnSyncEvent(WsFolder folder) { + this.folder = folder; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(PerformDoUnSyncEventHandler handler) { + handler.onPerformDoUnSync(this); + } + + + /** + * Gets the folder. + * + * @return the folder + */ + public WsFolder getFolder() { + return folder; + } + +} diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/event/PerformDoUnSyncEventHandler.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/event/PerformDoUnSyncEventHandler.java new file mode 100644 index 0000000..46c9149 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/event/PerformDoUnSyncEventHandler.java @@ -0,0 +1,21 @@ +package org.gcube.portlets.widgets.wsthreddssync.client.event; + +import com.google.gwt.event.shared.EventHandler; + + +/** + * The Interface PerformDoUnSyncEventHandler. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Mar 13, 2018 + */ +public interface PerformDoUnSyncEventHandler extends EventHandler { + + + /** + * On perform do un sync. + * + * @param performDoUnSyncEvent the perform do un sync event + */ + void onPerformDoUnSync(PerformDoUnSyncEvent performDoUnSyncEvent); +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/rpc/ThreddsWorkspaceSyncService.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/rpc/ThreddsWorkspaceSyncService.java index 03f3064..f52e9c5 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/rpc/ThreddsWorkspaceSyncService.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/rpc/ThreddsWorkspaceSyncService.java @@ -69,4 +69,14 @@ public interface ThreddsWorkspaceSyncService extends RemoteService { * @throws Exception the exception */ List getAvailableCataloguesForScope(String scope) throws Exception; + + + /** + * Do un sync folder. + * + * @param folderId the folder id + * @return the boolean + * @throws Exception the exception + */ + Boolean doUnSyncFolder(String folderId) throws Exception; } diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/rpc/ThreddsWorkspaceSyncServiceAsync.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/rpc/ThreddsWorkspaceSyncServiceAsync.java index 6ca34f0..fee13d1 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/rpc/ThreddsWorkspaceSyncServiceAsync.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/rpc/ThreddsWorkspaceSyncServiceAsync.java @@ -100,4 +100,13 @@ public interface ThreddsWorkspaceSyncServiceAsync * @return the available catalogues for scope */ void getAvailableCataloguesForScope(String scope, AsyncCallback> callback); + + + /** + * Do un sync folder. + * + * @param folderId the folder id + * @param callback the callback + */ + void doUnSyncFolder(String folderId, AsyncCallback callback); } diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/WsThreddsWidgetViewManager.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/WsThreddsWidgetViewManager.java index cb108b3..4cbde7e 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/WsThreddsWidgetViewManager.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/WsThreddsWidgetViewManager.java @@ -359,6 +359,7 @@ public class WsThreddsWidgetViewManager { 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 diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/binder/ShowThreddsFolderInfoView.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/binder/ShowThreddsFolderInfoView.java index 2823701..bc96364 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/binder/ShowThreddsFolderInfoView.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/binder/ShowThreddsFolderInfoView.java @@ -14,6 +14,7 @@ import org.gcube.portlets.widgets.wsthreddssync.shared.GcubeScope; import org.gcube.portlets.widgets.wsthreddssync.shared.WsFolder; import org.gcube.portlets.widgets.wsthreddssync.shared.WsThreddsSynchFolderDescriptor; +import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.ControlGroup; import com.github.gwtbootstrap.client.ui.ListBox; import com.github.gwtbootstrap.client.ui.Pager; @@ -40,8 +41,6 @@ import com.google.gwt.user.client.ui.Widget; */ public abstract class ShowThreddsFolderInfoView extends Composite { - private static final String DATE_FORMAT_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; - /** The ui binder. */ private static ShowThreddsFolderInfoViewUiBinder uiBinder = @@ -79,6 +78,9 @@ public abstract class ShowThreddsFolderInfoView extends Composite { @UiField TextBox field_folder_locked; + @UiField + Button button_do_unsync; + /*@UiField TextBox field_last_sync; @@ -116,7 +118,7 @@ public abstract class ShowThreddsFolderInfoView extends Composite { * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * Mar 12, 2018 */ - public static enum SUBMIT_ACTION {CREATE_UPDATE_CONFIGURATION, DO_SYNC}; + public static enum SUBMIT_ACTION {CREATE_UPDATE_CONFIGURATION, DO_UNSYNC, DO_SYNC}; /** * Submit handler. @@ -253,6 +255,18 @@ public abstract class ShowThreddsFolderInfoView extends Composite { } } } + + + button_do_unsync.setVisible(true); + + button_do_unsync.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + // TODO Auto-generated method stub + } + }); } /** diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/binder/ShowThreddsFolderInfoView.ui.xml b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/binder/ShowThreddsFolderInfoView.ui.xml index b7221d2..35d026b 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/binder/ShowThreddsFolderInfoView.ui.xml +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/client/view/binder/ShowThreddsFolderInfoView.ui.xml @@ -65,6 +65,7 @@ + Do UnSync diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/SyncronizeWithThredds.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/SyncronizeWithThredds.java index c321355..4146b60 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/SyncronizeWithThredds.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/SyncronizeWithThredds.java @@ -192,6 +192,23 @@ public class SyncronizeWithThredds { } + /** + * Do un sync. + * + * @param itemId the item id + * @param deleteRemoteContent the delete remote content + * @param scope the scope + * @param userToken the user token + * @return the boolean + * @throws Exception the exception + */ + public Boolean doUnSync(String itemId, boolean deleteRemoteContent, String scope, String userToken) throws Exception { + + setContextParameters(scope, userToken); + return workspaceThreddsSynchronize.doUnSync(itemId, deleteRemoteContent); + } + + /** * Register callback for id. diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/ThreddsWorkspaceSyncServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/ThreddsWorkspaceSyncServiceImpl.java index d4c1f75..64bb73b 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/ThreddsWorkspaceSyncServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/ThreddsWorkspaceSyncServiceImpl.java @@ -280,4 +280,34 @@ public class ThreddsWorkspaceSyncServiceImpl extends RemoteServiceServlet implem } + /** + * Do sync folder. + * + * @param folderId the folder id + * @param clientConfig the th config + * @return the th sync status + * @throws Exception the exception + */ + /* (non-Javadoc) + * @see org.gcube.portlets.widgets.wsthreddssync.client.rpc.ThreddsWorkspaceSyncService#doSyncFolder(java.lang.String, org.gcube.portlets.widgets.wsthreddssync.shared.WsThreddsSynchFolderDescriptor) + */ + @Override + public Boolean doUnSyncFolder(final String folderId) throws Exception{ + logger.info("Performing unsync on folder id: "+folderId); + +// String scope = PortalContext.getConfiguration().getCurrentScope(this.getThreadLocalRequest()); +// GCubeUser username = PortalContext.getConfiguration().getCurrentUser(this.getThreadLocalRequest()); +// String groupName = PortalContext.getConfiguration().getCurrentGroupName(this.getThreadLocalRequest()); +// new GcubeVRE(groupName, scope) + try { + GCubeUser user = PortalContext.getConfiguration().getCurrentUser(this.getThreadLocalRequest()); + String wsScope = PortalContext.getConfiguration().getCurrentScope(this.getThreadLocalRequest()); + String wsUserToken = PortalContext.getConfiguration().getCurrentUserToken(wsScope, user.getUsername()); + return getSyncService().doUnSync(folderId, false, wsScope, wsUserToken); + }catch (Exception e) { + logger.error("Do un sync Folder error: ",e); + throw new Exception("Sorry, an error occurred on deleting sync configurations, refresh and try again later"); + } + } + }