From dbf5163ca1c174d19a2e9c5c7fa41a9a386a8290 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Tue, 28 Mar 2017 10:36:11 +0000 Subject: [PATCH] [Task #7820] D&D and Browse: create new version of existing items Updated pom version at 1.8.0 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-uploader@146379 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/changelog.xml | 6 ++++ pom.xml | 2 +- .../client/uploader/DialogUpload.java | 2 +- .../uploader/dragdrop/MultipleDNDUpload.java | 3 +- .../server/WorkspaceUploadServletStream.java | 32 +++++++++++++++---- .../server/upload/WorkspaceUploaderMng.java | 2 +- 6 files changed, 37 insertions(+), 10 deletions(-) diff --git a/distro/changelog.xml b/distro/changelog.xml index b0a2917..7aef3df 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,4 +1,10 @@ + + [Task #7820] DaD and Browse: create new version of existing + items added + Removed currUserId parameter from client-side + Removed currUserId parameter from client-side diff --git a/pom.xml b/pom.xml index a2a6f19..ca0583f 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.portlets.widgets workspace-uploader jar - 1.7.0-SNAPSHOT + 1.8.0-SNAPSHOT Workspace Uploader Widget Workspace Uploader Widget allows your application to upload file/s in the gCube Workspace diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java index 9a37ce2..6138737 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java @@ -47,7 +47,7 @@ import com.google.gwt.user.client.ui.VerticalPanel; */ public class DialogUpload extends ClosableDialog implements HasWorskpaceUploadNotificationListener{ - private Hidden hiddenOverwrite = new Hidden(ConstantsWorkspaceUploader.IS_OVERWRITE,"false"); + private Hidden hiddenOverwrite = new Hidden(ConstantsWorkspaceUploader.IS_OVERWRITE, "true"); protected final FormPanel formPanel = new FormPanel(); protected FileUpload fileUpload; protected Hidden jsonClientKeys; 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 0f24dbb..2c2aa11 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 @@ -653,7 +653,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload formdata.append("currGroupId", scopeGroupId); //formdata.append("currUserId", currUserId); - var overwrite = false; + var overwrite = true; //default D&D overwrite the item formdata.append("isOverwrite", overwrite); var numFolder = 0; @@ -688,6 +688,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload overwrite = true; console.log("overwrite confirmed!"); }else{ + overwrite = false; instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::reset()(); return; } 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 5d20525..49bde36 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 @@ -193,7 +193,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet String destinationId = null; String uploadType = null; - boolean isOverwrite = false; + boolean isOverwrite = true; //CREATE A NEW VERSION OF FILE IS BEHAVIOUR BY DEFAULT // String clientUploadKey = null; FileItemStream uploadItem = null; ArrayList listClientUploadKeys = null; @@ -225,8 +225,13 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet } if (item.isFormField() && IS_OVERWRITE.equals(item.getFieldName())){ - isOverwrite = Boolean.parseBoolean(Streams.asString(item.openStream())); - logger.debug("IS_OVERWRITE OK "+ isOverwrite); + try{ + isOverwrite = Boolean.parseBoolean(Streams.asString(item.openStream())); + logger.debug("IS_OVERWRITE OK "+ isOverwrite); + }catch(Exception e){ + //Silent exception; + } + } if(item.isFormField() && CLIENT_UPLOAD_KEYS.equals(item.getFieldName())){ @@ -445,10 +450,25 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet String itemName = ""; logger.debug("getItemName from HL"); - if(!isOverwrite) + if(!isOverwrite){ itemName = WorkspaceUtil.getUniqueName(fileName, destinationFolder); - else - itemName = fileName; + } + else{ + logger.debug("Validating overwrite checking if file with name: "+fileName+" exists into folder ID: "+destinationFolder.getId()); + boolean isReallyExisting = wa.exists(fileName, destinationFolder.getId()); + logger.debug("Existing it? "+isReallyExisting); + if(isReallyExisting){ + logger.info("forcing overwrite at 'true' in order to create new version of file: "+fileName); + isOverwrite = true; + itemName = fileName; + }else{ + itemName = WorkspaceUtil.getUniqueName(fileName, destinationFolder); + logger.debug("File with name: "+fileName+" does not exist creating new one: "+fileName); + logger.info("forcing overwrite at 'false' in order to create the new file: "+fileName); + isOverwrite = false; + itemName = fileName; + } + } Long size = getContentLength(request); logger.debug("size: " + size + " bytes"); diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java index 259acb3..567d9e9 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java @@ -68,7 +68,7 @@ public class WorkspaceUploaderMng { * @throws IOException Signals that an I/O exception has occurred. */ private static WorkspaceUploaderItem createWorkspaceUploaderFile(final GCubeUser currUser, final String scopeGroupId, final HttpServletRequest request, final WorkspaceUploaderItem workspaceUploader, final HttpSession httpSession, final boolean isOvewrite, final Workspace wa, final InputStream uploadFile, final String itemName, final WorkspaceFolder destinationFolder, final String contentType, final long totalBytes) throws InternalErrorException, IOException{ - logger.debug("Creating WorkspaceUploaderFile..."); + logger.debug("Creating WorkspaceUploaderFile... isOvewrite: " +isOvewrite); workspaceUploader.setUploadStatus(UPLOAD_STATUS.IN_PROGRESS); workspaceUploader.setStatusDescription("Uploading "+itemName);