From f0e4af3c0600d35e66ebce089b9421958d907e5a Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Wed, 28 Mar 2018 12:55:45 +0000 Subject: [PATCH] add rootFolderId as parameter git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/widgets/ws-thredds-sync-widget@165495 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../view/WsThreddsWidgetViewManager.java | 1 + .../wsthreddssync/server/BeanConverter.java | 11 +++- .../ThreddsWorkspaceSyncServiceImpl.java | 2 +- .../WsThreddsSynchFolderConfiguration.java | 27 +++++++- .../wsthreddssync/TestWsThreddsEngine.java | 61 +++++++++---------- 5 files changed, 67 insertions(+), 35 deletions(-) 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 5e18825..9be1b6e 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 @@ -284,6 +284,7 @@ public class WsThreddsWidgetViewManager { conf.setRemotePath(remotePath); conf.setCatalogName(catalogueSelected.getName()); conf.setSelectedScope(getSelectedScope()); + conf.setRootFolderId(folder.getFolderId()); WsThreddsWidget.eventBus.fireEvent(new PerformDoSyncEvent(folder, conf)); } diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/BeanConverter.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/BeanConverter.java index 9535990..bf806a2 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/BeanConverter.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/server/BeanConverter.java @@ -63,6 +63,12 @@ public class BeanConverter { } + /** + * To scope title. + * + * @param scope the scope + * @return the string + */ public static String toScopeTitle(String scope){ if(scope==null || scope.isEmpty()) @@ -98,14 +104,16 @@ public class BeanConverter { } + /** * To th synch folder configuration. * * @param t the t + * @param rootFolderId the root folder id * @param targetScopeUserToken the target scope user token * @return the th synch folder configuration */ - public static ThSynchFolderConfiguration toThSynchFolderConfiguration(WsThreddsSynchFolderConfiguration t, String targetScopeUserToken) { + public static ThSynchFolderConfiguration toThSynchFolderConfiguration(WsThreddsSynchFolderConfiguration t, String rootFolderId, String targetScopeUserToken) { if(t==null) return null; @@ -115,6 +123,7 @@ public class BeanConverter { ts.setRemotePath(t.getRemotePath()); ts.setTargetToken(targetScopeUserToken); ts.setToCreateCatalogName(t.getCatalogName()); + ts.setRootFolderId(rootFolderId); return ts; }; 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 36ba150..580de0a 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 @@ -99,7 +99,7 @@ public class ThreddsWorkspaceSyncServiceImpl extends RemoteServiceServlet implem ThSynchFolderConfiguration config = null; if(clientConfig!=null) { targetScopeUserToken = PortalContext.getConfiguration().getCurrentUserToken(clientConfig.getSelectedScope().getScopeName(), user.getUsername()); - config = BeanConverter.toThSynchFolderConfiguration(clientConfig, targetScopeUserToken); + config = BeanConverter.toThSynchFolderConfiguration(clientConfig, folderId, targetScopeUserToken); logger.debug("Creating server config "+config); } diff --git a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/shared/WsThreddsSynchFolderConfiguration.java b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/shared/WsThreddsSynchFolderConfiguration.java index f612064..f0d997d 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsthreddssync/shared/WsThreddsSynchFolderConfiguration.java +++ b/src/main/java/org/gcube/portlets/widgets/wsthreddssync/shared/WsThreddsSynchFolderConfiguration.java @@ -33,6 +33,8 @@ public class WsThreddsSynchFolderConfiguration implements Serializable{ private Status status; //just for serialization + private String rootFolderId; + /** * Instantiates a new ws thredds synch folder configuration. @@ -50,14 +52,34 @@ public class WsThreddsSynchFolderConfiguration implements Serializable{ * @param filter the filter * @param catalogName the catalog name */ - public WsThreddsSynchFolderConfiguration(String remotePath, GcubeScope theVRE, String filter, String catalogName) { + public WsThreddsSynchFolderConfiguration(String remotePath, GcubeScope theVRE, String filter, String catalogName, String rootFolderId) { super(); this.remotePath = remotePath; this.selectedScope = theVRE; this.filter = filter; this.catalogName = catalogName; + this.rootFolderId = rootFolderId; } + + /** + * @param rootFolderId the rootFolderId to set + */ + public void setRootFolderId(String rootFolderId) { + + this.rootFolderId = rootFolderId; + } + + + /** + * @return the rootFolderId + */ + public String getRootFolderId() { + + return rootFolderId; + } + + /** * Gets the remote path. * @@ -169,10 +191,11 @@ public class WsThreddsSynchFolderConfiguration implements Serializable{ builder.append(catalogName); builder.append(", status="); builder.append(status); + builder.append(", rootFolderId="); + builder.append(rootFolderId); builder.append("]"); return builder.toString(); } - } diff --git a/src/test/java/org/gcube/portlets/widgets/wsthreddssync/TestWsThreddsEngine.java b/src/test/java/org/gcube/portlets/widgets/wsthreddssync/TestWsThreddsEngine.java index a8c80df..9c4f279 100644 --- a/src/test/java/org/gcube/portlets/widgets/wsthreddssync/TestWsThreddsEngine.java +++ b/src/test/java/org/gcube/portlets/widgets/wsthreddssync/TestWsThreddsEngine.java @@ -2,7 +2,6 @@ package org.gcube.portlets.widgets.wsthreddssync; import java.io.IOException; import java.net.MalformedURLException; -import java.util.concurrent.Semaphore; import org.gcube.common.homelibrary.home.HomeLibrary; import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException; @@ -36,56 +35,56 @@ import org.gcube.usecases.ws.thredds.model.SynchFolderConfiguration; * Feb 7, 2018 */ public class TestWsThreddsEngine { - + public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV // public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; public static String TEST_USER = "francesco.mangiacrapa"; - + public static String TEST_FOLDER_ID = ""; - + public static void main(String[] args) throws ProcessNotFoundException, InternalErrorException, WorkspaceInteractionException, InternalException, WorkspaceFolderNotFoundException, ItemNotFoundException, InsufficientPrivilegesException, ItemAlreadyExistException, HomeNotFoundException, UserNotFoundException, MalformedURLException, IOException { - + // GET ENGINE : SINGLETON INSTANCE SyncEngine engine=SyncEngine.get(); - - + + Workspace ws = HomeLibrary .getHomeManagerFactory() .getHomeManager() .getHome(TEST_USER) .getWorkspace(); - - + + //TEST INFO... //TestCommons.setScope(); ScopeBean scope = new ScopeBean(DEFAULT_SCOPE); ScopeProvider.instance.set(scope.toString()); WorkspaceFolder folder=(WorkspaceFolder) ws.getItem(TEST_FOLDER_ID); - + // FOLDER CONFIGURATION BEAN //SynchFolderConfiguration config=TestCommons.getSynchConfig(); - + String filter = ""; String remotePersistence = ""; String remotePath = ""; String targetToken = ""; - SynchFolderConfiguration config = new SynchFolderConfiguration(remotePath, filter, targetToken, remotePersistence); - + SynchFolderConfiguration config = new SynchFolderConfiguration(remotePath, filter, targetToken, remotePersistence, folder.getId()); + try { //try to clean it up, first.. - System.out.println("Cleaning it up.."); + System.out.println("Cleaning it up.."); engine.unsetSynchronizedFolder(folder.getId(), false); }catch(WorkspaceNotSynchedException e) { // it was already cleared }catch(WorkspaceLockedException e) { engine.forceUnlock(folder.getId()); - engine.unsetSynchronizedFolder(folder.getId(), false); + engine.unsetSynchronizedFolder(folder.getId(), false); } - - + + try { - // WHEN OPENING A FOLDER, INVOKE CHECK TO UPDATE SYNCH STATUS + // WHEN OPENING A FOLDER, INVOKE CHECK TO UPDATE SYNCH STATUS engine.check(folder.getId(), false); }catch(WorkspaceNotSynchedException e) { System.out.println("Folder not synched, configurin it.."); @@ -94,37 +93,37 @@ public class TestWsThreddsEngine { System.out.println("Workspace locked, going to force unlock.."); // MAINLY FOR TEST PURPOSES, OR WHEN SOMETHIGN GOES WRONG.. USE CAUTIOUSLY engine.forceUnlock(folder.getId()); } - + // INVOKE SYNCHRONIZATION ON FOLDER ProcessDescriptor descriptor=engine.doSync(folder.getId()); - + System.out.println("Obtained descriptor : "+descriptor); - - + + SyncOperationCallBack syncCall = new SyncOperationCallBack() { - + @Override public void onStep(ProcessStatus status, ProcessDescriptor descriptor) { System.out.println("ON STEP : "+status+" "+descriptor); System.out.println("LOG : \n"+ status.getLogBuilder().toString()); if(status.getStatus().equals(ProcessStatus.Status.COMPLETED)) { - + //COMPLETED FARE REMOVE DALLA MAPPA } - + } }; - + // REGISTER CALLBACK TO MONITOR PROGRESS engine.registerCallBack(folder.getId(), syncCall); - - + + engine.check(folder.getId(), true); - - + + // INVOKE WHEN PORTAL SHUTS DOWN TO FREE RESOURCES AND STOP SYNC PROCESSES engine.shutDown(); - + }