From edbef7efd564759c9ea0a08564f54297419a67ce Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Mon, 24 Sep 2018 09:07:25 +0000 Subject: [PATCH] ref 11724: SAI - Update to StorageHUB https://support.d4science.org/issues/11724 Updated to StorageHub git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@171606 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 6 +- distro/changelog.xml | 3 + pom.xml | 66 +-------- .../server/social/AlgorithmNotification.java | 18 +-- .../server/storage/FilesStorage.java | 127 ++++-------------- .../shared/workspace/ItemDescription.java | 6 +- 6 files changed, 42 insertions(+), 184 deletions(-) diff --git a/.classpath b/.classpath index edc6cd8..b95af1b 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -45,5 +45,5 @@ - + diff --git a/distro/changelog.xml b/distro/changelog.xml index 1caa0b2..62d34de 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,4 +1,7 @@ + + Updated support to StorageHub [ticket #11724] + Updated to StorageHub [ticket #11724] diff --git a/pom.xml b/pom.xml index ad0e0a0..90ab4bb 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ 4.0.0 org.gcube.portlets.user statistical-algorithms-importer - 1.12.0-SNAPSHOT + 1.13.0-SNAPSHOT war @@ -82,17 +82,6 @@ 2.4.0 - - - org.gcube.contentmanagement - storage-manager-core - runtime - - - org.gcube.contentmanagement - storage-manager-wrapper - runtime - @@ -101,23 +90,6 @@ runtime - - - org.gcube.common - home-library - runtime - - - org.gcube.common - home-library-jcr - runtime - - - org.gcube.common - home-library-model - runtime - - org.gcube.common @@ -227,19 +199,6 @@ provided - - - org.gcube.contentmanagement - storage-manager-core - provided - - - - org.gcube.contentmanagement - storage-manager-wrapper - provided - - org.gcube.common @@ -247,25 +206,6 @@ compile - - - org.gcube.common - home-library - provided - - - - org.gcube.common - home-library-jcr - provided - - - - org.gcube.common - home-library-model - provided - - org.json @@ -323,12 +263,12 @@ [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) - + org.gcube.portlets.widgets workspace-explorer [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) - + diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/AlgorithmNotification.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/AlgorithmNotification.java index 008322f..2abb01f 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/AlgorithmNotification.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/AlgorithmNotification.java @@ -9,21 +9,9 @@ import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; -import java.util.List; import javax.servlet.http.HttpServletRequest; -import org.gcube.applicationsupportlayer.social.ApplicationNotificationsManager; -import org.gcube.applicationsupportlayer.social.NotificationsManager; -import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingSite; -import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingUser; -import org.gcube.common.homelibrary.home.HomeLibrary; -import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException; -import org.gcube.common.homelibrary.home.exceptions.InternalErrorException; -import org.gcube.common.homelibrary.home.workspace.Workspace; -import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException; -import org.gcube.portal.notifications.bean.GenericItemBean; -import org.gcube.portal.notifications.thread.MessageNotificationsThread; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.SessionUtil; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.is.InformationSystemUtils; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials; @@ -211,7 +199,7 @@ public class AlgorithmNotification extends Thread { if (serviceUp) { sendByService(); } else { - sendByNotificationManager(); + //sendByNotificationManager(); } } @@ -316,6 +304,8 @@ public class AlgorithmNotification extends Thread { } + + /* private void sendByNotificationManager() { try { Workspace workspace = HomeLibrary.getUserWorkspace(serviceCredentials.getUserName()); @@ -366,6 +356,6 @@ public class AlgorithmNotification extends Thread { } return addressee; - } + } */ } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/FilesStorage.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/FilesStorage.java index 814a069..1d10d85 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/FilesStorage.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/FilesStorage.java @@ -11,9 +11,6 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.List; -import org.gcube.common.homelibrary.home.HomeLibrary; -import org.gcube.common.homelibrary.home.workspace.Workspace; -import org.gcube.common.homelibrary.home.workspace.WorkspaceItem; import org.gcube.common.storagehub.client.StreamDescriptor; import org.gcube.common.storagehub.client.dsl.FileContainer; import org.gcube.common.storagehub.client.dsl.FolderContainer; @@ -60,7 +57,7 @@ public class FilesStorage { public String getPublicLink(String user, String itemId) throws StatAlgoImporterServiceException { try { - logger.debug("getPublicLink: [user=" + user + ", itemId=" + itemId + "]"); + logger.info("getPublicLink: [user=" + user + ", itemId=" + itemId + "]"); StorageHubClient shc = new StorageHubClient(); URL url = shc.open(itemId).asFile().getPublicLink(); return url.toString(); @@ -87,22 +84,19 @@ public class FilesStorage { */ public ItemDescription copyItemOnFolder(String user, String itemId, String folderId) throws StatAlgoImporterServiceException { - Workspace ws; + try { logger.info("Copy item on folder: [user=" + user + ", itemId=" + itemId + ", folderId=" + folderId + "]"); - - ws = HomeLibrary.getUserWorkspace(user); - - WorkspaceItem workSpaceItem = ws.getItem(folderId); - if (!workSpaceItem.isFolder()) { - throw new StatAlgoImporterServiceException("Destination is not a folder!"); - } - - WorkspaceItem item = ws.copy(itemId, folderId); - - ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), - item.getOwner().getPortalLogin(), item.getPath(), item.getType().name()); - itemDescription.setPublicLink(item.getPublicLink(false)); + StorageHubClient shc = new StorageHubClient(); + OpenResolver openResolverForFile = shc.open(itemId); + FileContainer fileContainer = openResolverForFile.asFile(); + OpenResolver openResolverForFolder = shc.open(folderId); + FolderContainer folderContainer = openResolverForFolder.asFolder(); + FileContainer fileCreatedContainer = fileContainer.copy(folderContainer, fileContainer.get().getName()); + AbstractFileItem item = fileCreatedContainer.get(); + ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner(), + item.getPath(), item.getClass().getSimpleName()); + itemDescription.setPublicLink(fileCreatedContainer.getPublicLink().toString()); return itemDescription; } catch (Throwable e) { @@ -130,23 +124,22 @@ public class FilesStorage { */ public ItemDescription copyItemOnFolderWithNewName(String user, String itemId, String folderId, String newName) throws StatAlgoImporterServiceException { - Workspace ws; try { logger.info("Copy item on folder with new name: [user=" + user + ", itemId=" + itemId + ", folderId=" + folderId + ", newName=" + newName + "]"); - ws = HomeLibrary.getUserWorkspace(user); - - WorkspaceItem workSpaceItem = ws.getItem(folderId); - if (!workSpaceItem.isFolder()) { - throw new StatAlgoImporterServiceException("Destination is not a folder!"); - } - - WorkspaceItem item = ws.copy(itemId, newName, folderId); - - ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), - item.getOwner().getPortalLogin(), item.getPath(), item.getType().name()); + StorageHubClient shc = new StorageHubClient(); + OpenResolver openResolverForFile = shc.open(itemId); + FileContainer fileContainer = openResolverForFile.asFile(); + OpenResolver openResolverForFolder = shc.open(folderId); + FolderContainer folderContainer = openResolverForFolder.asFolder(); + FileContainer fileCreatedContainer = fileContainer.copy(folderContainer, newName); + AbstractFileItem item = fileCreatedContainer.get(); + ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner(), + item.getPath(), item.getClass().getSimpleName()); + itemDescription.setPublicLink(fileCreatedContainer.getPublicLink().toString()); + logger.debug("File created: " + itemDescription); return itemDescription; } catch (Throwable e) { logger.error("Copy item on folder with new name on workspace: " + e.getLocalizedMessage(), e); @@ -166,7 +159,7 @@ public class FilesStorage { */ public void deleteItemOnFolder(String user, String itemId) throws StatAlgoImporterServiceException { try { - logger.debug("Delete Item: [User=" + user + ", ItemId=" + itemId + "]"); + logger.info("Delete Item: [User=" + user + ", ItemId=" + itemId + "]"); StorageHubClient shc = new StorageHubClient(); OpenResolver openResolver = shc.open(itemId); @@ -253,7 +246,7 @@ public class FilesStorage { FolderContainer folderContainer = openResolver.asFolder(); FolderContainer folderContainerNew = folderContainer.newFolder(folderName, folderDescription); FolderItem folderCreated = folderContainerNew.get(); - + ItemDescription itemDescription = new ItemDescription(folderCreated.getId(), folderCreated.getName(), folderCreated.getOwner(), folderCreated.getPath(), folderCreated.getClass().getSimpleName()); @@ -379,7 +372,7 @@ public class FilesStorage { OpenResolver openResolver = shc.open(folderId); FolderContainer folderContainer = openResolver.asFolder(); - folderContainer.uploadFile(inputStream, name, description); + folderContainer.uploadFile(inputStream, name, description); return; } catch (Throwable e) { @@ -418,7 +411,7 @@ public class FilesStorage { FolderContainer folderContainer = openResolver.asFolder(); FileContainer fileContainerNew = folderContainer.uploadFile(inputStream, name, description); - + AbstractFileItem fileCreated = fileContainerNew.get(); ItemDescription itemDescription = new ItemDescription(fileCreated.getId(), fileCreated.getName(), @@ -433,70 +426,6 @@ public class FilesStorage { } } - /** - * - * - * - * @param user - * User - * @param inputStream - * InputStream - * @param name - * Name - * @param description - * Description - * @param mimeType - * MimeType - * @param folderName - * Folder Path - * @return Item description - * @throws StatAlgoImporterServiceException - * Exception - */ - /* - public ItemDescription createItemOnWorkspaceHowAdmin(String user, InputStream inputStream, String name, - String description, String mimeType, String folderName) throws StatAlgoImporterServiceException { - Workspace ws; - try { - logger.info("Create item on workspace how admin: [user=" + user + ", name=" + name + ", description=" - + description + ", mimeType=" + mimeType + ", folderName=" + folderName + "]"); - ws = HomeLibrary.getUserWorkspace(user); - WorkspaceItem root = ws.getRoot(); - WorkspaceItem folderItem = ws.find(folderName, root.getId()); - - if (folderItem == null || !folderItem.isFolder()) { - throw new StatAlgoImporterServiceException("Destination " + folderName + " is not a valid folder!"); - } - - WorkspaceItem codeJar = ws.find(name, folderItem.getId()); - ItemDescription itemDescription; - if (codeJar == null) { - WorkspaceItem item = ws.createExternalFile(name, description, mimeType, inputStream, - folderItem.getId()); - - itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner().getPortalLogin(), - item.getPath(), item.getType().name()); - itemDescription.setPublicLink(item.getPublicLink(false)); - - } else { - - ws.updateItem(codeJar.getId(), inputStream); - - itemDescription = new ItemDescription(codeJar.getId(), codeJar.getName(), - codeJar.getOwner().getPortalLogin(), codeJar.getPath(), codeJar.getType().name()); - itemDescription.setPublicLink(codeJar.getPublicLink(false)); - - } - - return itemDescription; - - } catch (Throwable e) { - logger.error("Create item on workspace how admin: " + e.getLocalizedMessage(), e); - throw new StatAlgoImporterServiceException(e.getLocalizedMessage()); - - } - }*/ - /** * * @@ -897,7 +826,7 @@ public class FilesStorage { } } } else { - logger.info("Folder null: itemId=" + itemId + "]"); + logger.debug("Folder null: itemId=" + itemId + "]"); } logger.debug("Shared: " + shared); diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/workspace/ItemDescription.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/workspace/ItemDescription.java index 51c36fe..7752492 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/workspace/ItemDescription.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/workspace/ItemDescription.java @@ -83,11 +83,7 @@ public class ItemDescription implements Serializable { public boolean compareInfo(ItemDescription itemDescription){ - if(itemDescription!=null && id.compareTo(itemDescription.getId())==0 && - name.compareTo(itemDescription.getName())==0 && - owner.compareTo(itemDescription.getOwner())==0 && - type.compareTo(itemDescription.getType())==0 - ){ + if(itemDescription!=null && id.compareTo(itemDescription.getId())==0){ return true; } else { return false;