From 5e51079370dff581b34115c7d60e1ce429c66e04 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Thu, 25 Mar 2021 12:19:27 +0100 Subject: [PATCH] removed Home Library dependency --- CHANGELOG.md | 4 +- pom.xml | 16 ++--- .../server/UploadToWorkspaceThread.java | 70 ++++++++----------- 3 files changed, 38 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dcf2b09..38a154a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,14 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v2.7.2-SNAPSHOT] -2021-03-25 +## [v2.8.0-SNAPSHOT] -2021-03-25 - Ported to git - Fix Bug #21023 attached documents in Posts do not open in Chrome +- Remove HomeLibrary dependency and replace with storage hub one + ## [v2.7.1] -2020-04-28 - Feature #18992 Reconsider the alert message raised when writing a post containing more than one link diff --git a/pom.xml b/pom.xml index a135e67..04f05e8 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.gcube.portlets.user share-updates war - 2.7.2-SNAPSHOT + 2.8.0-SNAPSHOT gCube Share Updates Portlet gCube Share Updates for exchanging updates with other users of VREs. @@ -75,6 +75,10 @@ portal-manager provided + + org.gcube.common + storagehub-client-library + org.gcube.portal social-networking-library @@ -167,16 +171,6 @@ commons-io compile - - org.gcube.common - home-library - provided - - - org.gcube.common - home-library-jcr - provided - org.gcube.dvos usermanagement-core diff --git a/src/main/java/org/gcube/portlets/user/shareupdates/server/UploadToWorkspaceThread.java b/src/main/java/org/gcube/portlets/user/shareupdates/server/UploadToWorkspaceThread.java index e03a6c3..a17bf24 100644 --- a/src/main/java/org/gcube/portlets/user/shareupdates/server/UploadToWorkspaceThread.java +++ b/src/main/java/org/gcube/portlets/user/shareupdates/server/UploadToWorkspaceThread.java @@ -3,17 +3,14 @@ package org.gcube.portlets.user.shareupdates.server; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; +import java.util.UUID; -import org.gcube.common.homelibrary.home.HomeLibrary; -import org.gcube.common.homelibrary.home.workspace.Workspace; -import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder; -import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder; -import org.gcube.common.homelibrary.home.workspace.accessmanager.ACLType; -import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException; -import org.gcube.common.homelibrary.home.workspace.folder.FolderItem; -import org.gcube.common.homelibrary.util.WorkspaceUtil; -import org.gcube.common.portal.PortalContext; import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.storagehub.client.dsl.FileContainer; +import org.gcube.common.storagehub.client.dsl.FolderContainer; +import org.gcube.common.storagehub.client.dsl.OpenResolver; +import org.gcube.common.storagehub.client.dsl.StorageHubClient; +import org.gcube.common.storagehub.model.exceptions.InvalidItemException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -59,44 +56,37 @@ public class UploadToWorkspaceThread implements Runnable { public void run() { try { String currScope = ScopeProvider.instance.get(); - ScopeProvider.instance.set("/"+PortalContext.getConfiguration().getInfrastructureName()); - - Workspace ws = HomeLibrary - .getHomeManagerFactory() - .getHomeManager() - .getHome(username).getWorkspace(); - + + + StorageHubClient shc = new StorageHubClient(); + _log.info("Trying to get VRE folder for scope="+currScope); + FolderContainer vreFolder = shc.openVREFolder(); + _log.info("File to upload="+fileabsolutePathOnServer); File file = new File(fileabsolutePathOnServer); InputStream fileData = new FileInputStream(file); - - _log.info("Trying to get Group folder for scope="+currScope); - WorkspaceSharedFolder folder = ws.getVREFolderByScope(currScope); - - Workspace ownerWS = HomeLibrary - .getHomeManagerFactory() - .getHomeManager() - .getHome(folder.getOwner().getPortalLogin()).getWorkspace(); - - WorkspaceFolder attachment = null; - try{ - attachment = (WorkspaceFolder) ownerWS.getItemByPath(folder.getPath() + "/" + ATTACHMENT_FOLDER); - } catch (ItemNotFoundException e) { - _log.info(ATTACHMENT_FOLDER + " Workspace Folder does not exists, creating it for "+currScope); - attachment = ownerWS.createFolder(ATTACHMENT_FOLDER, "Folder created automatically by the System", folder.getId()); - attachment.setACL(folder.getUsers(), ACLType.WRITE_OWNER); + + + FolderContainer attachmentFolder = null; + try { + OpenResolver oRes = vreFolder.openByRelativePath(ATTACHMENT_FOLDER); + attachmentFolder = oRes.asFolder(); + } catch (InvalidItemException e) { + _log.info(ATTACHMENT_FOLDER + " in VRE Folder does not exists, creating it for "+currScope); + vreFolder.newFolder(ATTACHMENT_FOLDER,"Folder created automatically by the System"); } - - WorkspaceFolder theFolderToWriteIn = (WorkspaceFolder) ws.getItemByPath(folder.getPath() + "/" + ATTACHMENT_FOLDER); - String itemName = WorkspaceUtil.getUniqueName(fileName, theFolderToWriteIn); - FolderItem item = WorkspaceUtil.createExternalFile(theFolderToWriteIn, itemName, "File shared by " + fullName + "("+username+")", null, fileData); - - _log.debug("Uploaded " + item.getName() + " - Returned Workspace id=" + item.getId()); - ScopeProvider.instance.set(currScope); + + String itemName = getUniqueName(fileName); + FileContainer uploadedFile = attachmentFolder.uploadFile(fileData, itemName, "File shared by " + fullName + "("+username+")"); + _log.debug("Uploaded " + uploadedFile.get().getName() + " - Returned Workspace id=" + uploadedFile.getId()); } catch (Exception e) { e.printStackTrace(); - _log.error("Something wrong while uploading " + fileName + " in Workspace " + e.getMessage()); + _log.error("Something wrong while uploading " + fileName + " in Workspace VRE Folder " + ATTACHMENT_FOLDER + ": "+ e.getMessage()); } } + + private String getUniqueName(String filename) { + return UUID.randomUUID().toString().substring(0, 8) + "_" + filename; + } }