added scope filter (ids was displayed without root infrastructure)

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@71863 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2013-03-27 16:30:37 +00:00
parent 79d79230b2
commit 568a838682
10 changed files with 315 additions and 82 deletions

View File

@ -1,5 +1,6 @@
package org.gcube.portlets.user.workspace.client.event; package org.gcube.portlets.user.workspace.client.event;
import org.gcube.portlets.user.workspace.client.constant.WorkspaceOperation;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.GwtEvent;
@ -11,6 +12,12 @@ public class OpenContextMenuTreeEvent extends GwtEvent<OpenContextMenuTreeEventH
private int clientX; private int clientX;
private int clientY; private int clientY;
private WorkspaceOperation wsOperation;
public WorkspaceOperation getWsOperation() {
return wsOperation;
}
public OpenContextMenuTreeEvent(FileModel targetFileModel, int clientX, int clientY) { public OpenContextMenuTreeEvent(FileModel targetFileModel, int clientX, int clientY) {
this.targetFileModel = targetFileModel; this.targetFileModel = targetFileModel;
this.clientX = clientX; this.clientX = clientX;

View File

@ -128,4 +128,6 @@ public interface GWTWorkspaceService extends RemoteService{
Date loadLastModificationDateById(String itemId) throws Exception; Date loadLastModificationDateById(String itemId) throws Exception;
FileModel getParentByItemId(String identifier) throws Exception;
} }

View File

@ -137,5 +137,8 @@ public interface GWTWorkspaceServiceAsync {
void loadLastModificationDateById(String itemId, void loadLastModificationDateById(String itemId,
AsyncCallback<Date> callback); AsyncCallback<Date> callback);
void getParentByItemId(String identifier,
AsyncCallback<FileModel> asyncCallback);
} }

View File

@ -29,11 +29,13 @@ import org.gcube.portlets.user.workspace.client.resources.Resources;
import com.extjs.gxt.ui.client.event.MenuEvent; import com.extjs.gxt.ui.client.event.MenuEvent;
import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.menu.Menu; import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem; import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem; import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class ContextMenuTree { public class ContextMenuTree {
@ -500,27 +502,62 @@ public class ContextMenuTree {
* @param posX * @param posX
* @param posY * @param posY
*/ */
public void openContextMenuOnItem(FileModel targetFileModel, int posX, int posY) { public void openContextMenuOnItem(final FileModel targetFileModel, final int posX, final int posY) {
clearListSelectedItems(); clearListSelectedItems();
listSelectedItems.add(0, targetFileModel); listSelectedItems.add(0, targetFileModel);
printSelected(); printSelected();
if(targetFileModel!=null){ if(targetFileModel!=null){
contextMenuSwitch(targetFileModel);
contextMenu.getItemByItemId(WorkspaceOperation.INSERT_FOLDER.getId()).setVisible(false); //set invisible create folder if(targetFileModel.getParentFileModel()==null){
contextMenu.getItemByItemId(WorkspaceOperation.INSERT_SHARED_FOLDER.getId()).setVisible(false); //set invisible create shared folder
contextMenu.getItemByItemId(WorkspaceOperation.WEBDAV_URL.getId()).setVisible(false); //set invisible webdav url Info.display("Wait", "loading available operations..");
contextMenu.getItemByItemId(WorkspaceOperation.UPLOAD_FILE.getId()).setVisible(false); //set invisible upload file
contextMenu.getItemByItemId(WorkspaceOperation.UPLOAD_ARCHIVE.getId()).setVisible(false); //set invisible upload archive AppControllerExplorer.rpcWorkspaceService.getParentByItemId(targetFileModel.getIdentifier(), new AsyncCallback<FileModel>() {
contextMenu.getItemByItemId(WorkspaceOperation.ADD_URL.getId()).setVisible(false); //set invisible add url
contextMenu.getItemByItemId(WorkspaceOperation.REFRESH_FOLDER.getId()).setVisible(false); //set invisible refresh @Override
contextMenu.getItemByItemId(WorkspaceOperation.SHARE.getId()).setVisible(false); //set invisible share public void onFailure(Throwable caught) {
contextMenu.getItemByItemId(WorkspaceOperation.UNSHARE.getId()).setVisible(false); //set invisible unshare Info.display("Error", "sorry an error occurrend on loading available operations");
contextMenu.showAt(posX, posY);
}
@Override
public void onSuccess(FileModel result) {
if(result!=null){
targetFileModel.setParentFileModel(result);
viewContextMenu(targetFileModel, posX, posY);
}
else
Info.display("Error", "sorry an error occurrend on loading available operations");
}
});
}
else
viewContextMenu(targetFileModel, posX, posY);
} }
// treePanel.fireEvent(Events.ContextMenu); }
private void viewContextMenu(FileModel targetFileModel, int posX, int posY){
contextMenuSwitch(targetFileModel);
contextMenu.getItemByItemId(WorkspaceOperation.INSERT_FOLDER.getId()).setVisible(false); //set invisible create folder
contextMenu.getItemByItemId(WorkspaceOperation.INSERT_SHARED_FOLDER.getId()).setVisible(false); //set invisible create shared folder
contextMenu.getItemByItemId(WorkspaceOperation.WEBDAV_URL.getId()).setVisible(false); //set invisible webdav url
contextMenu.getItemByItemId(WorkspaceOperation.UPLOAD_FILE.getId()).setVisible(false); //set invisible upload file
contextMenu.getItemByItemId(WorkspaceOperation.UPLOAD_ARCHIVE.getId()).setVisible(false); //set invisible upload archive
contextMenu.getItemByItemId(WorkspaceOperation.ADD_URL.getId()).setVisible(false); //set invisible add url
contextMenu.getItemByItemId(WorkspaceOperation.REFRESH_FOLDER.getId()).setVisible(false); //set invisible refresh
// contextMenu.getItemByItemId(WorkspaceOperation.SHARE.getId()).setVisible(false); //set invisible share
// contextMenu.getItemByItemId(WorkspaceOperation.UNSHARE.getId()).setVisible(false); //set invisible unshare
contextMenu.showAt(posX, posY);
} }

View File

@ -78,7 +78,6 @@ import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTI
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTMetadata; import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTMetadata;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTPDFDocument; import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTPDFDocument;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTUrlDocument; import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTUrlDocument;
import org.gcube.portlets.user.workspace.server.util.AllScope;
import org.gcube.portlets.user.workspace.server.util.UserUtil; import org.gcube.portlets.user.workspace.server.util.UserUtil;
import org.gcube.portlets.user.workspace.server.util.Util; import org.gcube.portlets.user.workspace.server.util.Util;
@ -1428,14 +1427,14 @@ public class GWTWorkspaceBuilder {
return smartFolderModel; return smartFolderModel;
} }
public List<ScopeModel> buildGXTListScopeModel(List<String> listScopes) { public List<ScopeModel> buildGXTListScopeModel(List<String> listFilteredScopes, Map<String, String> mapPortalScopes) {
List<ScopeModel> listScopeModel = new ArrayList<ScopeModel>(); List<ScopeModel> listScopeModel = new ArrayList<ScopeModel>();
listScopeModel.add(AllScope.getScopeModel()); // listScopeModel.add(AllScope.getScopeModel());
for(String scope: listScopes) for(String scope: listFilteredScopes)
listScopeModel.add(new ScopeModel(scope, scope)); listScopeModel.add(new ScopeModel(mapPortalScopes.get(scope),scope));
// listScopeModel.add(new ScopeModel("1", "Aquamaps")); // listScopeModel.add(new ScopeModel("1", "Aquamaps"));
// listScopeModel.add(new ScopeModel("2", "VTI")); // listScopeModel.add(new ScopeModel("2", "VTI"));

View File

@ -11,6 +11,7 @@ import org.apache.log4j.Logger;
import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.common.core.scope.GCUBEScope; import org.gcube.common.core.scope.GCUBEScope;
import org.gcube.common.core.utils.logging.GCUBEClientLog; import org.gcube.common.core.utils.logging.GCUBEClientLog;
import org.gcube.portlets.user.homelibrary.home.Home;
import org.gcube.portlets.user.homelibrary.home.HomeLibrary; import org.gcube.portlets.user.homelibrary.home.HomeLibrary;
import org.gcube.portlets.user.homelibrary.home.exceptions.HomeNotFoundException; import org.gcube.portlets.user.homelibrary.home.exceptions.HomeNotFoundException;
import org.gcube.portlets.user.homelibrary.home.exceptions.InternalErrorException; import org.gcube.portlets.user.homelibrary.home.exceptions.InternalErrorException;
@ -47,9 +48,9 @@ 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.server.notifications.NotificationsProducer; import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer;
import org.gcube.portlets.user.workspace.server.util.AllScope;
import org.gcube.portlets.user.workspace.server.util.UserUtil; import org.gcube.portlets.user.workspace.server.util.UserUtil;
import org.gcube.portlets.user.workspace.server.util.Util; import org.gcube.portlets.user.workspace.server.util.Util;
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
import org.gcube.portlets.user.workspaceapplicationhandler.ApplicationReaderFromGenericResource; import org.gcube.portlets.user.workspaceapplicationhandler.ApplicationReaderFromGenericResource;
import com.google.gwt.user.server.rpc.RemoteServiceServlet; import com.google.gwt.user.server.rpc.RemoteServiceServlet;
@ -86,6 +87,11 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
return Util.getNotificationProducer(Util.getAslSession(this.getThreadLocalRequest().getSession())); return Util.getNotificationProducer(Util.getAslSession(this.getThreadLocalRequest().getSession()));
} }
protected ScopeUtilFilter getScopeUtilFilter(){
return Util.getScopeUtilFilter(this.getThreadLocalRequest().getSession());
}
protected boolean isTestMode(){ protected boolean isTestMode(){
return Util.withoutPortal; return Util.withoutPortal;
} }
@ -145,7 +151,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
GCUBEScope gcubeScope = null; GCUBEScope gcubeScope = null;
if(!scopeId.equals(AllScope.IDALLSCOPE)){ if(scopeId.compareTo(ScopeUtilFilter.IDALLSCOPE)!=0){
gcubeScope = GCUBEScope.getScope(scopeId); gcubeScope = GCUBEScope.getScope(scopeId);
} }
WorkspaceFolder root = workspace.getRoot(gcubeScope); WorkspaceFolder root = workspace.getRoot(gcubeScope);
@ -1017,17 +1023,20 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
GCUBEClientLog logger = new GCUBEClientLog(GWTWorkspaceServiceImpl.class); GCUBEClientLog logger = new GCUBEClientLog(GWTWorkspaceServiceImpl.class);
logger.trace("get all scope"); logger.trace("get all scope");
// WorkspaceItem parent = workspace.getItem(parentFileModel.getIdentifier()); //get item from workspace
// workspace.getAllScope();
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
ScopeUtilFilter scopeUtilFilter = getScopeUtilFilter();
// return builder.buildGXTListScopeModel(HomeLibrary.getHomeManagerFactory().listScopes()); //TODO passare list items
Home home = workspace.getHome();
return builder.buildGXTListScopeModel(workspace.getHome().listScopes()); //TODO passare list items if(home!=null){
List<String> listIdFilterdScope = scopeUtilFilter.convertListScopeToPortlet(home.listScopes());
return builder.buildGXTListScopeModel(listIdFilterdScope, scopeUtilFilter.getHashScopesFiltered());
}else{
workspaceLogger.error("workspace.getHome() is null");
throw new Exception("Sorry, an error occurred on getting all scope. Please try later");
}
} catch (Exception e) { } catch (Exception e) {
workspaceLogger.error("Error in server get all scope ", e); workspaceLogger.error("Error in server get all scope ", e);
e.printStackTrace(); e.printStackTrace();
@ -1723,6 +1732,8 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
WorkspaceItem wsItem = workspace.getItem(folderSharedId); WorkspaceItem wsItem = workspace.getItem(folderSharedId);
workspaceLogger.trace("workspace return an item with name "+wsItem.getName());
if(wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ if(wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) wsItem; WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) wsItem;
@ -1802,7 +1813,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
workspaceLogger.trace("list parents return size: "+listParents.size()); workspaceLogger.trace("list parents return size: "+listParents.size());
} catch (Exception e) { } catch (Exception e) {
workspaceLogger.error("Erron in get List Parents By Item Identifier ", e); workspaceLogger.error("Error in get List Parents By Item Identifier ", e);
e.printStackTrace(); e.printStackTrace();
throw new Exception(e.getMessage()); throw new Exception(e.getMessage());
} }
@ -1945,4 +1956,33 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
throw new Exception(e.getMessage()); throw new Exception(e.getMessage());
} }
} }
@Override
public FileModel getParentByItemId(String identifier) throws Exception {
workspaceLogger.trace("get Parent By Item Identifier "+ identifier);
try {
Workspace workspace = getWorkspace();
WorkspaceItem wsItem = workspace.getItem(identifier);
workspaceLogger.trace("workspace retrieve item name: "+wsItem.getName());
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
while(wsItem!=null && wsItem.getParent()!=null){
WorkspaceFolder wsFolder = wsItem.getParent();
workspaceLogger.trace("parent was found "+wsFolder.getName()+ " retuning");
return builder.buildGXTFolderModelItem(wsFolder, null);
}
workspaceLogger.trace("parent not found - retuning");
return null;
} catch (Exception e) {
workspaceLogger.error("Error in get Parent By Item Identifier", e);
e.printStackTrace();
throw new Exception(e.getMessage());
}
}
} }

View File

@ -4,8 +4,6 @@
package org.gcube.portlets.user.workspace.server; package org.gcube.portlets.user.workspace.server;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Calendar; import java.util.Calendar;
@ -23,7 +21,6 @@ import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.common.core.utils.logging.GCUBELog;
import org.gcube.portlets.user.homelibrary.home.exceptions.InternalErrorException; import org.gcube.portlets.user.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.portlets.user.homelibrary.home.workspace.Workspace; import org.gcube.portlets.user.homelibrary.home.workspace.Workspace;
@ -36,7 +33,6 @@ import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.ItemNotFoun
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException; import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WrongDestinationException; import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WrongDestinationException;
import org.gcube.portlets.user.homelibrary.home.workspace.folder.FolderItem; import org.gcube.portlets.user.homelibrary.home.workspace.folder.FolderItem;
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ExternalFile;
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.Report; import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.Report;
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ReportTemplate; import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ReportTemplate;
import org.gcube.portlets.user.homelibrary.util.Extensions; import org.gcube.portlets.user.homelibrary.util.Extensions;
@ -251,20 +247,7 @@ public class UploadServlet extends HttpServlet {
//we need to recalculate the item name //we need to recalculate the item name
itemName = WorkspaceUtil.getUniqueName(uploadItem.getName(), destinationFolder); itemName = WorkspaceUtil.getUniqueName(uploadItem.getName(), destinationFolder);
System.out.println("contentType "+contentType);
FolderItem createdItem = WorkspaceUtil.createExternalFile(destinationFolder, itemName, "", contentType, uploadItem.getInputStream()); FolderItem createdItem = WorkspaceUtil.createExternalFile(destinationFolder, itemName, "", contentType, uploadItem.getInputStream());
File file = new File("/home/francesco-mangiacrapa/testhl");
IOUtils.copy(uploadItem.getInputStream(), new FileOutputStream(file));
File file2 = new File("/home/francesco-mangiacrapa/createdItem");
IOUtils.copy(((ExternalFile) createdItem).getData(), new FileOutputStream(file2));
sendMessage(response, "File "+createdItem.getName()+" imported correctly in "+destinationFolder.getPath()); sendMessage(response, "File "+createdItem.getName()+" imported correctly in "+destinationFolder.getPath());
} }

View File

@ -1,18 +0,0 @@
package org.gcube.portlets.user.workspace.server.util;
import org.gcube.portlets.user.workspace.client.model.ScopeModel;
public class AllScope {
public static final String ALLSCOPE = "All spaces";
public static final String IDALLSCOPE = "ID All spaces";
private static ScopeModel allScope = null;
public static ScopeModel getScopeModel(){
if(allScope==null)
allScope = new ScopeModel(IDALLSCOPE, ALLSCOPE);
return allScope;
}
}

View File

@ -22,6 +22,7 @@ import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceItemType;
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException; import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder; import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
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.util.scope.ScopeUtilFilter;
/** /**
@ -38,7 +39,7 @@ public class Util {
public static final String NOTIFICATION_MANAGER = "NOTIFICATIONMANAGER"; public static final String NOTIFICATION_MANAGER = "NOTIFICATIONMANAGER";
public static final String NOTIFICATION_PRODUCER = "NOTIFICATIONMANAGER"; public static final String NOTIFICATION_PRODUCER = "NOTIFICATIONMANAGER";
public static final String WS_RUN_IN_TEST_MODE = "WS_RUN_IN_TEST_MODE"; public static final String WS_RUN_IN_TEST_MODE = "WS_RUN_IN_TEST_MODE";
public static final String WORKSPACE_SCOPE_UTIL = "WORKSPACE_SCOPE_UTIL";
public static final String NOTIFICATION_PORTLET_CLASS_ID = "org.gcube.portlets.user.wsmail.server.WsMailServiceImpl"; //IN DEV public static final String NOTIFICATION_PORTLET_CLASS_ID = "org.gcube.portlets.user.wsmail.server.WsMailServiceImpl"; //IN DEV
// public static final String TEST_SCOPE = "/gcube/devsec"; // public static final String TEST_SCOPE = "/gcube/devsec";
@ -54,7 +55,8 @@ public class Util {
public static final String TEST_USER = "test.user"; public static final String TEST_USER = "test.user";
public static final String TEST_USER_FULL_NAME = "Test User"; public static final String TEST_USER_FULL_NAME = "Test User";
public static GCUBEClientLog defaultLogger = new GCUBEClientLog("WorkspacePortlet");
public static GCUBEClientLog defaultLogger = new GCUBEClientLog(Util.class);
public static boolean withoutPortal = false; public static boolean withoutPortal = false;
@ -65,28 +67,39 @@ public class Util {
ASLSession session; ASLSession session;
if (user == null) { if (user == null) {
//for test only user=TEST_USER;
// httpSession.setAttribute(USERNAME_ATTRIBUTE, TEST_USER);
session = SessionManager.getInstance().getASLSession(sessionID, TEST_USER); defaultLogger.warn("WORKSPACE PORTLET STARTING IN TEST MODE - NO USER FOUND - PORTLETS STARTING WITH FOLLOWING SETTINGS:");
defaultLogger.warn("session id: "+sessionID);
defaultLogger.warn("TEST_USER: "+user);
defaultLogger.warn("TEST_SCOPE: "+TEST_SCOPE);
defaultLogger.warn("USERNAME_ATTRIBUTE: "+USERNAME_ATTRIBUTE);
session = SessionManager.getInstance().getASLSession(sessionID, user);
session.setScope(TEST_SCOPE); session.setScope(TEST_SCOPE);
if(!withoutPortal){ //TEMPORARY SOLUTION
defaultLogger.error("WORKSPACE PORTLET STARTING IN TEST MODE - NO USER FOUND"); //MANDATORY FOR SOCIAL LIBRARY
session.setUserAvatarId(TEST_USER + "Avatar"); session.setUserAvatarId(user + "Avatar");
session.setUserFullName(TEST_USER_FULL_NAME); session.setUserFullName(TEST_USER_FULL_NAME);
session.setUserEmailAddress(TEST_USER + "@mail.test"); session.setUserEmailAddress(user + "@mail.test");
// httpSession.setAttribute(USERNAME_ATTRIBUTE, user);
} //SET HTTP SESSION ATTRIBUTE
httpSession.setAttribute(USERNAME_ATTRIBUTE, user);
withoutPortal = true; withoutPortal = true;
return session;
}else if(user.compareToIgnoreCase(TEST_USER)==0){
withoutPortal = true;
}else{ }else{
session = SessionManager.getInstance().getASLSession(sessionID, user);
withoutPortal = false; withoutPortal = false;
} }
return session; return SessionManager.getInstance().getASLSession(sessionID, user);
} }
@ -241,5 +254,23 @@ public class Util {
return wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER); return wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER);
return false; return false;
} }
public static ScopeUtilFilter getScopeUtilFilter(HttpSession httpSession){
ASLSession session = getAslSession(httpSession);
ScopeUtilFilter scopeUtil = null;
try{
scopeUtil = (ScopeUtilFilter) session.getAttribute(Util.WORKSPACE_SCOPE_UTIL);
if(scopeUtil==null){
scopeUtil = new ScopeUtilFilter(session.getScopeName());
}
}catch (Exception e) {
defaultLogger.error("an error occurred in getscope filter "+e);
}
return scopeUtil;
}
} }

View File

@ -0,0 +1,149 @@
package org.gcube.portlets.user.workspace.server.util.scope;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.gcube.common.core.utils.logging.GCUBEClientLog;
public class ScopeUtilFilter {
private static final String SCOPE_SEPARATOR = "/";
private String scopeRoot = null;
public static GCUBEClientLog logger = new GCUBEClientLog(ScopeUtilFilter.class);
public Map<String, String> hashScopesFiltered = new HashMap<String, String>();
public static final String ALLSCOPE = "All spaces";
public static final String IDALLSCOPE = "ID All spaces";
public ScopeUtilFilter(String scopeName) {
if(scopeName!=null){
String[] scopes = scopeName.split(SCOPE_SEPARATOR);
if(scopes!=null && scopes.length>1){
scopeRoot = SCOPE_SEPARATOR+scopes[1];
logger.trace("found root "+scopeRoot);
}
else{
logger.warn("root scope not found!");
scopeRoot = SCOPE_SEPARATOR;
}
hashScopesFiltered.put(ALLSCOPE, IDALLSCOPE); //PUT DEFAULT ID ALL SCOPE
}
}
public List<String> convertListScopeToPortlet(List<String> listScopes){
logger.trace("Scope converting...");
List<String> scopesConverted = new ArrayList<String>();
scopesConverted.add(ALLSCOPE);
if(scopeRoot.compareTo(SCOPE_SEPARATOR)==0){
logger.warn("root scope is '"+SCOPE_SEPARATOR+"' return list scopes passed in input");
return listScopes;
}
for (String scope : listScopes) {
if(scope.compareTo(scopeRoot)==0){ //CASE SCOPE IS ROOT
logger.trace("found scope root "+scope+" added to list without converting");
hashScopesFiltered.put(scopeRoot, scopeRoot);
scopesConverted.add(scopeRoot);
} else{
int index = scope.indexOf(scopeRoot,0);
int start = index+scopeRoot.length();
int end = scope.length();
//DEBUG
// System.out.println("\n\n ");
// System.out.println("index "+index);
// System.out.println("start "+start);
// System.out.println("end "+end);
if(index!=-1){ //CASE SCOPE ROOT IS FOUND
String filerString = scope.substring(index+start, scope.length());
hashScopesFiltered.put(filerString, scope);
scopesConverted.add(filerString);
logger.trace("scope "+scope+ " is converted in: "+filerString);
}else{ //CASE SCOPE ROOT NOT IS FOUND
logger.warn("scope "+scope + " was reject from filter");
}
}
}
logger.trace("Scope converting was completed");
return scopesConverted;
}
public String getPortalScopeFromFilteredScope(String scope){
String portalScope = hashScopesFiltered.get(scope);
if(portalScope==null){
logger.warn("scope not found in scope fiter, return root scope "+scopeRoot);
return scopeRoot;
}
return portalScope;
}
public Map<String, String> getHashScopesFiltered() {
return hashScopesFiltered;
}
//TEST
private void printScopeName(String scopeName){
String[] scopes = scopeName.split(SCOPE_SEPARATOR);
for (String scope : scopes) {
System.out.println("scope split: "+scope);
}
}
private void printScopes(){
for (String key : hashScopesFiltered.keySet()) {
System.out.println("Scope found: "+ hashScopesFiltered.get(key) +" with key: "+ key);
}
}
public static void main(String[] args) {
String scope = "/gcube";
List<String> listTest = Arrays.asList(new String[]{"/gcube/devsec/devre", "/gcube/devsec","/gcube/devsec/devNEXT", "/", "/gcub", "/gcube"});
ScopeUtilFilter filter = new ScopeUtilFilter(scope);
filter.convertListScopeToPortlet(listTest);
System.out.println("get portal scope "+filter.getPortalScopeFromFilteredScope("/devsec"));
filter.printScopes();
}
}