Francesco Mangiacrapa 9 years ago
parent b215391007
commit 1248407e63

File diff suppressed because it is too large Load Diff

@ -58,8 +58,8 @@
<dependency> <dependency>
<groupId>com.google.gwt</groupId> <groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId> <artifactId>gwt-user</artifactId>
<!-- <scope>provided</scope> -->
<version>${gwtVersion}</version> <version>${gwtVersion}</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>

@ -149,8 +149,8 @@ import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEve
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEvent; import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEvent;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEventHandler; import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEventHandler;
import org.gcube.portlets.widgets.workspacesharingwidget.client.ConstantsSharing.LOAD_CONTACTS_AS; import org.gcube.portlets.widgets.workspacesharingwidget.client.ConstantsSharing.LOAD_CONTACTS_AS;
import org.gcube.portlets.widgets.workspacesharingwidget.client.MultiDragContactsEditPermissions;
import org.gcube.portlets.widgets.workspacesharingwidget.client.MultiDragConstants; import org.gcube.portlets.widgets.workspacesharingwidget.client.MultiDragConstants;
import org.gcube.portlets.widgets.workspacesharingwidget.client.MultiDragContactsEditPermissions;
import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact; import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact;
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.DialogMultiDragContact; import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.DialogMultiDragContact;

@ -0,0 +1,29 @@
/**
*
*/
package org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Feb 16, 2015
*
*/
public class WorkspaceHandledException extends Exception{
/**
*
*/
private static final long serialVersionUID = 6287132546514234376L;
/**
*
*/
public WorkspaceHandledException() {
super();
}
public WorkspaceHandledException(String arg0){
super(arg0);
}
}

@ -57,6 +57,7 @@ import org.gcube.portlets.user.workspace.client.model.SmartFolderModel;
import org.gcube.portlets.user.workspace.client.model.SubTree; import org.gcube.portlets.user.workspace.client.model.SubTree;
import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService; import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem; import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.WorkspaceHandledException;
import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer; import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer;
import org.gcube.portlets.user.workspace.server.notifications.NotificationsUtil; import org.gcube.portlets.user.workspace.server.notifications.NotificationsUtil;
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameter; import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameter;
@ -291,7 +292,6 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
//ADDING SPECIAL FOLDER? //ADDING SPECIAL FOLDER?
if(wsItem.isRoot()){ if(wsItem.isRoot()){
//TODO
//ADD SPECIAL FOLDER //ADD SPECIAL FOLDER
try{ try{
workspaceLogger.info("Folder is root, loading special folders.."); workspaceLogger.info("Folder is root, loading special folders..");
@ -372,7 +372,6 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
//ADDING SPECIAL FOLDER? //ADDING SPECIAL FOLDER?
if(wsFolder.isRoot()){ if(wsFolder.isRoot()){
//TODO
//ADD SPECIAL FOLDER //ADD SPECIAL FOLDER
try{ try{
workspaceLogger.info("Folder is root, loading special folders.."); workspaceLogger.info("Folder is root, loading special folders..");
@ -2077,31 +2076,23 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
try { try {
Workspace workspace = getWorkspace(); Workspace workspace = getWorkspace();
WorkspaceItem wsItem = workspace.getItem(folderSharedId); WorkspaceItem wsItem = workspace.getItem(folderSharedId);
if(NotificationsUtil.isASharedFolder(wsItem)){ if(NotificationsUtil.isASharedFolder(wsItem)){
WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) wsItem; WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) wsItem;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
List<String> listPortalLogin = wsFolder.getUsers(); List<String> listPortalLogin = wsFolder.getUsers();
workspaceLogger.trace("getListUserSharedByFolderSharedId return "+ listPortalLogin.size() + " user"); workspaceLogger.trace("getListUserSharedByFolderSharedId return "+ listPortalLogin.size() + " user");
if(isTestMode()) if(isTestMode())
return builder.buildGxtInfoContactFromPortalLoginTestMode(listPortalLogin); return builder.buildGxtInfoContactFromPortalLoginTestMode(listPortalLogin);
return builder.buildGxtInfoContactsFromPortalLogins(listPortalLogin); return builder.buildGxtInfoContactsFromPortalLogins(listPortalLogin);
} }
else{ else
workspaceLogger.trace("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER); workspaceLogger.trace("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER);
//DEBUG
//System.out.println("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER);
}
return new ArrayList<InfoContactModel>(); return new ArrayList<InfoContactModel>();
} catch (Exception e) { } catch (Exception e) {
@ -2113,35 +2104,29 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
@Override @Override
public List<InfoContactModel> getListUserSharedBySharedItem(String sharedItemId) throws Exception{ public List<InfoContactModel> getListUserSharedBySharedItem(String sharedItemId) throws Exception{
workspaceLogger.trace("Get ListUserSharedBySharedItem "+ sharedItemId);
workspaceLogger.trace("getListUserSharedBySharedItem "+ sharedItemId);
try { try {
Workspace workspace = getWorkspace();
WorkspaceItem wsItem = workspace.getItem(sharedItemId);
if(wsItem!=null && wsItem.isShared()){ WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId(sharedItemId);
if(wsFolder!=null){
WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) workspace.getItem(wsItem.getIdSharedFolder()); if(isASharedFolder(wsFolder, true)){
if(wsFolder!=null){
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
List<String> listPortalLogin = wsFolder.getUsers(); WorkspaceSharedFolder wsSharedFolder = (WorkspaceSharedFolder) wsFolder;
List<String> listPortalLogin = wsSharedFolder.getUsers();
workspaceLogger.trace("getListUserSharedByFolderSharedId return "+ listPortalLogin.size() + " user"); workspaceLogger.trace("getListUserSharedByFolderSharedId return "+ listPortalLogin.size() + " user/s");
if(isTestMode()) if(isTestMode())
return builder.buildGxtInfoContactFromPortalLoginTestMode(listPortalLogin); return builder.buildGxtInfoContactFromPortalLoginTestMode(listPortalLogin);
return builder.buildGxtInfoContactsFromPortalLogins(listPortalLogin); return builder.buildGxtInfoContactsFromPortalLogins(listPortalLogin);
}else{
workspaceLogger.warn("wsFolder with id: "+sharedItemId +" is not a: "+WorkspaceItemType.SHARED_FOLDER +", returning null");
return null;
} }
} }
return new ArrayList<InfoContactModel>(); workspaceLogger.warn("wsFolder with id: "+sharedItemId +" is null, returning null");
return null;
} catch (Exception e) { } catch (Exception e) {
workspaceLogger.error("Error in getListUserSharedByItemId ", e); workspaceLogger.error("Error in getListUserSharedByItemId ", e);
@ -2161,27 +2146,20 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
try { try {
Workspace workspace = getWorkspace(); if(isASharedFolder(folderSharedId, true)){
Workspace workspace = getWorkspace();
WorkspaceItem wsItem = workspace.getItem(folderSharedId); WorkspaceItem wsItem = workspace.getItem(folderSharedId);
workspaceLogger.trace("workspace return an item with name "+wsItem.getName());
workspaceLogger.trace("workspace return an item with name "+wsItem.getName());
if(wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) wsItem; WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) wsItem;
List<InfoContactModel> contacts = getListUserSharedByFolderSharedId(folderSharedId); List<InfoContactModel> contacts = getListUserSharedByFolderSharedId(folderSharedId);
String sharedFolderName = wsFolder.getName(); String sharedFolderName = wsFolder.getName();
//RETURN A NEW FOLDER //RETURN A NEW FOLDER
wsFolder.unShare(); wsFolder.unShare();
workspaceLogger.trace("no error incoming on unsharing"); workspaceLogger.trace("no error incoming on unsharing");
unShared = true; unShared = true;
// if(newFolder!=null)
// unShared = true;
NotificationsProducer np = getNotificationProducer(); NotificationsProducer np = getNotificationProducer();
List<InfoContactModel> purgeMyContact = new ArrayList<InfoContactModel>(contacts.size()-1); List<InfoContactModel> purgeMyContact = new ArrayList<InfoContactModel>(contacts.size()-1);
String myLogin = getMyLogin().getUsername(); String myLogin = getMyLogin().getUsername();
@ -2197,18 +2175,24 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
np.notifyFolderUnSharing(purgeMyContact, folderSharedId, sharedFolderName); np.notifyFolderUnSharing(purgeMyContact, folderSharedId, sharedFolderName);
} }
else else{
workspaceLogger.info("the item with id: "+folderSharedId+ "is not "+WorkspaceItemType.SHARED_FOLDER); String msg = "The item with id: "+folderSharedId+ "is not a base shared folder";
workspaceLogger.warn("the item with id: "+folderSharedId+ "is not "+WorkspaceItemType.SHARED_FOLDER +" or root shared folder");
throw new WorkspaceHandledException(msg);
}
} catch (InternalErrorException e) { } catch (InternalErrorException e) {
workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e); workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e);
String error = "An error occerred on unsharing folder. "+ e.getMessage(); String error = "An error occerred on unsharing folder. "+ e.getMessage();
throw new Exception(error); throw new Exception(error);
} catch (WorkspaceHandledException e) {
String error = ConstantsExplorer.SERVER_ERROR+" unshare folder. "+e.getMessage();
throw new Exception(error);
} catch (Exception e) { } catch (Exception e) {
workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e); workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e);
String error = ConstantsExplorer.SERVER_ERROR+" un share folder. Refresh folder and " +ConstantsExplorer.TRY_AGAIN; String error = ConstantsExplorer.SERVER_ERROR+" unshare folder. Refresh folder and " +ConstantsExplorer.TRY_AGAIN;
e.printStackTrace();
throw new Exception(error); throw new Exception(error);
} }
@ -2847,14 +2831,14 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
public List<ExtendedWorkspaceACL> getUserACLForFolderId(String folderId) throws Exception{ public List<ExtendedWorkspaceACL> getUserACLForFolderId(String folderId) throws Exception{
try { try {
workspaceLogger.info("Get user ACL to FOLDER id: "+folderId); workspaceLogger.info("Get user ACL to FOLDER id: "+folderId);
WorkspaceSharedFolder wsFolder = getSharedFolderForId(folderId); WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId(folderId);
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
List<WorkspaceACL> listACL = builder.getWorkspaceACLFromACLs(Arrays.asList(wsFolder.getACLUser())); List<WorkspaceACL> listACL = builder.getWorkspaceACLFromACLs(Arrays.asList(wsFolder.getACLUser()));
List<ExtendedWorkspaceACL> listEACL = new ArrayList<ExtendedWorkspaceACL>(listACL.size()); List<ExtendedWorkspaceACL> listEACL = new ArrayList<ExtendedWorkspaceACL>(listACL.size());
for (WorkspaceACL workspaceACL : listACL) { for (WorkspaceACL workspaceACL : listACL) {
boolean isBaseSharedFolder = (wsFolder.getId().compareTo(folderId)==0)?true:false; boolean isBaseSharedFolder = isASharedFolder(wsFolder, true) ?true:false;
ExtendedWorkspaceACL eac = new ExtendedWorkspaceACL(workspaceACL.getId(), workspaceACL.getLabel(), workspaceACL.getDefaultValue(), workspaceACL.getUserType(), workspaceACL.getDescription(), wsFolder.getOwner().getPortalLogin(), folderId, isBaseSharedFolder); ExtendedWorkspaceACL eac = new ExtendedWorkspaceACL(workspaceACL.getId(), workspaceACL.getLabel(), workspaceACL.getDefaultValue(), workspaceACL.getUserType(), workspaceACL.getDescription(), wsFolder.getOwner().getPortalLogin(), folderId, isBaseSharedFolder);
workspaceLogger.trace("ACL "+workspaceACL+" converted in: "+eac); workspaceLogger.trace("ACL "+workspaceACL+" converted in: "+eac);
listEACL.add(eac); listEACL.add(eac);
@ -2877,7 +2861,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
public String getACLsDescriptionForSharedFolderId(String folderId) throws Exception{ public String getACLsDescriptionForSharedFolderId(String folderId) throws Exception{
try { try {
WorkspaceSharedFolder wsFolder = getSharedFolderForId(folderId); WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId(folderId);
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
return builder.getFormattedHtmlACLFromACLs(wsFolder.getACLOwner()); return builder.getFormattedHtmlACLFromACLs(wsFolder.getACLOwner());
} catch (Exception e) { } catch (Exception e) {
@ -2887,37 +2871,47 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
} }
} }
/**
private WorkspaceSharedFolder getSharedFolderForId(String folderId) throws Exception{ *
* @param folderId
* @return
* @throws Exception
*/
private WorkspaceFolder getSharedWorkspaceFolderForId(String folderId) throws Exception{
if(folderId == null) if(folderId == null)
throw new Exception("Folder id is null"); throw new Exception("Folder id is null");
workspaceLogger.trace("Get ACLsDescriptionForFolderId folder id: "+folderId); workspaceLogger.trace("Get SharedFolderForId: "+folderId);
Workspace workspace = getWorkspace(); Workspace workspace = getWorkspace();
WorkspaceItem wsItem = workspace.getItem(folderId); WorkspaceItem wsItem = null;
try{
wsItem = workspace.getItem(folderId);
}catch(Exception e){
workspaceLogger.error("Get SharedFolderForId error on folder id: "+folderId, e);
throw new Exception(ConstantsExplorer.SERVER_ERROR +" retrieving item with id: "+folderId+". Try again later!");
}
if(isASharedFolder(wsItem, false)){ if(isASharedFolder(wsItem, false)){
workspaceLogger.trace("Get SharedFolderForId: folder id "+folderId+" is shared"); workspaceLogger.trace("Get SharedFolderForId: folder id "+folderId+" is shared");
//TODO REMOVE wsItem.getIdSharedFolder() //TODO REMOVE wsItem.getIdSharedFolder()
WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) workspace.getItem(wsItem.getIdSharedFolder()); // WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) workspace.getItem(wsItem.getIdSharedFolder());
WorkspaceFolder wsFolder = (WorkspaceFolder) wsItem;
if(wsFolder!=null){ if(wsFolder!=null){
workspaceLogger.trace("Get ACLsDescriptionForFolderId shared folder name is: "+wsFolder.getName()); workspaceLogger.info("Get SharedFolderForId return name: "+wsFolder.getName());
return wsFolder; return wsFolder;
}else{ }else{
workspaceLogger.trace("Source item is not a shared folder, throw exception"); workspaceLogger.warn("Source item is not a shared folder, throw exception");
throw new Exception("Source item is not a shared folder"); throw new Exception("Source item is not a shared folder");
} }
//TODO USE THIS
// return (WorkspaceFolder) wsItem;
}else{ }else{
workspaceLogger.trace("Source item is null or not shared, throw exception"); workspaceLogger.warn("Source item is null or not shared folder, throw exception");
throw new Exception("Source item is null or not shared"); throw new Exception("Source item is null or not shared folder for id: "+folderId);
} }
} }
@ -2960,7 +2954,6 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
return true; return true;
} }
return false; return false;
}catch(Exception e){ }catch(Exception e){
workspaceLogger.error("Error in server isASharedFolder", e); workspaceLogger.error("Error in server isASharedFolder", e);
@ -3223,18 +3216,19 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
if(folderId==null) if(folderId==null)
return admins; return admins;
try { try {
Workspace workspace = getWorkspace();
WorkspaceItem item = workspace.getItem(folderId);
workspaceLogger.info("Getting administator/s to folder: "+folderId); workspaceLogger.info("Getting administator/s to folder: "+folderId);
WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId(folderId);
if(item!=null && item.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ if(isASharedFolder(wsFolder, true)){
WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
return builder.buildGxtInfoContactsFromPortalLogins(sharedFolder.getAdministrators()); WorkspaceSharedFolder wsSharedFolder = (WorkspaceSharedFolder) wsFolder;
return builder.buildGxtInfoContactsFromPortalLogins(wsSharedFolder.getAdministrators());
}else }else
throw new Exception("The item is null or not instanceof "+WorkspaceItemType.SHARED_FOLDER); throw new WorkspaceHandledException("the item with "+folderId +" is not a base shared folder!");
} catch (WorkspaceHandledException e){
workspaceLogger.error("Error in server getAdministratorsByFolderId: "+e.getMessage());
String error = ConstantsExplorer.SERVER_ERROR +" getting Administrators: "+e.getMessage();
throw new Exception(error);
} catch (Exception e) { } catch (Exception e) {
workspaceLogger.error("Error in server getAdministratorsByFolderId: "+e.getMessage()); workspaceLogger.error("Error in server getAdministratorsByFolderId: "+e.getMessage());
workspaceLogger.error(e); workspaceLogger.error(e);
@ -3278,28 +3272,30 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
return null; return null;
} }
try { try {
WorkspaceFolder sharedFolder = getSharedWorkspaceFolderForId(identifier);
Workspace workspace = getWorkspace(); //IS ROOT??
WorkspaceItem item = workspace.getItem(identifier); if(isASharedFolder(sharedFolder, true)){
if(item!=null && item.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
//CASTING TO ROOT
workspaceLogger.info("Read getPrivilege from HL: "+sharedFolder.getACLUser()); WorkspaceSharedFolder wsSharedFolder = (WorkspaceSharedFolder) sharedFolder;
List<WorkspaceACL> wsAcls = builder.getWorkspaceACLFromACLs(Arrays.asList(sharedFolder.getPrivilege())); workspaceLogger.info("Read getPrivilege from HL: "+wsSharedFolder.getACLUser());
List<WorkspaceACL> wsAcls = builder.getWorkspaceACLFromACLs(Arrays.asList(wsSharedFolder.getPrivilege()));
if(wsAcls==null || wsAcls.isEmpty()){ if(wsAcls==null || wsAcls.isEmpty()){
workspaceLogger.info("Converted ACLBySharedFolderId is null or empty, returning null"); workspaceLogger.info("Converted ACLBySharedFolderId is null or empty, returning null");
return null; return null;
} }
workspaceLogger.info("Returning first acl with id: "+wsAcls.get(0).getId()); workspaceLogger.info("Returning first acl with id: "+wsAcls.get(0).getId());
return wsAcls.get(0); return wsAcls.get(0);
}
}else else{
throw new Exception("The item is null or not instanceof "+WorkspaceItemType.SHARED_FOLDER); workspaceLogger.warn("WorkspaceFolder "+sharedFolder+" is not type of "+WorkspaceItemType.SHARED_FOLDER+ ", returning null");
return null;
}
} catch (Exception e) { } catch (Exception e) {
workspaceLogger.error("Error in server ACLBySharedFolderId: "+e.getMessage()); workspaceLogger.error("Error in server ACLBySharedFolderId: "+e.getMessage());
workspaceLogger.error(e); workspaceLogger.error(e);

Loading…
Cancel
Save