diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderIcons.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderIcons.java
index d1372f9..3b1193a 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderIcons.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderIcons.java
@@ -1,5 +1,5 @@
/**
- *
+ *
*/
package org.gcube.portlets.widgets.workspaceuploader.client.resource;
@@ -61,7 +61,7 @@ public interface WorkspaceUploaderIcons extends ClientBundle {
*/
@Source("closewindow.png")
ImageResource closeWin();
-
+
/**
* Wait icon.
*
@@ -75,4 +75,10 @@ public interface WorkspaceUploaderIcons extends ClientBundle {
*/
@Source("upload.gif")
ImageResource uploadIcon();
+
+ /**
+ * @return
+ */
+ @Source("abort.png")
+ ImageResource abort();
}
diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderResources.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderResources.java
index eb61f80..0f28167 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderResources.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderResources.java
@@ -1,5 +1,5 @@
/**
- *
+ *
*/
package org.gcube.portlets.widgets.workspaceuploader.client.resource;
@@ -51,6 +51,15 @@ public class WorkspaceUploaderResources {
return new Image(ICONS.cancel());
}
+ /**
+ * Gets the image cancel.
+ *
+ * @return the image cancel
+ */
+ public static Image getImageAbort() {
+ return new Image(ICONS.abort());
+ }
+
/**
* Gets the image cancel red.
*
diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/abort.png b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/abort.png
new file mode 100644
index 0000000..7a0a30a
Binary files /dev/null and b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/abort.png differ
diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/TimerUpload.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/TimerUpload.java
index a5aef67..ee77f43 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/TimerUpload.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/TimerUpload.java
@@ -80,7 +80,8 @@ public class TimerUpload extends Timer{
cancel();
monitor.goNextUploaderAfterKey(workspaceUploader.getClientUploadKey());
}else if(result.getUploadStatus().equals(UPLOAD_STATUS.FAILED)){
- GWT.log("Upload Failed "+result.getFile().getItemId() +" name: "+result.getFile().getFileName());
+ //GWT.log("Upload Failed "+result.getFile().getItemId() +" name: "+result.getFile().getFileName());
+ GWT.log("Upload Failed Upload Key: "+result.getClientUploadKey() +" status description: "+result.getStatusDescription());
// monitor.deleteUploaderByClientKey(workspaceUploader.getClientUploadKey());
// queue.remove(workspaceUploader.getClientUploadKey());
monitor.notifyUploadError(result.getFile().getParentId(), null, result.getStatusDescription(), null);
@@ -90,7 +91,7 @@ public class TimerUpload extends Timer{
monitor.goNextUploaderAfterKey(workspaceUploader.getClientUploadKey());
}else if(result.getUploadStatus().equals(UPLOAD_STATUS.ABORTED)){
// monitor.deleteUploaderByClientKey(workspaceUploader.getClientUploadKey());
- GWT.log("Upload Aborted "+result.getFile().getItemId() +" name: "+result.getFile().getFileName());
+ GWT.log("Upload Aborted Upload Key: "+result.getClientUploadKey() +" status description: "+result.getStatusDescription());
cancel();
monitor.notifyUploadAborted(result.getFile().getParentId(), null);
monitor.goNextUploaderAfterKey(workspaceUploader.getClientUploadKey());
diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/UploaderProgressView.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/UploaderProgressView.java
index f6c65d3..e3f2237 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/UploaderProgressView.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/UploaderProgressView.java
@@ -120,6 +120,18 @@ public class UploaderProgressView {
// GWT.log(text);
html.setHTML(text);
html.setTitle(uploader.getStatusDescription());
+ // bar.update(uploader.getUploadProgress().getLastEvent().getReadPercentage());
+ try{
+ hpBar.clear();
+ }catch (Exception e) {}
+ break;
+ case ABORTED:
+ setVisibleBar(true);
+ text = "
";
+ text+="
"+StringUtil.ellipsize(uploader.getStatusDescription(), MAX_CHARS, 0)+" ";
+ // GWT.log(text);
+ html.setHTML(text);
+ html.setTitle(uploader.getStatusDescription());
// bar.update(uploader.getUploadProgress().getLastEvent().getReadPercentage());
try{
hpBar.clear();
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 72f1b6c..b0902eb 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
@@ -8,8 +8,10 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.Random;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -104,6 +106,15 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet
public static final String ARCHIVE = "Archive";
+ public static final Map SUPPORTED_UNPACKING_ARCHIVE = new HashMap() {{
+ put("zip","application/zip"); //.zip
+ put("7z","application/x-7z-compressed"); //.7z
+ put("tar","application/x-tar"); //tar
+ put("java archive","application/java-archive");//.jar
+ put("jar","application/x-java-archive");
+ put("gtar","application/x-gtar");
+ }};
+
// public static final String D4ST = Extensions.REPORT_TEMPLATE.getName(); //extension of Report Template type
// public static final String D4SR = Extensions.REPORT.getName(); //extension of Report type
@@ -538,25 +549,45 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet
saveWorkspaceUploaderInSession(workspaceUploader, request.getSession());
- String contentType = null; //It's set into HL
-
+ String contentType = uploadItem.getContentType();
+ logger.debug("Stream content type: "+contentType);
if(uploadType.compareTo(ARCHIVE)==0){ //UPLOAD ARCHIVE
- //TODO UPLOAD ARCHIVE
- logger.debug("Archive content type: "+uploadItem.getContentType());
- workspaceUploader = WorkspaceUploaderMng.uploadArchive(storageHubWrapper, user, scopeGroupId, workspaceUploader, request, itemName, inputStream, destinationFolder, size);
-// if (MimeTypeUtil.isZipContentType(uploadItem.getContentType())){ //UNZIP??
-// logger.debug("Unziping content");
-// //THE WORKSPACE HAS BEEN INSTANCIED ABOVE
+ logger.debug("Uploding archive....");
+ boolean isSupportedArchive = false;
+ for (String archive_extension : SUPPORTED_UNPACKING_ARCHIVE.keySet()) {
- if(workspaceUploader==null)
- throw new Exception("Error when creating uploader, it is null!");
+ //is content-type supported?
+ if(SUPPORTED_UNPACKING_ARCHIVE.get(archive_extension).compareTo(uploadItem.getContentType())==0){
+ isSupportedArchive = true;
+ break;
+ }
+ }
- sendMessage(response, workspaceUploader.getIdentifier());
+ if (isSupportedArchive){ //Uploading Archive OK
+
+ logger.debug("Supported archive " +uploadItem.getContentType() +" for unpacking");
+ workspaceUploader = WorkspaceUploaderMng.uploadArchive(storageHubWrapper, user, scopeGroupId, workspaceUploader, request, itemName, inputStream, destinationFolder, size);
+// if (MimeTypeUtil.isZipContentType(uploadItem.getContentType())){ //UNZIP??
+// logger.debug("Unziping content");
+// //THE WORKSPACE HAS BEEN INSTANCIED ABOVE
+
+ if(workspaceUploader==null)
+ throw new Exception("Error when creating uploader, it is null!");
+
+ sendMessage(response, workspaceUploader.getIdentifier());
+
+ }else{
+ logger.warn("Unsuppoterd archive for unpacking: " +uploadItem.getContentType());
+ saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.ABORTED, "Unpacking not supported for: "+uploadItem.getContentType()+" Supported archive are: "+SUPPORTED_UNPACKING_ARCHIVE.keySet().toString(), request.getSession());
+ sendError(response, "Internal error: Unpacking not supported for "+uploadItem.getContentType());
+ return;
+ }
}else{ //UPLOAD FILE. IT IS DEFAULT CASE
//I don't need to check this if(uploadType.compareTo(FILE)==0) {//IS FILE UPLOAD
+ logger.debug("Uploding file....");
workspaceUploader = WorkspaceUploaderMng.uploadFile(storageHubWrapper, user, scopeGroupId, request, workspaceUploader, request.getSession(), itemName, inputStream, destinationFolder, contentType, isOverwrite, size);
@@ -569,29 +600,29 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet
} catch (InsufficientPrivilegesException e) {
logger.error("Error creating elements", e);
- saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "An error occurred in the upload. Insufficient privileges", request.getSession());
+ saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "Uploading error. Insufficient privileges", request.getSession());
sendError(response, "Internal error: Insufficient privileges");
return;
} catch (InternalErrorException e) {
logger.error("Error creating elements", e);
- saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "An error occurred in the upload:"+e.getMessage(), request.getSession());
+ saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "Uploading error:"+e.getMessage(), request.getSession());
sendError(response, "Internal error: "+e.getMessage());
return;
} catch (ItemAlreadyExistException e) {
logger.error("Error creating elements", e);
- saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "An error occurred in the upload. An item with that name already exists", request.getSession());
+ saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "Uploading error. An item with that name already exists", request.getSession());
sendError(response, "Internal error: An item with that name already exists");
return;
} catch (IOException e){
logger.error("Error creating elements, is it cancel?", e);
- saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "An error occurred in the upload", request.getSession());
+ saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "Uploading error", request.getSession());
sendError(response, "Internal error: An item with that name already exists");
return;
// sendError(response, "Internal error: An item with that name already exists");
// return;
}catch (Exception e) {
logger.error("Error creating elements", e);
- saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "An error occurred in the upload. "+e.getMessage(), request.getSession());
+ saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "Uploading error. "+e.getMessage(), request.getSession());
// sendError(response, "Internal error: An error occurred on uploading the file, try again later");
// return;
}finally{
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 cc702aa..e8dceea 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
@@ -111,7 +111,7 @@ public class WorkspaceUploaderMng {
workspaceUploader.setUploadStatus(UPLOAD_STATUS.COMPLETED);
WorkspaceUploadServletStream.notifyUploadInSharedFolder(storageWrapper, currUser, scopeGroupId, request, httpSession, createdItem.getId(), createdItem.getParentId(), isOvewrite);
}else{
- workspaceUploader.setStatusDescription("An error occurred during upload: \""+itemName + "\". Try again");
+ workspaceUploader.setStatusDescription("Error on uploading: \""+itemName + "\". Try again");
workspaceUploader.setUploadStatus(UPLOAD_STATUS.FAILED);
}
try {
@@ -121,7 +121,7 @@ public class WorkspaceUploaderMng {
}
} catch (InternalErrorException e) {
logger.error("Error during upload: ",e);
- workspaceUploader.setStatusDescription("An error occurred server-side during upload: "+itemName+". "+e.getMessage() +". Try again");
+ workspaceUploader.setStatusDescription("Error on uploading: "+itemName+". "+e.getMessage());
workspaceUploader.setUploadStatus(UPLOAD_STATUS.FAILED);
try {
WsUtil.putWorkspaceUploaderInSession(httpSession, workspaceUploader);
@@ -222,7 +222,7 @@ public class WorkspaceUploaderMng {
final boolean isOvewrite = false;
WorkspaceUploadServletStream.notifyUploadInSharedFolder(storageWrapper, currUser, scopeGroupId, request, httpSession, createdItem.getId(), createdItem.getParentId(), isOvewrite);
}else{
- workspaceUploader.setStatusDescription("An error occurred during upload: \""+itemName + "\". Try again");
+ workspaceUploader.setStatusDescription("Error on uploading: \""+itemName + "\". Try again");
workspaceUploader.setUploadStatus(UPLOAD_STATUS.FAILED);
}
@@ -233,7 +233,7 @@ public class WorkspaceUploaderMng {
}
} catch (InternalErrorException e) {
logger.error("Error during upload: ",e);
- workspaceUploader.setStatusDescription("An error occurred server-side during upload: "+itemName+". "+e.getMessage() +". Try again");
+ workspaceUploader.setStatusDescription("Error on uploading: "+itemName+". "+e.getMessage());
workspaceUploader.setUploadStatus(UPLOAD_STATUS.FAILED);
try {
WsUtil.putWorkspaceUploaderInSession(httpSession, workspaceUploader);
@@ -331,7 +331,7 @@ public class WorkspaceUploaderMng {
} catch (Exception e) {
logger.error("Error when uploading Archive to HL creation: ",e);
- throw new Exception("An error occurred during upload:: "+itemName+". Try again");
+ throw new Exception("An error occurred during upload: "+itemName+". Try again");
}
}