Compare commits

...

2 Commits

Author SHA1 Message Date
Francesco Mangiacrapa 284f2e5dca added getHeaders iterator 2024-07-30 15:41:03 +02:00
Francesco Mangiacrapa 19ae7f2f66 - [#27898] Updated `uploadFile` and `uploadArchive` methods. They
include the `fileSize` parameter
2024-07-29 16:02:57 +02:00
6 changed files with 436 additions and 390 deletions

View File

@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v2.1.1-SNAPSHOT] - 2024-07-29
- [#27898] Updated `uploadFile` and `uploadArchive` methods. They include the `fileSize` parameter
## [v2.1.0] - 2022-05-03
#### Enhancements

55
pom.xml
View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>maven-parent</artifactId>
<groupId>org.gcube.tools</groupId>
<version>1.1.0</version>
<version>1.2.0</version>
<relativePath />
</parent>
@ -12,7 +13,7 @@
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>workspace-uploader</artifactId>
<packaging>jar</packaging>
<version>2.1.0</version>
<version>2.1.1-SNAPSHOT</version>
<name>Workspace Uploader Widget</name>
<description>Workspace Uploader Widget allows your application to upload file/s in the gCube Workspace</description>
<scm>
@ -30,6 +31,7 @@
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven-portal-bom>3.7.0</maven-portal-bom>
</properties>
<dependencyManagement>
@ -37,26 +39,40 @@
<dependency>
<groupId>org.gcube.distribution</groupId>
<artifactId>maven-portal-bom</artifactId>
<version>3.6.3</version>
<version>${maven-portal-bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Profiles required for managing SHUB vesion via maven-portal-bom -->
<profiles>
<!-- PROD profile -->
<profile>
<id>localRun</id>
<dependencies>
<dependency>
<groupId>xerces</groupId>
<artifactId>xerces</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
<id>workspace-release-profile</id>
<activation>
<property>
<name>Release</name>
</property>
</activation>
<properties>
<maven-portal-bom>3.7.0</maven-portal-bom>
</properties>
</profile>
<!-- DEV profile -->
<profile>
<id>workspace-snapshot-profile</id>
<activation>
<property>
<name>!Release</name>
</property>
</activation>
<properties>
<maven-portal-bom>3.8.0-SNAPSHOT</maven-portal-bom>
</properties>
</profile>
</profiles>
<dependencies>
<!-- Google Web Toolkit (GWT) -->
@ -117,7 +133,7 @@
<artifactId>storagehub-client-library</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>storagehub-client-wrapper</artifactId>
@ -131,7 +147,7 @@
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
@ -143,6 +159,11 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<!-- Logger -->
<dependency>
<groupId>org.slf4j</groupId>
@ -262,8 +283,8 @@
</execution>
</executions>
</plugin>
<!-- GWT Maven Plugin - not needed -->
<!-- GWT Maven Plugin -->
<plugin>

View File

@ -43,21 +43,17 @@ public class MultipleDilaogUpload extends DialogUpload {
private String idFolder;
private UPLOAD_TYPE type;
/**
* Instantiates a new multiple dilaog upload stream.
*
* @param headerTitle
* the header title
* @param parentId
* the parent id
* @param uploadType
* the upload type
* @param headerTitle the header title
* @param parentId the parent id
* @param uploadType the upload type
*/
public MultipleDilaogUpload(String headerTitle, String parentId, UPLOAD_TYPE uploadType) {
super(headerTitle, parentId, uploadType);
this.type =uploadType;
this.type = uploadType;
this.idFolder = parentId;
fileUploadID = GenerateUUID.get(10, 16); // is tagID
@ -65,7 +61,9 @@ public class MultipleDilaogUpload extends DialogUpload {
this.addHandlers();
}
/* (non-Javadoc)
/*
* (non-Javadoc)
*
* @see com.google.gwt.user.client.ui.DialogBox#show()
*/
@Override
@ -73,7 +71,9 @@ public class MultipleDilaogUpload extends DialogUpload {
super.show();
}
/* (non-Javadoc)
/*
* (non-Javadoc)
*
* @see com.google.gwt.user.client.ui.PopupPanel#center()
*/
@Override
@ -84,13 +84,13 @@ public class MultipleDilaogUpload extends DialogUpload {
/**
* Generate new upload client keys.
*
* @param files the files
* @param parentId the parent id
* @param files the files
* @param parentId the parent id
* @return the list
*/
public void generateFakeUploaders(String filesSelected, String parentId) {
if(filesSelected==null || filesSelected.isEmpty())
if (filesSelected == null || filesSelected.isEmpty())
return;
String[] files = filesSelected.split(FILE_DELEMITER);
@ -99,11 +99,12 @@ public class MultipleDilaogUpload extends DialogUpload {
for (int i = 0; i < files.length; i++) {
String normalizedFileName = files[i];
if (normalizedFileName.contains("\\")) {
files[i] = normalizedFileName.substring(normalizedFileName.lastIndexOf("\\") + 1); // remove C:\fakepath if exists
files[i] = normalizedFileName.substring(normalizedFileName.lastIndexOf("\\") + 1); // remove C:\fakepath
// if exists
}
}
GWT.log("generating fake uploaders on: "+Arrays.asList(files.toString()));
GWT.log("generating fake uploaders on: " + Arrays.asList(files.toString()));
fakeUploaders = new ArrayList<WorkspaceUploaderItem>(files.length);
for (int i = 0; i < files.length; i++) {
WorkspaceUploaderItem fakeItem = new WorkspaceUploaderItem();
@ -116,7 +117,7 @@ public class MultipleDilaogUpload extends DialogUpload {
fakeUploaders.add(fakeItem);
}
GWT.log("fakeUploaders generated: "+fakeUploaders.toString());
GWT.log("fakeUploaders generated: " + fakeUploaders.toString());
// return fakeUploaders;
}
@ -141,13 +142,11 @@ public class MultipleDilaogUpload extends DialogUpload {
if (result == null) {
removeLoading();
new DialogResult(null, "Error during upload",
"An error occurred during file upload.").center();
new DialogResult(null, "Error during upload", "An error occurred during file upload.").center();
return;
}
String strippedResult = new HTML(result).getText();
final HandlerResultMessage resultMessage = HandlerResultMessage
.parseResult(strippedResult);
final HandlerResultMessage resultMessage = HandlerResultMessage.parseResult(strippedResult);
switch (resultMessage.getStatus()) {
case ERROR:
@ -159,12 +158,12 @@ public class MultipleDilaogUpload extends DialogUpload {
GWT.log("Error during upload " + resultMessage.getMessage());
break;
case WARN: {
GWT.log("Upload completed with warnings "+ resultMessage.getMessage());
GWT.log("Upload completed with warnings " + resultMessage.getMessage());
removeLoading();
break;
}
case SESSION_EXPIRED:{
GWT.log("Upload aborted due to session expired: "+ resultMessage.getMessage());
case SESSION_EXPIRED: {
GWT.log("Upload aborted due to session expired: " + resultMessage.getMessage());
Window.alert("Session expired, please reload the page");
removeLoading();
break;
@ -193,20 +192,19 @@ public class MultipleDilaogUpload extends DialogUpload {
@Override
public void onChange(ChangeEvent event) {
GWT.log("browse return...");
if (fileUpload.getFilename() == null
|| fileUpload.getFilename().isEmpty()) {
if (fileUpload.getFilename() == null || fileUpload.getFilename().isEmpty()) {
GWT.log("No file specified ");
MultipleDilaogUpload.this.hide();
return;
}
String[] files = null;
GWT.log("Current Uploader has id: "+fileUploadID);
GWT.log("Current Uploader has id: " + fileUploadID);
String filesSelected = getFilesSelected(fileUploadID, FILE_DELEMITER);
GWT.log("getFilesSelected: " + filesSelected);
files = filesSelected.split(FILE_DELEMITER);
if(isLimitExceeded(files.length))
if (isLimitExceeded(files.length))
return;
// GENERATE NEW UPLOADERS
@ -223,67 +221,23 @@ public class MultipleDilaogUpload extends DialogUpload {
// ADD TO FORM PANEL
// initJsonClientKeys();
jsonClientKeys.setValue(jsonKeys);
// // CASE 1 FILE
// if (files.length == 1) {
//
// // recall: Some browser would write in
// // fileUploadField.getValue() C:\fakepath\$fileName
// final String label = files[0];
// WorkspaceUploaderServiceAsync.Util.getInstance()
// .itemExistsInWorkpaceFolder(parentIdentifier,
// label, new AsyncCallback<String>() {
//
// @Override
// public void onSuccess(
// final String itemId) {
// GWT.log("itemExistsInWorkpaceFolder: "
// + itemId);
// if (itemId != null) {
// removeItemAndSubmitForm(itemId);
// updateItemSubmitForm(itemId);
//// if (Window.confirm(label+ " exists in folder. If you continue, a new version will be created")) {
//// removeItemAndSubmitForm(itemId);
//// updateItemSubmitForm(itemId);
//// }
// } else
// submitForm(); // ITEM does NOT
// // EXIST SO
// // SUBMIT FORM;
// }
//
// @Override
// public void onFailure(Throwable caught) {
// GWT.log("Sorry an error occurred on the server "
// + caught.getLocalizedMessage()
// + ". Please try again later");
// Window.alert(caught.getMessage());
// }
//
// });
// } else
submitForm();
submitForm();
}
});
}
/**
* Checks if is limit exceeded.
*
* @param numbOfFiles the numb of files
* @return true, if is limit exceeded
*/
public boolean isLimitExceeded(int numbOfFiles){
public boolean isLimitExceeded(int numbOfFiles) {
if (numbOfFiles > ConstantsWorkspaceUploader.LIMIT_UPLOADS) {
Window.alert("Multiple upload limit is "
+ ConstantsWorkspaceUploader.LIMIT_UPLOADS
+ " files");
Window.alert("Multiple upload limit is " + ConstantsWorkspaceUploader.LIMIT_UPLOADS + " files");
MultipleDilaogUpload.this.hide();
return true;
}
@ -294,11 +248,12 @@ public class MultipleDilaogUpload extends DialogUpload {
/**
* Adds the new submit to monitor.
*/
public void addNewSubmitToMonitor(){
public void addNewSubmitToMonitor() {
GWT.log("addNewSubmitToMonitor...");
int queueIndex = UploaderMonitor.getInstance().newQueue();
for (final WorkspaceUploaderItem workspaceUploaderItem : fakeUploaders) {
UploaderMonitor.getInstance().addNewUploaderToMonitorPanel(workspaceUploaderItem, workspaceUploaderItem.getFile().getFileName());
UploaderMonitor.getInstance().addNewUploaderToMonitorPanel(workspaceUploaderItem,
workspaceUploaderItem.getFile().getFileName());
setVisible(false);
removeLoading();
UploaderMonitor.getInstance().addNewUploaderToQueue(queueIndex, workspaceUploaderItem);
@ -308,7 +263,6 @@ public class MultipleDilaogUpload extends DialogUpload {
UploaderMonitor.getInstance().doStartPollingQueue(queueIndex);
}
/**
* Creates the json key for files.
*
@ -330,7 +284,7 @@ public class MultipleDilaogUpload extends DialogUpload {
}
jsonKeys = productObj.toString();
GWT.log("updated jsonKeys: "+jsonKeys);
GWT.log("updated jsonKeys: " + jsonKeys);
} catch (Exception e) {
GWT.log("error " + e.getMessage());
jsonKeys = null;
@ -394,10 +348,8 @@ public class MultipleDilaogUpload extends DialogUpload {
/**
* Gets the files selected.
*
* @param tagId
* the tag id
* @param fileDelimiter
* the file delimiter
* @param tagId the tag id
* @param fileDelimiter the file delimiter
* @return the files selected
*/
public static native String getFilesSelected(final String tagId, final String fileDelimiter) /*-{

View File

@ -3,7 +3,6 @@
*/
package org.gcube.portlets.widgets.workspaceuploader.server.notification;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

View File

@ -77,7 +77,8 @@ public class WorkspaceUploaderMng {
Long startTime = WorkspaceUploadServletStream.printStartTime();
//UPLOAD
createdItem = storageWrapper.getWorkspace().uploadFile(destinationFolder.getId(), uploadFile, itemName, "");
logger.info("calling upload file - [itemName: "+itemName+", totalBytes: "+totalBytes+"]");
createdItem = storageWrapper.getWorkspace().uploadFile(destinationFolder.getId(), uploadFile, itemName, "", totalBytes);
if(createdItem!=null){
WorkspaceUploadServletStream.printElapsedTime(startTime);
@ -199,13 +200,13 @@ public class WorkspaceUploaderMng {
*/
private static WorkspaceUploaderItem createWorkspaceUploaderArchive(StorageHubWrapper storageWrapper, final GCubeUser currUser, final String scopeGroupId, final WorkspaceUploaderItem workspaceUploader, final HttpServletRequest request, final InputStream uploadArchive, final String itemName, final WorkspaceFolder destinationFolder, final long totalBytes) throws InternalErrorException, IOException{
HttpSession httpSession = request.getSession();
logger.info("calling upload archive - [itemName: "+itemName+"]");
logger.info("calling upload archive - [itemName: "+itemName+", totalBytes: "+totalBytes+"]");
WorkspaceItem createdItem = null;
try {
workspaceUploader.setUploadStatus(UPLOAD_STATUS.IN_PROGRESS);
workspaceUploader.setStatusDescription("Uploading "+itemName);
createdItem = storageWrapper.getWorkspace().uploadArchive(destinationFolder.getId(), uploadArchive, itemName);
createdItem = storageWrapper.getWorkspace().uploadArchive(destinationFolder.getId(), uploadArchive, itemName, totalBytes);
if(createdItem!=null){
logger.debug("StorageHub"+createdItem.getName() + " with id: "+createdItem.getId() + " uploaded correctly in "+destinationFolder.getPath());