diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/dragdrop/MultipleDNDUpload.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/dragdrop/MultipleDNDUpload.java index b6e2148..9832a75 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/dragdrop/MultipleDNDUpload.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/dragdrop/MultipleDNDUpload.java @@ -41,7 +41,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload private String folder_parent_id = ConstantsWorkspaceUploader.FOLDER_PARENT_ID; private String item_name = ConstantsWorkspaceUploader.ITEM_NAME; - private String scopeGroupId = ""; + private String scopeGroupId = ConstantsWorkspaceUploader.CURR_GROUP_ID; public static final String FILE_DELEMITER = ";"; private Widget onlyChild; @@ -667,9 +667,10 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload var wsUtil = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::workspaceUtil; var folder_parent_id = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::folder_parent_id; var item_name = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::item_name; + var scopegroupid = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::scopeGroupId; console.log("item_name: " + item_name); - var params = folder_parent_id+"="+idfolder+"&"+item_name+"="+files[i].name + var params = folder_parent_id+"="+idfolder+"&"+item_name+"="+files[i].name+"&currGroupId="+scopeGroupId; console.log("params: " + params); var response = isFileOverwrite(wsUtil, params, ""); console.log("response overwrite: " + response); diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServlet.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServlet.java index 9287ab7..8acc0cb 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServlet.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServlet.java @@ -32,12 +32,14 @@ import org.gcube.common.homelibrary.home.workspace.folder.items.Report; import org.gcube.common.homelibrary.home.workspace.folder.items.ReportTemplate; import org.gcube.common.homelibrary.util.Extensions; import org.gcube.common.homelibrary.util.WorkspaceUtil; +import org.gcube.common.portal.PortalContext; import org.gcube.portlets.widgets.workspaceuploader.client.ConstantsWorkspaceUploader; import org.gcube.portlets.widgets.workspaceuploader.server.notification.NotificationsWorkspaceUploader; import org.gcube.portlets.widgets.workspaceuploader.server.notification.NotificationsWorkspaceUploaderProducer; import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil; import org.gcube.portlets.widgets.workspaceuploader.shared.HandlerResultMessage; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** @@ -375,7 +377,8 @@ public class WorkspaceUploadServlet extends HttpServlet { * @param isOverwrite the is overwrite */ public static void notifyUploadInSharedFolder(final String scopeGroupId, final HttpServletRequest request, final HttpSession httpSession, final Workspace workspace, final String itemId, final String destinationFolderId, final boolean isOverwrite){ - + final GCubeUser currUser = PortalContext.getConfiguration().getCurrentUser(request); + System.out.println("\n\n*****\n\n notifyUploadInSharedFolder currUser=" + currUser.toString()); boolean requestIsNull = request==null; logger.trace("[2] HttpServletRequest is: null? "+requestIsNull+", URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); final NotificationsWorkspaceUploaderProducer np = new NotificationsWorkspaceUploaderProducer(scopeGroupId, httpSession,request); @@ -387,7 +390,7 @@ public class WorkspaceUploadServlet extends HttpServlet { String sourceSharedId = sourceItem.getIdSharedFolder(); WorkspaceItem folderDestinationItem = workspace.getItem(destinationFolderId); logger.trace("[3] HttpServletRequest is: URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); - NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(scopeGroupId, np, request, httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite); + NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(currUser, scopeGroupId, np, httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite); } catch (Exception e) { logger.error("Error in notifyUploadInSharedFolder", e); } 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 4f05a2c..3fc12ca 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 @@ -61,6 +61,7 @@ import org.gcube.portlets.widgets.workspaceuploader.shared.HandlerResultMessage; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploadFile; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem.UPLOAD_STATUS; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -165,8 +166,6 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet * {@inheritDoc} */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - System.out.println("POST on UploadServlet"); logger.info("POST on UploadServlet"); boolean requestIsNull = request==null; logger.trace("[1] HttpServletRequest is: null? "+requestIsNull+", URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); @@ -662,7 +661,8 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet * @param isOverwrite the is overwrite */ public static void notifyUploadInSharedFolder(final String scopeGroupId, final HttpServletRequest request, final HttpSession httpSession, final Workspace workspace, final String itemId, final String destinationFolderId, final boolean isOverwrite){ - + final GCubeUser currUser = PortalContext.getConfiguration().getCurrentUser(request); + System.out.println("**currUser="+currUser.toString()); logger.trace("[2] HttpServletRequest is: URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); final NotificationsWorkspaceUploaderProducer np = new NotificationsWorkspaceUploaderProducer(scopeGroupId, httpSession,request); new Thread(){ @@ -673,7 +673,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet String sourceSharedId = sourceItem.getIdSharedFolder(); WorkspaceItem folderDestinationItem = workspace.getItem(destinationFolderId); logger.trace("[3] HttpServletRequest is: URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); - NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(scopeGroupId, np, request, httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite); + NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(currUser, scopeGroupId, np, httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite); } catch (Exception e) { logger.error("Error in notifyUploadInSharedFolder", e); } diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderWsUtil.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderWsUtil.java index fe5b50f..7520f1a 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderWsUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderWsUtil.java @@ -6,12 +6,10 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import org.gcube.common.homelibary.model.items.type.WorkspaceItemType; import org.gcube.common.homelibrary.home.workspace.Workspace; import org.gcube.common.homelibrary.home.workspace.WorkspaceItem; -import org.gcube.common.portal.PortalContext; import org.gcube.portlets.widgets.workspaceuploader.client.ConstantsWorkspaceUploader; import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil; import org.slf4j.Logger; @@ -35,10 +33,13 @@ public class WorkspaceUploaderWsUtil extends HttpServlet { throws ServletException, IOException { String folderParentId = req.getParameter(ConstantsWorkspaceUploader.FOLDER_PARENT_ID); String itemName = req.getParameter(ConstantsWorkspaceUploader.ITEM_NAME); + String currGroupId = req.getParameter(ConstantsWorkspaceUploader.CURR_GROUP_ID); logger.debug("folderParentId: "+folderParentId); logger.debug("itemName: "+itemName); + logger.debug("currGroupId: "+currGroupId); + try { - String itemId = itemExistsInWorkpaceFolder(req, folderParentId, itemName); + String itemId = itemExistsInWorkpaceFolder(currGroupId, req, folderParentId, itemName); sendOKMessage(resp, itemId); } catch (Exception e) { @@ -60,11 +61,10 @@ public class WorkspaceUploaderWsUtil extends HttpServlet { * @return the string * @throws Exception the exception */ - public String itemExistsInWorkpaceFolder(HttpServletRequest req, String parentId, String itemName) throws Exception { + public String itemExistsInWorkpaceFolder(String currGroupId, HttpServletRequest req, String parentId, String itemName) throws Exception { logger.trace("get itemExistsInWorkpace for name: "+itemName+", by parentId: "+parentId); try { - String scopeGroupId = PortalContext.getConfiguration().getCurrentScope(req); - Workspace workspace = WsUtil.getWorkspace(req, scopeGroupId); + Workspace workspace = WsUtil.getWorkspace(req, currGroupId); WorkspaceItem wsItem = workspace.getItem(parentId); //GET PARENT if(wsItem.getType().equals(WorkspaceItemType.FOLDER) || wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ 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 72830c1..f61c9be 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 @@ -17,6 +17,7 @@ import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder; import org.gcube.portlets.widgets.workspaceuploader.server.util.UserUtil; import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil; import org.gcube.portlets.widgets.workspaceuploader.shared.ContactModel; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; /** * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it @@ -35,7 +36,7 @@ public class NotificationsWorkspaceUploader { * @param sourceSharedId * @param folderDestinationItem */ - public static void checkSendNotifyChangedItemToShare(String scopeGroupId, NotificationsWorkspaceUploaderProducer np, HttpServletRequest request, HttpSession httpSession, final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem, boolean isOverwrite) { + public static void checkSendNotifyChangedItemToShare(GCubeUser currUser, String scopeGroupId, NotificationsWorkspaceUploaderProducer np, HttpSession httpSession, final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem, boolean isOverwrite) { logger.trace("checkSendNotifyAddItemToShare"); @@ -56,14 +57,12 @@ public class NotificationsWorkspaceUploader { //if shareChangeCondition is true.. notifies added item to sharing if(shareChangeCondition){ - Workspace workspace = WsUtil.getWorkspace(request, scopeGroupId); + Workspace workspace = WsUtil.getWorkspace(currUser.getUsername(), scopeGroupId); List listContacts = getListUserSharedByFolderSharedId(workspace, folderDestinationItem.getIdSharedFolder()); WorkspaceItem destinationSharedFolder = workspace.getItem(folderDestinationItem.getIdSharedFolder()); - logger.trace("[4] HttpServletRequest is: URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); - if(destinationSharedFolder instanceof WorkspaceSharedFolder){ //SWITCH BEETWEEN ADDED OR UPDATED diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java index cbda885..9633dfc 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java @@ -75,6 +75,26 @@ public class WsUtil { ScopeProvider.instance.set(scope); return HomeLibrary.getUserWorkspace(username); } + + /** + * Gets the workspace. + * + * @param httpSession the http session + * @return the workspace + * @throws InternalErrorException the internal error exception + * @throws HomeNotFoundException the home not found exception + * @throws WorkspaceFolderNotFoundException the workspace folder not found exception + */ + public static Workspace getWorkspace(String username, String scopeGroupId) throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException{ + + logger.trace("Get Workspace for user = " + username); + PortalContext pContext = PortalContext.getConfiguration(); + String scope = pContext.getCurrentScope(scopeGroupId); + logger.trace("Client context scope: "+ scope + " username: "+username); + + ScopeProvider.instance.set(scope); + return HomeLibrary.getUserWorkspace(username); + } /**