From 5a49174e61a51535f26178a0f23ce94fad86eb44 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Mon, 2 Jul 2018 10:09:28 +0000 Subject: [PATCH] Integrated with notification git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-uploader@169591 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../server/WorkspaceUploadServletStream.java | 47 +++++------- .../NotificationsWorkspaceUploader.java | 71 +++++-------------- 2 files changed, 36 insertions(+), 82 deletions(-) diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java index 94ee294..338a9de 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java @@ -26,7 +26,9 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.util.Streams; import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang.Validate; import org.gcube.common.portal.PortalContext; +import org.gcube.common.storagehub.model.items.FolderItem; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehubwrapper.server.StorageHubWrapper; import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder; @@ -475,11 +477,6 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet //CONFIRM DESTINATION FOLDER workspaceUploader.getFile().setParentId(destinationFolder.getId()); - //Create Item Uploader to read progress -// WorkspaceUploadFile wsUploadFile = new WorkspaceUploadFile(destinationFolder.getId(), itemName); -// workspaceUploader.setFile(wsUploadFile); -// workspaceUploader.setStatusDescription("Uploading "+itemName+" at 0%"); - //instanciate the progress listener final AbstractUploadProgressListener uploadProgressListener = createNewListener(request.getSession(), clientUploadKey); final UploadProgressInputStream inputStream = new UploadProgressInputStream(uploadItem.openStream(), size); @@ -492,29 +489,12 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet if(uploadType.compareTo(FILE)==0) {//IS FILE UPLOAD -// boolean isZipFile = MimeTypeUtil.isZipContentType(uploadItem.getContentType()); //UNZIP?? -// -// if(isZipFile && extension.compareToIgnoreCase(D4ST)==0){ //Create REPORT TEMPLATE -// -// String newItemName = itemName; -// logger.debug("createTemplate: "+newItemName); -// -// createTemplate(user, scopeGroupId, request, workspaceUploader, request.getSession(), wa, newItemName, inputStream, destinationFolder, response, isOverwrite); -// -// }else if(isZipFile && extension.compareToIgnoreCase(D4SR)==0){ //Create REPORT -// -// String newItemName = itemName; -// logger.debug("createReport: "+newItemName); -// createReport(user, scopeGroupId, request, workspaceUploader, request.getSession(), wa, newItemName, inputStream, destinationFolder, response, isOverwrite); -// }else{ //CREATE AN EXTERNAL FILE + workspaceUploader = WorkspaceUploaderMng.uploadFile(storageHubWrapper, user, scopeGroupId, request, workspaceUploader, request.getSession(), itemName, inputStream, destinationFolder, contentType, isOverwrite, size); - workspaceUploader = WorkspaceUploaderMng.uploadFile(storageHubWrapper, user, scopeGroupId, request, workspaceUploader, request.getSession(), itemName, inputStream, destinationFolder, contentType, isOverwrite, size); + if(workspaceUploader==null) + throw new Exception("Error when creating uploader, it is null!"); - if(workspaceUploader==null) - throw new Exception("Error when creating uploader, it is null!"); - - sendMessage(response, workspaceUploader.getIdentifier()); -// } + sendMessage(response, workspaceUploader.getIdentifier()); }else {//IS ARCHIVE UPLOAD @@ -693,11 +673,22 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet //Item sourceItem; try { Item sourceItem = storageWrapper.getStorageHubClientService().getItem(itemId); - //TODO sourceItem.getIdSharedFolder(); String sourceSharedId = null; + try{ + sourceSharedId = storageWrapper.getStorageHubClientService().getIdSharedFolder(itemId); + }catch(Exception e){ + //silent + } Item folderDestinationItem = storageWrapper.getStorageHubClientService().getItem(destinationFolderId); + FolderItem folderDestination = null; + if(folderDestinationItem instanceof FolderItem){ + folderDestination = (FolderItem) folderDestinationItem; + } + + Validate.notNull(folderDestination, "The folder destionation is null"); + logger.trace("[3] HttpServletRequest is: URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); - NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(storageWrapper, request, currUser, scopeGroupId, np, httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite); + NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(storageWrapper, request, currUser, scopeGroupId, np, httpSession, sourceItem, sourceSharedId, folderDestination,isOverwrite); } catch (Exception e) { logger.error("Error in notifyUploadInSharedFolder", e); diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java index c1d3314..e638c38 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpSession; import org.gcube.applicationsupportlayer.social.shared.SocialFileItem; import org.gcube.applicationsupportlayer.social.shared.SocialSharedFolder; +import org.gcube.common.storagehub.model.items.FolderItem; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.items.SharedFolder; import org.gcube.common.storagehub.model.types.WorkspaceItemType; @@ -24,17 +25,19 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; + /** * The Class NotificationsWorkspaceUploader. * * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) - * Jun 26, 2018 + * Jul 2, 2018 */ public class NotificationsWorkspaceUploader { protected static Logger logger = LoggerFactory.getLogger(NotificationsWorkspaceUploader.class); + /** * Check send notify changed item to share. * @@ -49,7 +52,7 @@ public class NotificationsWorkspaceUploader { * @param folderDestinationItem the folder destination item * @param isOverwrite the is overwrite */ - public static void checkSendNotifyChangedItemToShare(StorageHubWrapper storageWrapper, HttpServletRequest request, GCubeUser currUser, String scopeGroupId, NotificationsWorkspaceUploaderProducer np, HttpSession httpSession, final Item sourceItem, final String sourceSharedId, final Item folderDestinationItem, boolean isOverwrite) { + public static void checkSendNotifyChangedItemToShare(StorageHubWrapper storageWrapper, HttpServletRequest request, GCubeUser currUser, String scopeGroupId, NotificationsWorkspaceUploaderProducer np, HttpSession httpSession, final Item sourceItem, final String sourceSharedId, final FolderItem folderDestinationItem, boolean isOverwrite) { logger.trace("checkSendNotifyAddItemToShare"); @@ -59,7 +62,7 @@ public class NotificationsWorkspaceUploader { if(folderDestinationItem.isShared()){ //Notify Added Item To Sharing? //TODO folderDestinationItem.getIdSharedFolder() - logger.trace("checkNotifyAddItemToShare source item: "+sourceItem.getName()+" sourceSharedId: "+sourceSharedId + " folder destination: "+folderDestinationItem.getName() + " folder destination shared folder id: "+folderDestinationItem); + logger.trace("checkNotifyAddItemToShare source item: "+sourceItem.getName()+" sourceSharedId: "+sourceSharedId + " folder destination name: "+folderDestinationItem.getName() + " folder destination id: "+folderDestinationItem.getId()); //share condition is true if source shared folder is not null boolean shareChangeCondition = sourceSharedId==null?false:true; @@ -71,27 +74,25 @@ public class NotificationsWorkspaceUploader { //if shareChangeCondition is true.. notifies added item to sharing if(shareChangeCondition){ - //Workspace workspace = WsUtil.getWorkspace(request, scopeGroupId, currUser); - //Workspace workspace = storageWrapper.getWorkspace(); - SharedFolder folderDest = (SharedFolder) folderDestinationItem; - - //TODO - //WorkspaceItem destinationSharedFolder = workspace.getItem(folderDestinationItem.getIdSharedFolder()); - //List listLogins = storageWrapper.getWorkspace().getSharedFolderMembers(destinationSharedFolder.getId()); + SharedFolder rootSharedFolder = null; + try{ + FolderItem sharedFolder = storageWrapper.getStorageHubClientService().getRootSharedFolder(folderDest.getId()); + rootSharedFolder = (SharedFolder) sharedFolder; + }catch(Exception e){ + //silent + } - List listLogins = storageWrapper.getWorkspace().getSharedFolderMembers(folderDest.getId()); + //Reading memmbers from rootSharedFolder + List listLogins = storageWrapper.getWorkspace().getSharedFolderMembers(rootSharedFolder.getId()); List listContacts = new ArrayList(listLogins.size()); for (String login : listLogins) { listContacts.add(new ContactModel(login, login, false, UserUtil.getUserFullName(login))); } - //Item destinationSharedFolder = storageWrapper.getWorkspace().getItem(folderDest.getIdSharedFolder()); - SocialFileItem socialItem = NotificationMapper.toSocialItem(storageWrapper, sourceItem); - - //TODO - //SocialSharedFolder socialFolder = NotificationMapper.toSocialFolder(destinationSharedFolder); + + //TO folderDest or rootSharedFolder?? SocialSharedFolder socialFolder = NotificationMapper.toSocialFolder(folderDest); //SWITCH BEETWEEN ADDED OR UPDATED @@ -99,20 +100,6 @@ public class NotificationsWorkspaceUploader { np.notifyAddedItemToSharing(listContacts, socialItem, socialFolder); else np.notifyUpdatedItemToSharing(listContacts, socialItem, socialFolder); - -// if(destinationSharedFolder instanceof WorkspaceSharedFolder){ -// -// //SWITCH BEETWEEN ADDED OR UPDATED -// if(!isOverwrite) -// np.notifyAddedItemToSharing(listContacts, sourceItem, destinationSharedFolder); -// else -// np.notifyUpdatedItemToSharing(listContacts, sourceItem, destinationSharedFolder); -// -// -// logger.trace("The notifies was sent correctly"); -// }else -// logger.trace("The notifies doesn't sent because "+destinationSharedFolder+ " is not instance of WorkspaceSharedFolder"); -// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem); } } else @@ -125,30 +112,6 @@ public class NotificationsWorkspaceUploader { logger.warn("The notifies is failure in checkSendNotifyAddItemToShare because folder destination item is null"); } -// /** -// * Gets the list user shared by folder shared id. -// * -// * @param workspace the workspace -// * @param idSharedFolder the id shared folder -// * @return the list user shared by folder shared id -// * @throws Exception the exception -// */ -// public static List getListUserSharedByFolderSharedId(SharedFolder folder) throws Exception { -// -// try { -// ArrayList users = new ArrayList(listPortalLogin.size()); -// for (String login : listPortalLogin) { -// users.add(new ContactModel(login, login, false, UserUtil.getUserFullName(login))); -// } -// -// return users; -// -// } catch (Exception e) { -// logger.error("Error in getListUserSharedByItemId ", e); -// throw new Exception(e.getMessage()); -// } -// } - /** * Checks if is a shared folder. *