diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java index b58503d..fc1f7d2 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java @@ -1,112 +1,112 @@ -package org.gcube.portlets.widgets.workspaceuploader.client; - -import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE; -import org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload; -import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload; - -import com.google.gwt.core.client.EntryPoint; -import com.google.gwt.core.client.ScriptInjector; -import com.google.gwt.core.shared.GWT; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.RootPanel; - -/** - * Entry point classes define onModuleLoad(). - */ -public class WorkspaceUploader implements EntryPoint { - - String headerTitle = "Upload in your Workspace"; - String parentId; - private Button buttonUploader; - private Button buttonDirect; - - public void onModuleLoad() { - - boolean jQueryLoaded = isjQueryLoaded(); - GWT.log("jQueryLoaded: "+jQueryLoaded); - - GWT.log("Injected : http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"); - - if (!jQueryLoaded) { - ScriptInjector.fromUrl("http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js") - .setWindow(ScriptInjector.TOP_WINDOW) - .inject(); - } - +//package org.gcube.portlets.widgets.workspaceuploader.client; +// +//import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE; +//import org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload; +//import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload; +// +//import com.google.gwt.core.client.EntryPoint; +//import com.google.gwt.core.client.ScriptInjector; +//import com.google.gwt.core.shared.GWT; +//import com.google.gwt.event.dom.client.ClickEvent; +//import com.google.gwt.event.dom.client.ClickHandler; +//import com.google.gwt.user.client.Window; +//import com.google.gwt.user.client.rpc.AsyncCallback; +//import com.google.gwt.user.client.ui.Button; +//import com.google.gwt.user.client.ui.RootPanel; +// +///** +// * Entry point classes define onModuleLoad(). +// */ +//public class WorkspaceUploader implements EntryPoint { +// +// String headerTitle = "Upload in your Workspace"; +// String parentId; +// private Button buttonUploader; +// private Button buttonDirect; +// +// public void onModuleLoad() { +// +// boolean jQueryLoaded = isjQueryLoaded(); +// GWT.log("jQueryLoaded: "+jQueryLoaded); +// +// GWT.log("Injected : http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"); +// +// if (!jQueryLoaded) { // ScriptInjector.fromUrl("http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js") // .setWindow(ScriptInjector.TOP_WINDOW) // .inject(); - - buttonUploader = new Button("Upload in your Workspace"); - buttonDirect = new Button("Upload (Stream) in your Workspace"); - enableUpload(false); - - WorkspaceUploaderServiceAsync.Util.getInstance().getWorkspaceId( - new AsyncCallback() { - - @Override - public void onSuccess(String result) { - - if (result != null) { - parentId = result; - enableUpload(true); - } else { - Window.alert("An error occurred on recovering workspace, try again later"); - enableUpload(true); - } - } - - @Override - public void onFailure(Throwable caught) { - Window.alert("An error occurred on recovering workspace, try again later"); - enableUpload(true); - } - }); - - buttonDirect.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - MultipleDilaogUpload uploadStream = new MultipleDilaogUpload(headerTitle, parentId, org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE.File); - uploadStream.initFileReader(); - uploadStream.center(); - - } - }); - - final MultipleDNDUpload dnd = new MultipleDNDUpload(); - - buttonDirect.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { +// } +// +//// ScriptInjector.fromUrl("http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js") +//// .setWindow(ScriptInjector.TOP_WINDOW) +//// .inject(); +// +// buttonUploader = new Button("Upload in your Workspace"); +// buttonDirect = new Button("Upload (Stream) in your Workspace"); +// enableUpload(false); +// +// WorkspaceUploaderServiceAsync.Util.getInstance().getWorkspaceId( +// new AsyncCallback() { +// +// @Override +// public void onSuccess(String result) { +// +// if (result != null) { +// parentId = result; +// enableUpload(true); +// } else { +// Window.alert("An error occurred on recovering workspace, try again later"); +// enableUpload(true); +// } +// } +// +// @Override +// public void onFailure(Throwable caught) { +// Window.alert("An error occurred on recovering workspace, try again later"); +// enableUpload(true); +// } +// }); +// +// buttonDirect.addClickHandler(new ClickHandler() { +// +// @Override +// public void onClick(ClickEvent event) { // MultipleDilaogUpload uploadStream = new MultipleDilaogUpload(headerTitle, parentId, org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE.File); // uploadStream.initFileReader(); // uploadStream.center(); - dnd.setParameters(parentId, UPLOAD_TYPE.File); - - } - }); - - RootPanel.get("workspace-uploader").add(dnd); - RootPanel.get("workspace-uploader").add(buttonDirect); - } - - private void enableUpload(boolean bool){ - buttonUploader.setEnabled(bool); - buttonDirect.setEnabled(bool); - } - - /** - * Checks if is j query loaded. - * - * @return true, if is j query loaded - */ - private native boolean isjQueryLoaded() /*-{ - return (typeof $wnd['jQuery'] !== 'undefined'); - }-*/; -} +// +// } +// }); +// +// final MultipleDNDUpload dnd = new MultipleDNDUpload(); +// +// buttonDirect.addClickHandler(new ClickHandler() { +// +// @Override +// public void onClick(ClickEvent event) { +//// MultipleDilaogUpload uploadStream = new MultipleDilaogUpload(headerTitle, parentId, org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE.File); +//// uploadStream.initFileReader(); +//// uploadStream.center(); +// dnd.setParameters(parentId, UPLOAD_TYPE.File); +// +// } +// }); +// +// RootPanel.get("workspace-uploader").add(dnd); +// RootPanel.get("workspace-uploader").add(buttonDirect); +// } +// +// private void enableUpload(boolean bool){ +// buttonUploader.setEnabled(bool); +// buttonDirect.setEnabled(bool); +// } +// +// /** +// * Checks if is j query loaded. +// * +// * @return true, if is j query loaded +// */ +// private native boolean isjQueryLoaded() /*-{ +// return (typeof $wnd['jQuery'] !== 'undefined'); +// }-*/; +//} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUpload.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUpload.java index ebbd6e5..59fc3ff 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUpload.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUpload.java @@ -66,6 +66,22 @@ public class MultipleDilaogUpload extends DialogUpload { this.addHandlers(); } + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.DialogBox#show() + */ + @Override + public void show() { + super.show(); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.PopupPanel#center() + */ + @Override + public void center() { + super.center(); + } + /** * Generate new upload client keys. * @@ -377,8 +393,7 @@ public class MultipleDilaogUpload extends DialogUpload { * the file delimiter * @return the files selected */ - public static native String getFilesSelected(final String tagId, - final String fileDelimiter) /*-{ + public static native String getFilesSelected(final String tagId, final String fileDelimiter) /*-{ var count = $wnd.$("#" + tagId)[0].files.length; console.log(count); var out = ""; @@ -392,150 +407,150 @@ public class MultipleDilaogUpload extends DialogUpload { }-*/; - /** - * Inits the file reader. - */ - public void initFileReader() { - initW3CFileReader(instance, MultipleDilaogUpload.FILE_DELEMITER); - } - - /** - * Gets the files selected. - * - * @param instance the instance - * @param fileDelimiter the file delimiter - * @return the files selected - */ - public static native String initW3CFileReader(MultipleDilaogUpload instance, String fileDelimiter) /*-{ - console.log("initW3CFileReader"); - - if (window.FileReader) { - console.log("before load"); - var drop = $wnd.$('#drop_target')[0]; - console.log("drop is " + drop); - - function cancel(e) { - if (e.preventDefault) { - e.preventDefault(); - } - return false; - } - - function addEventHandler(obj, evt, handler) { - if (obj.addEventListener) { - // W3C method - obj.addEventListener(evt, handler, false); - } else if (obj.attachEvent) { - // IE method. - obj.attachEvent('on' + evt, handler); - } else { - // Old school method. - obj['on' + evt] = handler; - } - } - - addEventHandler(drop, 'drop', function(e) { - e = e || window.event; // get window.event if e argument missing (in IE) - if (e.preventDefault) { - e.preventDefault(); - } // stops the browser from redirecting off to the image. - - var servlet = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::servlet; - - var opts = { - url : servlet, - type : "POST", - processData : false - }; - - var idfolder = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::idFolder; - console.log("idfolder: " + idfolder); - - var uploadType = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::type; - console.log("uploadType: " + uploadType); - - var dt = e.dataTransfer; - var files = dt.files; - - var filesSelected = ""; - - for (i = 0; i < files.length; i++) { - filesSelected += files[i].name + fileDelimiter; - } - console.log("filesSelected: " + filesSelected); - -// var files = filese -// var files = filesSelected.split(fileDelimiter); - console.log("files: " + files); - - instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::isLimitExceeded(I)(files.length); - - instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::generateFakeUploaders(Ljava/lang/String;Ljava/lang/String;)(filesSelected,idfolder); - - instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::createJsonKeyForFiles()(); - - var jsonKeys = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::jsonKeys; - console.log("jsonKeys: " + jsonKeys); - - for (var i = 0; i < files.length; i++) { - var file = files[i]; -// var reader = new FileReader(); - - var xhr = new XMLHttpRequest(); -// var upload = xhr.upload; - -// upload.fileIndex = i; -// upload.fileObj = file; -// upload.downloadStartTime = new Date().getTime(); -// upload.currentStart = upload.downloadStartTime; -// upload.currentProgress = 0; -// upload.startData = 0; - -// console.log("upload: " + upload.toString()); - // add listeners - -// upload.addEventListener("progress", progress, false); -// upload.addEventListener("load", load, false); - - xhr.open(opts.type, opts.url, true); -// var boundary = "AJAX--------------" + (new Date).getTime(); -// var contentType = "multipart/form-data; boundary=" + boundary; -// xhr.setRequestHeader("Content-Type", contentType); - // Use native function(Chrome 5+ ,Safari 5+ and Firefox 4+), for dealing - // with multipart/form-data and boundray generation - - var formdata = new FormData(); // see - // https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Using_FormData_objects - // 'file' can be any string which you would like to associte with - // uploaded file even for example file.type eg: - // formdata.append(file.type, file); - // formdata.append(file.fileName, file); - - formdata.append("isOverwrite", "false"); - - // $wnd.exportCreateJsonKeyForFiles(); - // - // $wnd.exportAddNewSubmitToMonitor(); - - formdata.append("client_upload_keys", jsonKeys); - formdata.append("uploadType", uploadType); - formdata.append("idFolder", idfolder); - formdata.append('uploadFormElement', file); - - xhr.send(formdata); - - instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::addNewSubmitToMonitor()(); - -// reader.readAsText(file); - } - return false; - }) - - // Tells the browser that we *can* drop on this target - addEventHandler(drop, 'dragover', cancel); - addEventHandler(drop, 'dragenter', cancel); - } else { - $wnd.$('#drop_target')[0].innerHTML = 'Your browser does not support the HTML5 FileReader.'; - } - }-*/; +// /** +// * Inits the file reader. +// */ +// public void initFileReader() { +// initW3CFileReader(instance, MultipleDilaogUpload.FILE_DELEMITER); +// } +// +// /** +// * Gets the files selected. +// * +// * @param instance the instance +// * @param fileDelimiter the file delimiter +// * @return the files selected +// */ +// public static native String initW3CFileReader(MultipleDilaogUpload instance, String fileDelimiter) /*-{ +// console.log("initW3CFileReader"); +// +// if (window.FileReader) { +// console.log("before load"); +// var drop = $wnd.$('#drop_target')[0]; +// console.log("drop is " + drop); +// +// function cancel(e) { +// if (e.preventDefault) { +// e.preventDefault(); +// } +// return false; +// } +// +// function addEventHandler(obj, evt, handler) { +// if (obj.addEventListener) { +// // W3C method +// obj.addEventListener(evt, handler, false); +// } else if (obj.attachEvent) { +// // IE method. +// obj.attachEvent('on' + evt, handler); +// } else { +// // Old school method. +// obj['on' + evt] = handler; +// } +// } +// +// addEventHandler(drop, 'drop', function(e) { +// e = e || window.event; // get window.event if e argument missing (in IE) +// if (e.preventDefault) { +// e.preventDefault(); +// } // stops the browser from redirecting off to the image. +// +// var servlet = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::servlet; +// +// var opts = { +// url : servlet, +// type : "POST", +// processData : false +// }; +// +// var idfolder = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::idFolder; +// console.log("idfolder: " + idfolder); +// +// var uploadType = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::type; +// console.log("uploadType: " + uploadType); +// +// var dt = e.dataTransfer; +// var files = dt.files; +// +// var filesSelected = ""; +// +// for (i = 0; i < files.length; i++) { +// filesSelected += files[i].name + fileDelimiter; +// } +// console.log("filesSelected: " + filesSelected); +// +//// var files = filese +//// var files = filesSelected.split(fileDelimiter); +// console.log("files: " + files); +// +// instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::isLimitExceeded(I)(files.length); +// +// instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::generateFakeUploaders(Ljava/lang/String;Ljava/lang/String;)(filesSelected,idfolder); +// +// instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::createJsonKeyForFiles()(); +// +// var jsonKeys = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::jsonKeys; +// console.log("jsonKeys: " + jsonKeys); +// +// for (var i = 0; i < files.length; i++) { +// var file = files[i]; +//// var reader = new FileReader(); +// +// var xhr = new XMLHttpRequest(); +//// var upload = xhr.upload; +// +//// upload.fileIndex = i; +//// upload.fileObj = file; +//// upload.downloadStartTime = new Date().getTime(); +//// upload.currentStart = upload.downloadStartTime; +//// upload.currentProgress = 0; +//// upload.startData = 0; +// +//// console.log("upload: " + upload.toString()); +// // add listeners +// +//// upload.addEventListener("progress", progress, false); +//// upload.addEventListener("load", load, false); +// +// xhr.open(opts.type, opts.url, true); +//// var boundary = "AJAX--------------" + (new Date).getTime(); +//// var contentType = "multipart/form-data; boundary=" + boundary; +//// xhr.setRequestHeader("Content-Type", contentType); +// // Use native function(Chrome 5+ ,Safari 5+ and Firefox 4+), for dealing +// // with multipart/form-data and boundray generation +// +// var formdata = new FormData(); // see +// // https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Using_FormData_objects +// // 'file' can be any string which you would like to associte with +// // uploaded file even for example file.type eg: +// // formdata.append(file.type, file); +// // formdata.append(file.fileName, file); +// +// formdata.append("isOverwrite", "false"); +// +// // $wnd.exportCreateJsonKeyForFiles(); +// // +// // $wnd.exportAddNewSubmitToMonitor(); +// +// formdata.append("client_upload_keys", jsonKeys); +// formdata.append("uploadType", uploadType); +// formdata.append("idFolder", idfolder); +// formdata.append('uploadFormElement', file); +// +// xhr.send(formdata); +// +// instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload::addNewSubmitToMonitor()(); +// +//// reader.readAsText(file); +// } +// return false; +// }) +// +// // Tells the browser that we *can* drop on this target +// addEventHandler(drop, 'dragover', cancel); +// addEventHandler(drop, 'dragenter', cancel); +// } else { +// $wnd.$('#drop_target')[0].innerHTML = 'Your browser does not support the HTML5 FileReader.'; +// } +// }-*/; } diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/WorkspaceFieldsUploadManager.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/WorkspaceFieldsUploadManager.java index 4feedae..33ca521 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/WorkspaceFieldsUploadManager.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/WorkspaceFieldsUploadManager.java @@ -4,6 +4,7 @@ package org.gcube.portlets.widgets.workspaceuploader.client.uploader; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.gcube.portlets.widgets.workspaceuploader.client.ConstantsWorkspaceUploader; @@ -120,7 +121,7 @@ public class WorkspaceFieldsUploadManager { } } - GWT.log("generating fake uploaders on: "+files.toString()); + GWT.log("generating fake uploaders on: "+Arrays.asList(files).toString()); fakeUploaders = new ArrayList(files.length); for (int i = 0; i < files.length; i++) { WorkspaceUploaderItem fakeItem = new WorkspaceUploaderItem(); 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 9947faa..385ff0d 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 @@ -161,13 +161,14 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload initW3CFileReader(this, FILE_DELEMITER); } + + /** - * Inits the workspace fields. + * New workspace fields manager for uuid. * - * @param uploadUUID - * the upload uuid + * @param uploadUUID the upload uuid */ - private void initWorkspaceFields(String uploadUUID) { + private void newWorkspaceFieldsManagerForUUID(String uploadUUID) { fields.put(uploadUUID, new WorkspaceFieldsUploadManager()); } @@ -206,7 +207,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload * the upload uuid */ private void addNewSubmitToMonitor(String uploadUUID) { - WorkspaceFieldsUploadManager field = getField(uploadUUID); + WorkspaceFieldsUploadManager field = getFieldsUploadManager(uploadUUID); field.addNewSubmitToMonitor(); } @@ -217,7 +218,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload * the upload uuid */ private void createJsonKeyForFiles(String uploadUUID) { - WorkspaceFieldsUploadManager field = getField(uploadUUID); + WorkspaceFieldsUploadManager field = getFieldsUploadManager(uploadUUID); field.createJsonKeyForFiles(); } @@ -231,20 +232,19 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload * @param uploadUUID * the upload uuid */ - private void generateFakeUploaders(String filesSelected, String parentId, - String uploadUUID) { - WorkspaceFieldsUploadManager field = getField(uploadUUID); + private void generateFakeUploaders(String filesSelected, String parentId, String uploadUUID) { + WorkspaceFieldsUploadManager field = getFieldsUploadManager(uploadUUID); field.generateFakeUploaders(filesSelected, parentId); } + /** - * Gets the fields. + * Gets the field upload manager. * - * @param uploadUUID - * the upload uuid - * @return the fields + * @param uploadUUID the upload uuid + * @return the field upload manager */ - private WorkspaceFieldsUploadManager getField(String uploadUUID) { + private WorkspaceFieldsUploadManager getFieldsUploadManager(String uploadUUID) { return fields.get(uploadUUID); } @@ -255,7 +255,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload * the upload uuid */ private void updateJsonKeys(String uploadUUID) { - WorkspaceFieldsUploadManager field = getField(uploadUUID); + WorkspaceFieldsUploadManager field = getFieldsUploadManager(uploadUUID); jsonKeys.put(uploadUUID, field.getJsonKeys()); // this.jsonKeys = field.getJsonKeys(); } @@ -533,7 +533,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload var uploadUUID = generateUUID(); console.log("uploadKey: " + uploadUUID); //NEW WORKSPACE FIELDS - instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::initWorkspaceFields(Ljava/lang/String;)(uploadUUID); + instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::newWorkspaceFieldsManagerForUUID(Ljava/lang/String;)(uploadUUID); var servlet = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::servlet; @@ -584,12 +584,12 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload var numFolder = 0; for (var i = 0; i < files.length; i++) { var file = files[i]; - var filesSelected = files[i].name + fileDelimiter; + var fileSelected = files[i].name + fileDelimiter; if (!isFolder(file)) { - console.log("filesSelected: " + filesSelected); + console.log("fileSelected: " + fileSelected); console.log("files: " + files); - instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::generateFakeUploaders(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)(filesSelected,idfolder,uploadUUID); + instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::generateFakeUploaders(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)(fileSelected,idfolder,uploadUUID); instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::createJsonKeyForFiles(Ljava/lang/String;)(uploadUUID); instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::updateJsonKeys(Ljava/lang/String;)(uploadUUID); 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 c4e65c8..c3c677b 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 @@ -741,7 +741,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet }finally{ try { // StreamUtils.deleteTempFile(file); - WsUtil.eraseWorkspaceUploaderInSession(httpSession, workspaceUploader.getIdentifier()); + WsUtil.setErasableWorkspaceUploaderInSession(httpSession, workspaceUploader.getIdentifier()); } catch (Exception e2) { // TODO: handle exception } @@ -803,7 +803,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet }finally{ try { // StreamUtils.deleteTempFile(fileInputStream); - WsUtil.eraseWorkspaceUploaderInSession(httpSession, workspaceUploader.getIdentifier()); + WsUtil.setErasableWorkspaceUploaderInSession(httpSession, workspaceUploader.getIdentifier()); } catch (Exception e2) { // TODO: handle exception } diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java index 2231b56..cb62e83 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java @@ -1,5 +1,7 @@ package org.gcube.portlets.widgets.workspaceuploader.server; +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; @@ -37,6 +39,7 @@ public class WorkspaceUploaderServiceImpl extends RemoteServiceServlet implement } logger.trace("Get UploadStatus for id: "+identifier); WorkspaceUploaderItem uploader = WsUtil.getWorkspaceUploaderInSession(getThreadLocalRequest().getSession(), identifier); + logger.trace("Uploader status for id: "+identifier +" returns "+uploader); if (uploader == null) { WorkspaceUploaderItem waitingUpload = new WorkspaceUploaderItem(identifier, null, UPLOAD_STATUS.WAIT, "Upload waiting..", new UploadProgress()); @@ -56,10 +59,42 @@ public class WorkspaceUploaderServiceImpl extends RemoteServiceServlet implement progress = "upload progress is null or last event is null"; logger.info("returning uploader: "+uploader.getClientUploadKey() +" status: "+uploader.getUploadStatus() +", file: "+uploader.getFile().toString() +", progress: "+progress); + + checkUploaderErasable(getThreadLocalRequest().getSession(), uploader); return uploader; } + + /** + * Check uploader erasable. + * + * @param httpSession the http session + * @param uploader the uploader + */ + private void checkUploaderErasable(final HttpSession httpSession, final WorkspaceUploaderItem uploader){ + logger.trace("Checking Uploader erasable..."); + + if(uploader==null){ + logger.error("Uploader is null, returning.."); + return; + } + + new Thread(){ + @Override + public void run() { + try { + + logger.trace("Uploader: "+uploader.getClientUploadKey() +"is erasable?"); + WsUtil.eraseWorkspaceUploaderInSession(httpSession, uploader); + } + catch (Exception e) { + logger.warn("Error during checkUploaderErasable: ", e); + } + } + }.start(); + } + /* (non-Javadoc) * @see org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploaderService#getWorkspaceId() */ diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/UploadProgressListener.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/UploadProgressListener.java index 72d43cf..ae6ab6d 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/UploadProgressListener.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/UploadProgressListener.java @@ -175,6 +175,9 @@ public class UploadProgressListener extends AbstractUploadProgressListener { public void remove() { logger.debug(sessionKey + " removing: " + toString()); if (getSession() != null) { +// logger.debug(sessionKey + " skipping remove. A TODO must be realized"); +// /*TODO REMOVE SESSION KEY FROM SESSION MUST BE MANAGED IN ANOTHER WAY IN ORDER TO AVOID THAT +// * IT'S REMOVED FROM SESSION BEFORE THAT POLLING RETRIEVES STATUS, USE A FLAG REMOVED?*/ getSession().removeAttribute(sessionKey); logger.info("Removed from session: " + toString()); } 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 97480bc..196247e 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 @@ -128,7 +128,7 @@ public class WorkspaceUploaderMng { }finally{ try { // StreamUtils.deleteTempFile(uploadFile); - WsUtil.eraseWorkspaceUploaderInSession(httpSession, workspaceUploader.getIdentifier()); + WsUtil.setErasableWorkspaceUploaderInSession(httpSession, workspaceUploader.getIdentifier()); } catch (Exception e2) { } } @@ -187,7 +187,7 @@ public class WorkspaceUploaderMng { }finally{ try { // StreamUtils.deleteTempFile(uploadFile); - WsUtil.eraseWorkspaceUploaderInSession(httpSession, workspaceUploader.getIdentifier()); + WsUtil.setErasableWorkspaceUploaderInSession(httpSession, workspaceUploader.getIdentifier()); } catch (Exception e2) { // TODO: handle exception } 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 cbcab49..453aa4f 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 @@ -38,7 +38,7 @@ public class WsUtil { public static final String NOTIFICATION_PORTLET_CLASS_ID = "org.gcube.portlets.user.workspace.server.GWTWorkspaceServiceImpl"; //IN DEV public static final String TEST_SCOPE = "/gcube/devsec"; - public static String TEST_USER = "test.user"; + public static String TEST_USER = "francesco.mangiacrapa"; public static String TEST_USER_FULL_NAME = "Test User"; @@ -222,6 +222,27 @@ public class WsUtil { logger.debug("Added uploader: "+uploader.getIdentifier() +" in session"); } + /** + * Erase workspace uploader in session. + * + * @param httpSession the http session + * @param uploader the uploader + * @throws Exception the exception + */ + public static void eraseWorkspaceUploaderInSession(final HttpSession httpSession, WorkspaceUploaderItem uploader) throws Exception + { + logger.trace("Erase WorkspaceUploader workspace uploader in session: "+uploader.getIdentifier() + ", erasable? "+uploader.isErasable()); + final ASLSession session = getAslSession(httpSession); + + if(uploader==null || uploader.getIdentifier()==null || uploader.getIdentifier().isEmpty()) + throw new Exception("Invalid uploader"); + + if(uploader.isErasable()){ + session.setAttribute(uploader.getIdentifier(), null); + logger.info("Erased uploader: "+uploader.getIdentifier() +" with null value"); + } + } + /** * Gets the workspace uploader in session. @@ -244,20 +265,23 @@ public class WsUtil { /** - * Erase workspace uploader in session. + * Sets the erasable workspace uploader in session. * * @param httpSession the http session * @param uploaderIdentifier the uploader identifier * @return true, if successful * @throws Exception the exception */ - public static boolean eraseWorkspaceUploaderInSession(final HttpSession httpSession, String uploaderIdentifier) throws Exception + public static boolean setErasableWorkspaceUploaderInSession(final HttpSession httpSession, String uploaderIdentifier) throws Exception { WorkspaceUploaderItem uploader = getWorkspaceUploaderInSession(httpSession, uploaderIdentifier); if(uploader!=null){ - logger.debug("Erasing uploader: "+uploader.getIdentifier() +" in session, adding null value"); - uploader = null; + /*TODO REMOVE SESSION KEY FROM SESSION MUST BE MANAGED IN ANOTHER WAY IN ORDER TO AVOID THATH IT'S REMOVED FROM SESSION BEFORE THAT + * POLLING RETRIEVES STATUS, USE A FLAG REMOVED?*/ + logger.debug("Set erasable uploader: "+uploader.getIdentifier() +" in session"); +// uploader = null; + uploader.setErasable(true); putWorkspaceUploaderInSession(httpSession, uploader); return true; } diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/WorkspaceUploaderItem.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/WorkspaceUploaderItem.java index 4d0efdf..8886daf 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/WorkspaceUploaderItem.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/WorkspaceUploaderItem.java @@ -1,5 +1,5 @@ /** - * + * */ package org.gcube.portlets.widgets.workspaceuploader.shared; @@ -12,9 +12,9 @@ import java.io.Serializable; * Aug 3, 2015 */ public class WorkspaceUploaderItem implements Serializable{ - + /** - * + * */ private static final long serialVersionUID = -7657531873615480050L; @@ -26,16 +26,16 @@ public class WorkspaceUploaderItem implements Serializable{ * Aug 6, 2015 */ public static enum UPLOAD_STATUS{ - + WAIT("WAIT", "wait"), IN_PROGRESS("IN_PROGRESS", "in progress"), FAILED("FAILED", "failed"), ABORTED("ABORTED", "aborted"), COMPLETED("COMPLETED", "completed"); - + protected String id; protected String label; - + /** * Instantiates a new upload status. * @@ -47,7 +47,7 @@ public class WorkspaceUploaderItem implements Serializable{ this.label = label; } } - + private String identifier; private WorkspaceUploadFile file; private UPLOAD_STATUS uploadStatus; @@ -56,6 +56,7 @@ public class WorkspaceUploaderItem implements Serializable{ private UploadProgress uploadProgress; private Boolean isOverwrite; // private Long threadId; + private boolean erasable; /** * Instantiates a new workspace uploader item. @@ -158,7 +159,7 @@ public class WorkspaceUploaderItem implements Serializable{ public void setUploadStatus(UPLOAD_STATUS uploadStatus) { this.uploadStatus = uploadStatus; } - + /** * Gets the client upload key. @@ -178,7 +179,7 @@ public class WorkspaceUploaderItem implements Serializable{ public void setClientUploadKey(String clientUploadKey) { this.clientUploadKey = clientUploadKey; } - + /** * Gets the upload progress. * @@ -211,11 +212,32 @@ public class WorkspaceUploaderItem implements Serializable{ this.isOverwrite = isOverwrite; } + /** + * Sets the erasable. + * + * @param b the new erasable + */ + public void setErasable(boolean b) { + this.erasable = b; + } + + + /** + * Checks if is erasable. + * + * @return the erasable + */ + public boolean isErasable() { + + return erasable; + } + /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { + StringBuilder builder = new StringBuilder(); builder.append("WorkspaceUploaderItem [identifier="); builder.append(identifier); @@ -227,11 +249,16 @@ public class WorkspaceUploaderItem implements Serializable{ builder.append(statusDescription); builder.append(", clientUploadKey="); builder.append(clientUploadKey); - builder.append(", uploadProgress="); - builder.append(uploadProgress); +// builder.append(", uploadProgress="); +// builder.append(uploadProgress); builder.append(", isOverwrite="); builder.append(isOverwrite); + builder.append(", erasable="); + builder.append(erasable); builder.append("]"); return builder.toString(); } + + + }