fixed itemExistsInWorkpaceFolder

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-uploader@169460 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2018-06-26 15:17:10 +00:00
parent 907f69c5da
commit 7f6d0f35d8
8 changed files with 114 additions and 103 deletions

10
pom.xml
View File

@ -119,11 +119,15 @@
<scope>provided</scope>
</dependency>
<!-- HOME LIBRARY -->
<dependency>
<groupId>org.gcube.portal</groupId>
<groupId>org.gcube.common</groupId>
<artifactId>storagehub-client-library</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>storagehub-client-wrapper</artifactId>
<version>[0.0.1-SNAPSHOT, 1.0.0-SNAPSHOT]</version>
<version>[0.0.1-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<!-- JSON PARSER -->

View File

@ -8,7 +8,6 @@ import java.util.Arrays;
import org.gcube.portlets.widgets.workspaceuploader.client.ConstantsWorkspaceUploader;
import org.gcube.portlets.widgets.workspaceuploader.client.DialogResult;
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploaderServiceAsync;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload;
import org.gcube.portlets.widgets.workspaceuploader.shared.HandlerResultMessage;
import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploadFile;
@ -22,7 +21,6 @@ import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
@ -226,44 +224,44 @@ public class MultipleDilaogUpload extends DialogUpload {
// 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
// // 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();
}

View File

@ -28,15 +28,16 @@ import org.apache.commons.fileupload.util.Streams;
import org.apache.commons.io.FilenameUtils;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.storagehub.model.items.Item;
import org.gcube.portal.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.portal.storagehubwrapper.shared.tohl.WorkspaceFolder;
import org.gcube.portal.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.portal.storagehubwrapper.shared.tohl.WorkspaceItemType;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.InsufficientPrivilegesException;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.InternalErrorException;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.ItemAlreadyExistException;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.ItemNotFoundException;
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItemType;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.InsufficientPrivilegesException;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.InternalErrorException;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.ItemAlreadyExistException;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.ItemNotFoundException;
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.upload.AbstractUploadProgressListener;
import org.gcube.portlets.widgets.workspaceuploader.server.upload.MemoryUploadListener;
@ -433,7 +434,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet
final WorkspaceFolder destinationFolder = (WorkspaceFolder) item;
try {
//we calculate an unique name for the current destination
String itemName = "";
String itemName = fileName;
logger.debug("getItemName from HL");
/*if(!isOverwrite){
@ -694,11 +695,10 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet
Item sourceItem = storageWrapper.getStorageHubClientService().getItem(itemId);
//TODO sourceItem.getIdSharedFolder();
/*String sourceSharedId = sourceItem.getIdSharedFolder();
String sourceSharedId = null;
Item folderDestinationItem = storageWrapper.getStorageHubClientService().getItem(destinationFolderId);
logger.trace("[3] HttpServletRequest is: URI: "+request.getRequestURI() +", ServerName: "+request.getServerName());
NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(storageWrapper, request, currUser, scopeGroupId, np, httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite);
*/
} catch (Exception e) {
logger.error("Error in notifyUploadInSharedFolder", e);

View File

@ -5,8 +5,10 @@ import javax.servlet.http.HttpSession;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.storagehub.model.types.WorkspaceItemType;
import org.gcube.portal.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.portal.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploaderService;
import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil;
import org.gcube.portlets.widgets.workspaceuploader.shared.UploadProgress;
@ -106,20 +108,23 @@ public class WorkspaceUploaderServiceImpl extends RemoteServiceServlet implement
*/
@Override
public String getWorkspaceId() throws Exception {
logger.trace("getWorkspaceId");
logger.debug("Getting the workspaceId");
try {
String scopeGroupId = ""+PortalContext.getConfiguration().getCurrentGroupId(getThreadLocalRequest());
GCubeUser currUser = PortalContext.getConfiguration().getCurrentUser(getThreadLocalRequest());
StorageHubWrapper stHubWrapper = WsUtil.getStorageHubWrapper(getThreadLocalRequest(), scopeGroupId, currUser);
if(stHubWrapper.getWorkspace()!=null)
return stHubWrapper.getWorkspace().getRoot().getId();
Workspace workspace = stHubWrapper.getWorkspace();
if(workspace!=null){
WorkspaceFolder root = workspace.getRoot();
logger.debug("Retrieve the root "+root+" correctly");
return root.getId();
}
return null;
} catch (Exception e) {
logger.error("Get workspace id error", e);
String error = "An error occurred getting root id";
throw new Exception(error);
}
return null;
}

View File

@ -1,17 +1,18 @@
package org.gcube.portlets.widgets.workspaceuploader.server;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.storagehub.model.types.WorkspaceItemType;
import org.gcube.portal.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.portal.storagehubwrapper.server.tohl.Workspace;
import org.gcube.portal.storagehubwrapper.server.util.PortalContextUtil;
import org.gcube.portal.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.portlets.widgets.workspaceuploader.client.ConstantsWorkspaceUploader;
import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
@ -51,7 +52,7 @@ public class WorkspaceUploaderWsUtil extends HttpServlet {
Workspace wa = null;
//GCubeUser currUser;
try {
GCubeUser user = PortalContextUtil.getCurrentUser(request);
GCubeUser user = PortalContext.getConfiguration().getCurrentUser(request);
StorageHubWrapper storageWrapper = WsUtil.getStorageHubWrapper(request, currGroupId, user);
wa = storageWrapper.getWorkspace();
} catch (Exception e) {
@ -89,16 +90,14 @@ public class WorkspaceUploaderWsUtil extends HttpServlet {
WorkspaceItem wsItem = workspace.getItem(parentId); //GET PARENT
if(wsItem.getType().equals(WorkspaceItemType.FOLDER) || wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
WorkspaceItem itemFound = workspace.find(itemName, parentId);
if(itemFound==null){
logger.trace("item: "+itemName+", not exists in parentId: "+parentId);
return null;
}
List<WorkspaceItem> foundItems = workspace.find(itemName, parentId);
logger.debug("Is item: "+itemName+", existing in parentId: "+parentId +"? "+foundItems);
logger.trace("item: "+itemName+", exists in parentId: "+parentId +", returning id:" +itemFound.getId());
return itemFound.getId();
}
else
if(foundItems!=null && foundItems.size()>0)
return foundItems.get(0).getId();
else
return null;
}else
throw new Exception("Invalid Folder parent");
} catch (Exception e) {

View File

@ -11,10 +11,12 @@ import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.gcube.common.storagehub.model.items.Item;
import org.gcube.common.storagehub.model.items.SharedFolder;
import org.gcube.common.storagehub.model.types.WorkspaceItemType;
import org.gcube.portal.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.portal.storagehubwrapper.server.tohl.Workspace;
import org.gcube.portal.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceSharedFolder;
import org.gcube.portlets.widgets.workspaceuploader.shared.ContactModel;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
@ -52,7 +54,7 @@ public class NotificationsWorkspaceUploader {
try{
if(folderDestinationItem.isShared()){ //Notify Added Item To Sharing?
/* TODO folderDestinationItem.getIdSharedFolder()
//TODO folderDestinationItem.getIdSharedFolder()
logger.trace("checkNotifyAddItemToShare source item: "+sourceItem.getName()+" sourceSharedId: "+sourceSharedId + " folder destination: "+folderDestinationItem.getName() + " folder destination shared folder id: "+folderDestinationItem.getIdSharedFolder());
//share condition is true if source shared folder is not null
@ -68,10 +70,11 @@ public class NotificationsWorkspaceUploader {
//Workspace workspace = WsUtil.getWorkspace(request, scopeGroupId, currUser);
//Workspace workspace = storageWrapper.getWorkspace();
SharedFolder folderDest = (SharedFolder) folderDestinationItem;
//TODO
List<ContactModel> listContacts = getListUserSharedByFolderSharedId(storageWrapper.getWorkspace(), folderDestinationItem.getIdSharedFolder());
List<ContactModel> listContacts = getListUserSharedByFolderSharedId(storageWrapper.getWorkspace(), folderDest.getIdSharedFolder());
Item destinationSharedFolder = storageWrapper.getStorageHubClientService().getItem(folderDestinationItem.getIdSharedFolder());
Item destinationSharedFolder = storageWrapper.getStorageHubClientService().getItem(folderDest.getIdSharedFolder());
if(destinationSharedFolder instanceof WorkspaceSharedFolder){
@ -86,7 +89,7 @@ public class NotificationsWorkspaceUploader {
}else
logger.trace("The notifies doesn't sent because "+destinationSharedFolder+ " is not instance of WorkspaceSharedFolder");
// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem);
}*/
}
}
else
logger.trace("folder destination is not shared");

View File

@ -9,16 +9,16 @@ import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.gcube.portal.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.portal.storagehubwrapper.shared.tohl.WorkspaceFolder;
import org.gcube.portal.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.InsufficientPrivilegesException;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.InternalErrorException;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.ItemAlreadyExistException;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.WrongDestinationException;
import org.gcube.portal.storagehubwrapper.shared.tohl.folder.items.WorkspaceVersion;
import org.gcube.portal.storagehubwrapper.shared.tohl.impl.FileItem;
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.InsufficientPrivilegesException;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.InternalErrorException;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.ItemAlreadyExistException;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WrongDestinationException;
import org.gcube.common.storagehubwrapper.shared.tohl.items.FileItem;
import org.gcube.common.storagehubwrapper.shared.tohl.items.WorkspaceVersion;
import org.gcube.portlets.widgets.workspaceuploader.server.WorkspaceUploadServletStream;
import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil;
import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem;
@ -67,7 +67,7 @@ public class WorkspaceUploaderMng {
* @throws IOException Signals that an I/O exception has occurred.
*/
private static WorkspaceUploaderItem createWorkspaceUploaderFile(StorageHubWrapper storageWrapper, final GCubeUser currUser, final String scopeGroupId, final HttpServletRequest request, final WorkspaceUploaderItem workspaceUploader, final HttpSession httpSession, final boolean isOvewrite, final InputStream uploadFile, final String itemName, final WorkspaceFolder destinationFolder, final String contentType, final long totalBytes) throws InternalErrorException, IOException{
logger.debug("Creating WorkspaceUploaderFile... isOvewrite: " +isOvewrite);
logger.debug("Creating WorkspaceUploaderFile to user: " +currUser.getUsername()+ ", filename: "+itemName+", destinationFolder: "+destinationFolder);
workspaceUploader.setUploadStatus(UPLOAD_STATUS.IN_PROGRESS);
workspaceUploader.setStatusDescription("Uploading "+itemName);
@ -100,8 +100,9 @@ public class WorkspaceUploaderMng {
logger.debug("StorageHub file: "+createdItem.getName() + " has version: "+currVersion.getName());
}
else{
logger.debug("StorageHub file: "+createdItem.getName() + " has no current version");
workspaceUploader.getFile().setVersionName(file.getName());
//TODO NO VERSION
//logger.debug("StorageHub file: "+createdItem.getName() + " has no current version");
//workspaceUploader.getFile().setVersionName(file.getName());
}
}else

View File

@ -8,10 +8,9 @@ import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.gcube.common.portal.PortalContext;
import org.gcube.portal.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.portal.storagehubwrapper.server.util.PortalContextUtil;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.InternalErrorException;
import org.gcube.portal.storagehubwrapper.shared.tohl.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.InternalErrorException;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
@ -78,15 +77,17 @@ public class WsUtil {
throw new Exception("Session expired");
try {
logger.debug("getWorkspace from HL scopeGroupId="+scopeGroupId +", userId="+user);
String scope;
PortalContext pContext = PortalContextUtil.getPortalContext(request);
if(WsUtil.isWithinPortal() && scopeGroupId!=null)
PortalContext pContext = PortalContext.getConfiguration();
if(WsUtil.isWithinPortal() && scopeGroupId!=null){
scope = pContext.getCurrentScope(scopeGroupId);
logger.debug(scope+" has retrieved by using the scopeGroupId="+scopeGroupId);
}
else
scope = pContext.getCurrentScope(request);
String token = PortalContextUtil.getContextUserToken(request);
logger.debug("Instancing "+StorageHubWrapper.class.getSimpleName()+" for user: "+user.getUsername() +", by using the scope: "+scope);
String token = pContext.getCurrentUserToken(scope, user.getUsername());
return new StorageHubWrapper(scope, token);
} catch (Exception e) {
logger.error("Error during getting storageHub wrapper", e);