From 981a04d9016918bfccfd07e8d3a0e20a7c78b06f Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Tue, 19 Jan 2016 14:50:40 +0000 Subject: [PATCH] 1925: Uri-Resolver: resolve gCubeStorage smp uri like http uri Task-Url: https://support.d4science.org/issues/1925 Updated get public link method according to #1959 git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@122319 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../server/GWTWorkspaceServiceImpl.java | 1223 +++++++++-------- .../portlets/user/workspace/ItemRetrieve.java | 98 +- 2 files changed, 667 insertions(+), 654 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java index 2e1afb9..b37f615 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java @@ -61,8 +61,6 @@ import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParame import org.gcube.portlets.user.workspace.server.shortener.UrlShortener; import org.gcube.portlets.user.workspace.server.util.AclTypeComparator; import org.gcube.portlets.user.workspace.server.util.DifferenceBetweenInfoContactModel; -import org.gcube.portlets.user.workspace.server.util.HttpRequestUtil; -import org.gcube.portlets.user.workspace.server.util.StringUtil; import org.gcube.portlets.user.workspace.server.util.UserUtil; import org.gcube.portlets.user.workspace.server.util.WsUtil; import org.gcube.portlets.user.workspace.server.util.resource.PropertySpecialFolderReader; @@ -128,27 +126,27 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT { return WsUtil.getWorkspace(this.getThreadLocalRequest().getSession()); } - + /** * Gets the notification producer. * * @return the notification producer */ protected NotificationsProducer getNotificationProducer(){ - + return WsUtil.getNotificationProducer(WsUtil.getAslSession(this.getThreadLocalRequest().getSession())); } - + /** * Gets the scope util filter. * * @return the scope util filter */ protected ScopeUtilFilter getScopeUtilFilter(){ - + return WsUtil.getScopeUtilFilter(this.getThreadLocalRequest().getSession()); } - + /** * Checks if is test mode. * @@ -157,7 +155,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT protected boolean isTestMode(){ return !WsUtil.isWithinPortal(); } - + /** * Gets the url shortener. * @@ -175,7 +173,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT protected UriResolverReaderParameterForResolverIndex getUriResolver() { return WsUtil.getUriResolver(this.getThreadLocalRequest().getSession()); } - + /** * Gets the property special folder reader. * @@ -185,7 +183,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT String absolutePathProperty = getSpecialFolderPath(); return WsUtil.getPropertySpecialFolderReader(this.getThreadLocalRequest().getSession(),absolutePathProperty); } - + /** * Gets the special folder path. * @@ -196,9 +194,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT String contextPath = servletContext.getRealPath(File.separator); return contextPath + File.separator +"conf" + File.separator + ConstantsExplorer.SPECIALFOLDERNAMEPROPERTIESFILE; } - - - + + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getRootForTree() */ @@ -206,7 +204,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT public FolderModel getRootForTree() throws Exception { workspaceLogger.trace("getRoot"); - + try { workspaceLogger.trace("getting workspace"); @@ -227,12 +225,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } catch (Exception e) { workspaceLogger.error("Error in server during root retrieving", e); // workspaceLogger.trace("Error in server During root retrieving " + e); - + //GWT can't serialize all exceptions throw new Exception("Error during workspace loading, please contact the support. Exception:" +e); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getRootForTree(java.lang.String) */ @@ -241,18 +239,18 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.info("getRoot for scope " + scopeId); workspaceLogger.trace("getting workspace"); - + try { Workspace workspace = getWorkspace(); workspaceLogger.trace("on server getRoot for scope: " + scopeId); - + // GCUBEScope gcubeScope = null; -// +// // if(scopeId.compareTo(ScopeUtilFilter.IDALLSCOPE)!=0){ // gcubeScope = GCUBEScope.getScope(scopeId); // } - + WorkspaceFolder root = workspace.getRoot(); if (root == null) { @@ -271,7 +269,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception("Error during workspace loading, please contact the support. Exception:" +e); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getItemsBySearchName(java.lang.String) @@ -283,45 +281,45 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT Workspace workspace = getWorkspace(); if(folderId==null || folderId.isEmpty()){ workspaceLogger.trace("searching folderId is null, settings root Id"); - folderId = workspace.getRoot().getId(); + folderId = workspace.getRoot().getId(); } - + workspaceLogger.info("searching by name: "+text +" in "+folderId); List listSearchItems = workspace.searchByName(text, folderId); workspaceLogger.info("HL search returning "+listSearchItems.size()+" items"); - + workspaceLogger.info("Converting "+listSearchItems.size()+" items"); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); List listFileGridModels = new ArrayList(); listFileGridModels = builder.buildGXTListFileGridModelItemForSearch(listSearchItems); workspaceLogger.info("Search objects converted, returning"); - + return listFileGridModels; } catch (Exception e) { workspaceLogger.error("Error in server During search retrieving", e); // workspaceLogger.trace("Error in server During search retrieving " + e); - + //GWT can't serialize all exceptions throw new Exception("Error during searching, please contact the support."); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getFolderChildren(org.gcube.portlets.user.workspace.client.model.FolderModel) */ @Override public List getFolderChildren(FolderModel folder) throws Exception, SessionExpiredException{ - + Workspace workspace; if(isSessionExpired()) throw new SessionExpiredException(); - + try { - + if(folder == null) - throw new Exception("Folder is null"); + throw new Exception("Folder is null"); workspaceLogger.trace("get folder children for: "+folder.getIdentifier() +" name: "+folder.getName()); workspace = getWorkspace(); @@ -329,7 +327,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT WorkspaceItem wsItem = workspace.getItem(folder.getIdentifier()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); listFileModels = builder.buildGXTListFileModelItem(wsItem, folder); - + //ADDING SPECIAL FOLDER? if(wsItem.isRoot()){ //ADD SPECIAL FOLDER @@ -339,13 +337,13 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT FileModel specialFolderModel = builder.buildGXTFileModelItem(specialFolder, folder); specialFolderModel.setSpecialFolder(true); String newName = getNameForSpecialFolder(); - + if(!newName.isEmpty()){ workspaceLogger.info("Special folder name updated as: "+newName); specialFolderModel.setName(newName); }else workspaceLogger.info("Special folder name is empty, skipping"); - + listFileModels.add(specialFolderModel); }catch (Exception e) { workspaceLogger.warn("An error occurred on retrieving special folders for folder id: "+folder.getIdentifier(), e); @@ -353,7 +351,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } return listFileModels; - + } catch (Exception e) { workspaceLogger.error("Error in server During item retrieving", e); // workspaceLogger.trace("Error in server During item retrieving " + e); @@ -362,48 +360,48 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /** * Gets the name for special folder. * * @return the name for special folder */ private String getNameForSpecialFolder(){ - + PropertySpecialFolderReader sfReader = getPropertySpecialFolderReader(); - + if(sfReader==null){ workspaceLogger.warn("Reader is null, skypping set to special folder name"); return ""; } - + workspaceLogger.info("Read special folder name: '"+sfReader.getSpecialFolderName()+"', from property file.."); return sfReader.getSpecialFolderName(); } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getFolderChildrenForFileGrid(org.gcube.portlets.user.workspace.client.model.FileModel) */ @Override public List getFolderChildrenForFileGrid(FileModel folder) throws Exception, SessionExpiredException { - + if(isSessionExpired()) throw new SessionExpiredException(); - + try { - + if(folder == null) - throw new Exception("Folder is null"); - + throw new Exception("Folder is null"); + workspaceLogger.trace("get children for Grid for folder: "+folder.getIdentifier()); Workspace workspace = getWorkspace(); List listFileGridModels = new ArrayList(); - WorkspaceFolder wsFolder = (WorkspaceFolder) workspace.getItem(folder.getIdentifier()); - GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - List listItems = (List) wsFolder.getChildren(); + WorkspaceFolder wsFolder = (WorkspaceFolder) workspace.getItem(folder.getIdentifier()); + GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); + List listItems = wsFolder.getChildren(); listFileGridModels = builder.buildGXTListFileGridModelItem(listItems, folder); - + //ADDING SPECIAL FOLDER? if(wsFolder.isRoot()){ //ADD SPECIAL FOLDER @@ -414,21 +412,21 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT // specialFolderModel.setShortcutCategory(GXTCategoryItemInterface.SMF_VRE_FOLDERS); specialFolderModel.setSpecialFolder(true); String newName = getNameForSpecialFolder(); - + if(!newName.isEmpty()){ workspaceLogger.info("Special folder name updated as: "+newName); specialFolderModel.setName(newName); }else workspaceLogger.info("Special folder name is empty, skipping"); - + listFileGridModels.add(specialFolderModel); }catch (Exception e) { workspaceLogger.warn("An error occurred on retrieving special folders for folder id: "+folder.getIdentifier(), e); } } - + return listFileGridModels; - + } catch (Exception e) { workspaceLogger.error("Error in server During items retrieving", e); String error = ConstantsExplorer.SERVER_ERROR + RETRIEVING_ITEM_EITHER_ITEM_DOESN_T_EXIST; @@ -436,34 +434,34 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getFolderChildrenForFileGridById(java.lang.String) */ @Override public List getFolderChildrenForFileGridById(String folderId) throws Exception, SessionExpiredException { - + if(isSessionExpired()) throw new SessionExpiredException(); - + try { if(folderId == null) - throw new Exception("Folder id is null"); - + throw new Exception("Folder id is null"); + Workspace workspace = getWorkspace(); workspaceLogger.trace("get children for Grid by id: "+folderId); List listFileGridModels = new ArrayList(); - + if(folderId==null || folderId.isEmpty()){ workspaceLogger.trace("id is null or empty, return"); return listFileGridModels; } - + workspaceLogger.trace("get children for Grid by id: "+folderId); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - + //BUILD PARENT WorkspaceItem wsItem = workspace.getItem(folderId); WorkspaceFolder parent; @@ -471,41 +469,41 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER) || wsItem.getType().equals(WorkspaceItemType.FOLDER)){ workspaceLogger.trace("item id: "+folderId +" is of type: "+wsItem.getType()); parent = (WorkspaceFolder) wsItem; - + }else{ workspaceLogger.trace("item id: "+folderId +" is not a folder but of type: "+wsItem.getType()+", get parent"); parent = wsItem.getParent(); } - + if(parent==null) return listFileGridModels; - + FileGridModel wsParent = builder.buildGXTFileGridModelItem(parent, null); - + //PARENT BUILDED IS SHARED? if(parent.isShared()){ wsParent.setShared(true); wsParent.setShareable(false); } - + Long startTime = System.currentTimeMillis(); - + //GET CHILDREN - List listItems = (List) parent.getChildren(); + List listItems = parent.getChildren(); Long endTime = System.currentTimeMillis() - startTime; String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime)); workspaceLogger.debug("grid getChildren() returning "+listItems.size()+" elements in " + time); listFileGridModels = builder.buildGXTListFileGridModelItem(listItems, wsParent); return listFileGridModels; - + } catch (Exception e) { workspaceLogger.error("Error in server During items retrieving", e); String error = ConstantsExplorer.SERVER_ERROR + RETRIEVING_ITEM_EITHER_ITEM_DOESN_T_EXIST; throw new Exception(error); } } - - + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getItemForFileGrid(java.lang.String) */ @@ -513,10 +511,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT public FileGridModel getItemForFileGrid(String itemId) throws Exception { try { - + if(itemId == null) - throw new Exception(IDENTIFIER_IS_NULL); - + throw new Exception(IDENTIFIER_IS_NULL); + Workspace workspace = getWorkspace(); workspaceLogger.trace("get child for Grid by id: "+itemId); WorkspaceItem wsItem = workspace.getItem(itemId); @@ -528,7 +526,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT //BUILD PARENT WorkspaceFolder folder = wsItem.getParent(); //get parent FileGridModel wsFolder = builder.buildGXTFileGridModelItem(folder, null); - //BUILD ITEM + //BUILD ITEM return builder.buildGXTFileGridModelItem(wsItem, wsFolder); } catch (Exception e) { @@ -537,24 +535,24 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getItemForFileTree(java.lang.String) */ @Override public FileModel getItemForFileTree(String itemId) throws Exception { try { - + if(itemId == null) - throw new Exception(IDENTIFIER_IS_NULL); - + throw new Exception(IDENTIFIER_IS_NULL); + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(itemId); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); //BUILD PARENT WorkspaceFolder folderParent = wsItem.getParent(); //get parent FileModel wsFolderParent = builder.buildGXTFileModelItem(folderParent, null); - //BUILD ITEM + //BUILD ITEM return builder.buildGXTFileModelItem(wsItem, wsFolderParent); } catch (Exception e) { @@ -563,7 +561,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#moveItem(java.lang.String, java.lang.String) */ @@ -573,22 +571,22 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(isSessionExpired()) throw new SessionExpiredException(); - + try { Workspace workspace = getWorkspace(); - + if(itemId == null) - throw new Exception(IDENTIFIER_IS_NULL); - + throw new Exception(IDENTIFIER_IS_NULL); + workspaceLogger.trace("moveItem item: "+itemId+" destination: "+destinationId); WorkspaceItem sourceItem = workspace.getItem(itemId); //GET SOURCE ITEM BEFORE OF MOVE - + if(sourceItem==null) return Boolean.FALSE; - + String sourceSharedId = null; boolean sourceItemIsShared = sourceItem.isShared(); - + if(sourceItemIsShared) sourceSharedId = sourceItem.getIdSharedFolder(); //GET SHARED ID BEFORE OF MOVE @@ -597,25 +595,25 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT WorkspaceItem folderDestinationItem = workspace.getItem(destinationId); //retrieve folder destination workspaceLogger.trace("sourceItem.isShared() "+sourceItemIsShared); workspaceLogger.trace("folderDestinationItem item: "+destinationId+" folderDestinationItem name "+folderDestinationItem.getName() + " folderDestinationItem shared: "+folderDestinationItem.isShared()); - - if(folderDestinationItem!=null){ - + + if(folderDestinationItem!=null){ + try{ checkNotifyAddItemToShare(destinationItem, sourceSharedId, folderDestinationItem); checkNotifyMoveItemFromShare(sourceItemIsShared, sourceItem, sourceSharedId, folderDestinationItem); - + }catch (Exception e) { workspaceLogger.error("An error occurred in checkNotify ", e); } } - + return Boolean.TRUE; }catch (InsufficientPrivilegesException e) { workspaceLogger.error("Error in server Item move", e); String error = "An error occurred on moving item. "+e.getMessage(); throw new Exception(error); - + } catch (Exception e) { workspaceLogger.error("Error in server Item move", e); String error = ConstantsExplorer.SERVER_ERROR + " moving item. "+e.getMessage(); @@ -623,9 +621,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } } - - - + + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#moveItems(java.util.List, java.lang.String) */ @@ -635,29 +633,29 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(isSessionExpired()) throw new SessionExpiredException(); - + boolean error = false; - + try { Workspace workspace = getWorkspace(); - + for (String itemId : ids) { - + if(itemId == null) - throw new Exception(IDENTIFIER_IS_NULL); - + throw new Exception(IDENTIFIER_IS_NULL); + workspaceLogger.trace("moveItem item: "+itemId+" destination: "+destinationId); WorkspaceItem sourceItem = workspace.getItem(itemId); //GET SOURCE ITEM BEFORE OF MOVE - + if(sourceItem==null){ error = true; break; } - + String sourceSharedId = null; boolean sourceItemIsShared = sourceItem.isShared(); - + if(sourceItemIsShared) sourceSharedId = sourceItem.getIdSharedFolder(); //GET SHARED ID BEFORE OF MOVE @@ -667,29 +665,29 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.trace("sourceItem.isShared() "+sourceItemIsShared ); workspaceLogger.trace("folderDestinationItem item: "+destinationId+" folderDestinationItem name "+folderDestinationItem.getName() + " folderDestinationItem shared: "+folderDestinationItem.isShared()); - if(folderDestinationItem!=null){ - + if(folderDestinationItem!=null){ + try{ checkNotifyAddItemToShare(destinationItem, sourceSharedId, folderDestinationItem); - + checkNotifyMoveItemFromShare(sourceItemIsShared, sourceItem, sourceSharedId, folderDestinationItem); - + }catch (Exception e) { workspaceLogger.error("An error occurred in checkNotify ", e); } } } - + if(error) return Boolean.FALSE; - + return Boolean.TRUE; }catch (InsufficientPrivilegesException e) { workspaceLogger.error("Error in server Item move", e); String error1 = "An error occurred on moving item. "+e.getMessage(); throw new Exception(error1); - + } catch (Exception e) { workspaceLogger.error("Error in server Item move", e); String error2 = ConstantsExplorer.SERVER_ERROR + " moving item. "+e.getMessage(); @@ -697,7 +695,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } } - + /** * Check notify add item to share. * @@ -706,26 +704,26 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT * @param folderDestinationItem the folder destination item */ private void checkNotifyAddItemToShare(final WorkspaceItem destinationItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem) { - + workspaceLogger.trace("checkNotifyAddItemToShare"); - - if(folderDestinationItem!=null){ - + + if(folderDestinationItem!=null){ + try{ //if folder destination is shared folder if(folderDestinationItem.isShared()){ //Notify Added Item To Sharing? - + workspaceLogger.trace("checkNotifyAddItemToShare destination item: "+destinationItem.getName()+" sourceSharedId: "+sourceSharedId + " folder destination: "+folderDestinationItem.getName()); - + //share condition is true if source shared folder is null or not equal to destination shared folder - boolean shareChangeCondition = (sourceSharedId==null) || (sourceSharedId.compareTo(folderDestinationItem.getIdSharedFolder())!=0); - + boolean shareChangeCondition = sourceSharedId==null || sourceSharedId.compareTo(folderDestinationItem.getIdSharedFolder())!=0; + //System.out.println("shareChangeCondition add item: "+ shareChangeCondition); - + workspaceLogger.trace("shareChangeCondition add item: "+shareChangeCondition); - + //if shareChangeCondition is true.. notifies added item to sharing - if(shareChangeCondition){ + if(shareChangeCondition){ List listContacts = getListUserSharedByFolderSharedId(folderDestinationItem.getIdSharedFolder()); @@ -734,26 +732,26 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT Workspace workspace = getWorkspace(); WorkspaceItem destinationSharedFolder = workspace.getItem(folderDestinationItem.getIdSharedFolder()); NotificationsProducer np = getNotificationProducer(); - + if(destinationSharedFolder instanceof WorkspaceSharedFolder){ np.notifyAddedItemToSharing(listContacts, destinationItem, (WorkspaceSharedFolder) destinationSharedFolder); workspaceLogger.trace("The notifies sent correctly"); } else workspaceLogger.warn("Notifies added item: "+destinationItem+ "to share doesn't sent because "+destinationSharedFolder+" is not istance of WorkspaceSharedFolder"); -// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem); - } +// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem); + } } else workspaceLogger.trace("folder destination is not shared"); - + }catch (Exception e) { workspaceLogger.error("An error occurred in verifyNotifyAddItemToShare ",e); } }else - workspaceLogger.warn("The notifies is failure in verifyNotifyAddItemToShare because folder destination item is null"); + workspaceLogger.warn("The notifies is failure in verifyNotifyAddItemToShare because folder destination item is null"); } - + /** * Check notify move item from share. @@ -764,37 +762,37 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT * @param folderDestinationItem the folder destination item */ private void checkNotifyMoveItemFromShare(final boolean sourceItemIsShared, final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem) { - + workspaceLogger.trace("checkNotifyMoveItemFromShare:"); - + try{ - - if(folderDestinationItem!=null){ - + + if(folderDestinationItem!=null){ + String idSharedFolder = folderDestinationItem.getIdSharedFolder()!=null?folderDestinationItem.getIdSharedFolder():""; - + //share condition is true if source shared folder is not equal to destination shared folder - boolean shareChangeCondition = sourceSharedId==null?false:(sourceSharedId.compareTo(idSharedFolder)!=0); - + boolean shareChangeCondition = sourceSharedId==null?false:sourceSharedId.compareTo(idSharedFolder)!=0; + workspaceLogger.trace("checkNotifyMoveItemFromShare source item: "+sourceItem.getName()+" sourceSharedId: "+sourceSharedId + " folder destination: "+folderDestinationItem.getName() +" sourceItemIsShared: "+sourceItemIsShared); - + // System.out.println("shareChangeCondition remove item: "+ shareChangeCondition); - + workspaceLogger.trace("shareChangeCondition remove item: "+ shareChangeCondition); - + //Notify Removed Item To Sharing? //if source Item is shared and folder destination is not shared or shareChangeCondition is true.. notifies removed item to sharing if(sourceItemIsShared && (!folderDestinationItem.isShared() || shareChangeCondition)){ - + //get contacts List listContacts = getListUserSharedByFolderSharedId(sourceSharedId); - + //DEBUG printContacts(listContacts); Workspace workspace = getWorkspace(); WorkspaceItem sourceSharedFolder = workspace.getItem(sourceSharedId); NotificationsProducer np = getNotificationProducer(); - + if(sourceSharedFolder instanceof WorkspaceSharedFolder){ np.notifyMovedItemToSharing(listContacts, sourceItem, (WorkspaceSharedFolder) sourceSharedFolder); workspaceLogger.trace("The notifies was sent correctly"); @@ -804,13 +802,13 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT }else workspaceLogger.warn("The notifies is failure in checkNotifyMoveItemFromShare because folder destination item is null"); - + }catch (Exception e) { workspaceLogger.error("An error occurred in checkNotifyMoveItemFromShare ",e); } } - + //DEBUG /** * Prints the contacts. @@ -818,7 +816,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT * @param listContacts the list contacts */ private void printContacts(List listContacts){ - + workspaceLogger.trace("Contacts:"); for (InfoContactModel infoContactModel : listContacts) { workspaceLogger.trace("User: "+infoContactModel); @@ -843,12 +841,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public Boolean removeItem(String itemId) throws Exception { - + try { - + if(itemId == null) - throw new Exception(IDENTIFIER_IS_NULL); - + throw new Exception(IDENTIFIER_IS_NULL); + Workspace workspace = getWorkspace(); workspaceLogger.trace("removeItem item for id: "+itemId); //NOTIFICATION @@ -860,7 +858,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(sourceItemIsShared) sourceFolderSharedId = wsItem.getIdSharedFolder(); - + //REMOVE ITEM workspace.removeItem(itemId); //IF SOURCE SHARED FOLDER IS NOT NULL @@ -868,7 +866,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT NotificationsUtil.checkSendNotifyRemoveItemToShare(this.getThreadLocalRequest().getSession(), sourceItemIsShared, itemName, itemId, sourceFolderSharedId); return Boolean.TRUE; - + } catch (InsufficientPrivilegesException e) { workspaceLogger.error("Error in server Item remove", e); String error = "Insufficient Privileges to remove the item"; @@ -891,23 +889,23 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public Boolean renameItem(String itemId, String newName, String previousName) throws Exception { - + if(isSessionExpired()) throw new SessionExpiredException(); - + try { - + if(itemId == null) - throw new Exception(IDENTIFIER_IS_NULL); - + throw new Exception(IDENTIFIER_IS_NULL); + Workspace workspace = getWorkspace(); workspaceLogger.trace("rename item itemId: "+itemId+" old name "+ previousName +", new name: "+newName); workspace.renameItem(itemId, newName); //NOTIFIER WorkspaceItem wsItem = workspace.getItem(itemId); - + if(wsItem.isShared()){ - + try{ List listSharedContact = new ArrayList(); NotificationsProducer notification = getNotificationProducer(); @@ -915,7 +913,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(NotificationsUtil.isASharedFolder(wsItem)){ notification.notifyFolderRenamed(listSharedContact, wsItem, previousName, newName, wsItem.getIdSharedFolder()); }else{ - + //TWO CASES: EITHER ROOT FOLDER AS WorkspaceSharedFolder OR DOESN'T. WorkspaceItem sharedFolder = workspace.getItem(wsItem.getIdSharedFolder()); if(sharedFolder instanceof WorkspaceSharedFolder) @@ -930,7 +928,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } return true; - + } catch (InsufficientPrivilegesException e) { String error = "Insufficient Privileges to rename the item"; workspaceLogger.error(error, e); @@ -949,20 +947,20 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#createFolder(java.lang.String, java.lang.String, org.gcube.portlets.user.workspace.client.model.FileModel) */ @Override public FolderModel createFolder(String nameFolder, String description, FileModel parent) throws Exception { - + workspaceLogger.trace("create folder: "+nameFolder +" parent is null"+parent==null); try { - + if(nameFolder == null) - throw new Exception("Folder name is null"); - + throw new Exception("Folder name is null"); + Workspace workspace = getWorkspace(); WorkspaceFolder wsFolder = workspace.createFolder(nameFolder, description, parent.getIdentifier()); WorkspaceItem folderDestinationItem = workspace.getItem(parent.getIdentifier()); @@ -983,7 +981,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.error(error, e); throw new Exception(error); } - + } /* (non-Javadoc) @@ -991,17 +989,17 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public FileDetailsModel getDetailsFile(FileModel folder) throws Exception { - + try { - + if(folder == null) - throw new Exception("Folder is null"); - + throw new Exception("Folder is null"); + workspaceLogger.trace("load file details: " + folder.getName()); Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(folder.getIdentifier()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - + return builder.buildGWTWorkspaceFileDetails(wsItem, folder); } catch (Exception e) { @@ -1009,27 +1007,27 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(e.getMessage()); } } - - + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getChildrenSubTreeToRootByIdentifier(java.lang.String) */ @Override public ArrayList getChildrenSubTreeToRootByIdentifier(String itemIdentifier) throws Exception { - + ArrayList listSubTree = new ArrayList(); - + try { - + if(itemIdentifier == null) - throw new Exception(IDENTIFIER_IS_NULL); - + throw new Exception(IDENTIFIER_IS_NULL); + Workspace workspace = getWorkspace(); workspaceLogger.trace("search itemId: "+itemIdentifier); - WorkspaceItem item = workspace.getItem(itemIdentifier); //get item from workspace + WorkspaceItem item = workspace.getItem(itemIdentifier); //get item from workspace getListsChildrenByParent(listSubTree, item); Collections.reverse(listSubTree); //reverse order of array - + //SET THE ROOT int lenght = listSubTree.size(); if(lenght>0){ @@ -1048,50 +1046,50 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } } } - + workspaceLogger.trace("getChildrenSubTreeToRootByIdentifier returning list SubTree: "+listSubTree); } catch (Exception e) { workspaceLogger.error("Error in server find Item", e); throw new Exception(e.getMessage()); } - + return listSubTree; } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getSmartFolderResultsByCategory(java.lang.String) */ @Override public List getSmartFolderResultsByCategory(String category) throws Exception { - + try { - + Workspace workspace = getWorkspace(); workspaceLogger.trace("get smart folder by category: "+category); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); List listWorkspaceItems = new ArrayList(); - + //Category IMAGES - if(category.equals(GXTCategoryItemInterface.SMF_IMAGES.toString())){ + if(category.equals(GXTCategoryItemInterface.SMF_IMAGES.toString())){ listWorkspaceItems = workspace.getFolderItems(FolderItemType.IMAGE_DOCUMENT, FolderItemType.EXTERNAL_IMAGE); //Category BIODIVERSITY }else if(category.equals(GXTCategoryItemInterface.SMF_BIODIVERSITY.toString())){ // listWorkspaceItems = workspace.getFolderItems(FolderItemType.AQUAMAPS_ITEM); //Category DOCUMENTS }else if(category.equals(GXTCategoryItemInterface.SMF_DOCUMENTS.toString())){ - + listWorkspaceItems = workspace.getFolderItems( - FolderItemType.EXTERNAL_FILE, + FolderItemType.EXTERNAL_FILE, FolderItemType.EXTERNAL_PDF_FILE, FolderItemType.QUERY, FolderItemType.PDF_DOCUMENT, FolderItemType.METADATA, FolderItemType.DOCUMENT ); - + //Category LINKS }else if(category.equals(GXTCategoryItemInterface.SMF_LINKS.toString())){ -// listWorkspaceItems = workspace.getFolderItems(FolderItemType.EXTERNAL_URL, FolderItemType.URL_DOCUMENT, FolderItemType.EXTERNAL_RESOURCE_LINK); +// listWorkspaceItems = workspace.getFolderItems(FolderItemType.EXTERNAL_URL, FolderItemType.URL_DOCUMENT, FolderItemType.EXTERNAL_RESOURCE_LINK); //Category REPORTS }else if(category.equals(GXTCategoryItemInterface.SMF_REPORTS.toString())){ listWorkspaceItems = workspace.getFolderItems(FolderItemType.REPORT_TEMPLATE, FolderItemType.REPORT); @@ -1103,12 +1101,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT new Exception("Smart folder category unknown"); return builder.filterListFileGridModelItemByCategory(listWorkspaceItems, category); - + } catch (Exception e) { workspaceLogger.error("Error in server get smart folder by category", e); throw new Exception(e.getMessage()); } - + } @@ -1121,7 +1119,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT * @throws Exception the exception */ private void getListsChildrenByParent(ArrayList listSubTree, WorkspaceItem parent) throws Exception{ - + if(parent==null) return; @@ -1129,9 +1127,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.warn("getListsChildrenByParent returning: "+parent.getName() +" is not a folder"); return; } - + workspaceLogger.trace("getListsChildrenByParent: "+parent.getName()); - GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); + GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); FolderModel parentModel = (FolderModel) builder.buildGXTFileModelItem(parent, null); //get folder List childrenList = getFolderChildren(parentModel); //get children SubTree subTree = new SubTree(parentModel, childrenList); @@ -1144,11 +1142,11 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public SmartFolderModel createSmartFolder(String name, String description, String query, String parentId) throws Exception { - + try { - + Workspace workspace = getWorkspace(); - workspaceLogger.trace("create smart folder by name: "+name); + workspaceLogger.trace("create smart folder by name: "+name); workspaceLogger.trace("description " + description); workspaceLogger.trace("query " + query); workspaceLogger.trace("parentId " + parentId); @@ -1157,12 +1155,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.trace("parent id is null using root id"); parentId = workspace.getRoot().getId(); } - - WorkspaceSmartFolder wsSmartFolder = workspace.createSmartFolder(name, description, query, parentId); //create Smart Folder from workspace + + WorkspaceSmartFolder wsSmartFolder = workspace.createSmartFolder(name, description, query, parentId); //create Smart Folder from workspace workspaceLogger.trace("create : " +wsSmartFolder.getName() + " id "+ wsSmartFolder.getId()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); return builder.buildGXTSmartFolderModel(wsSmartFolder,query); - + } catch (Exception e) { workspaceLogger.error("Error in server create smart folder by name: ", e); // workspaceLogger.trace("Error in server create smart folder by id " + e); @@ -1170,46 +1168,46 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(e.getMessage()); } } - - + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#removeSmartFolder(java.lang.String, java.lang.String) */ @Override public Boolean removeSmartFolder(String itemId, String name) throws Exception { - + if(itemId==null) return null; - + try { - + Workspace workspace = getWorkspace(); workspaceLogger.trace("remove smart folder by id: "+itemId); - workspace.removeItem(itemId); //remove Smart Folder from workspace + workspace.removeItem(itemId); //remove Smart Folder from workspace return true; - + } catch (Exception e) { workspaceLogger.error("Error in remove smart folder by id: ", e); throw new Exception(e.getMessage()); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getAllSmartFolders() */ @Override public List getAllSmartFolders() throws Exception{ - + try { - + Workspace workspace = getWorkspace(); workspaceLogger.trace("get all smart folder"); List listWorkspaceFolder = new ArrayList(); - listWorkspaceFolder = workspace.getAllSmartFolders(); //create Smart Folder from workspace + listWorkspaceFolder = workspace.getAllSmartFolders(); //create Smart Folder from workspace workspaceLogger.trace("list smart folders size" + listWorkspaceFolder.size()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); return builder.buildGXTListSmartFolderModel(listWorkspaceFolder); - + } catch (Exception e) { workspaceLogger.error("Error in server get all smart folder: ", e); throw new Exception(e.getMessage()); @@ -1224,23 +1222,23 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(folderId == null) return null; - + try { - + Workspace workspace = getWorkspace(); workspaceLogger.trace("get smart folder by id: "+folderId); - WorkspaceSmartFolder wsSmartFolder = workspace.getSmartFolder(folderId); //get Smart Folder from workspace + WorkspaceSmartFolder wsSmartFolder = workspace.getSmartFolder(folderId); //get Smart Folder from workspace workspaceLogger.trace("wsFolder " + wsSmartFolder.getName()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - + List searchItems = wsSmartFolder.getSearchItems(); - + if(searchItems!=null){ workspaceLogger.trace("smart folders size "+searchItems.size()); return builder.buildGXTListFileGridModelItemForSearch((List) searchItems); }else return new ArrayList(); - + } catch (Exception e) { workspaceLogger.error("Error in get server smart folder by id", e); throw new Exception(e.getMessage()); @@ -1252,15 +1250,15 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public GWTWorkspaceItem getImageById(String identifier, boolean isInteralImage, boolean fullDetails) throws Exception { - + if(identifier==null) return null; - + try { - + Workspace workspace = getWorkspace(); workspaceLogger.trace("get image by id: "+identifier); - WorkspaceItem item = workspace.getItem(identifier); //get item from workspace + WorkspaceItem item = workspace.getItem(identifier); //get item from workspace workspaceLogger.trace("item name " + item.getName()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); return builder.buildGWTWorkspaceImage(item, isInteralImage, fullDetails); @@ -1270,25 +1268,25 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(e.getMessage()); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getTimeSeriesById(java.lang.String) */ @Override - @Deprecated + @Deprecated /** * this method return always null */ public GWTWorkspaceItem getTimeSeriesById(String identifier) throws Exception { - + if(identifier==null) return null; - + try { - + Workspace workspace = getWorkspace(); workspaceLogger.trace("get timeseries by id: "+identifier); - WorkspaceItem item = workspace.getItem(identifier); //get item from workspace + WorkspaceItem item = workspace.getItem(identifier); //get item from workspace workspaceLogger.trace("item name " + item.getName()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); return null; @@ -1297,25 +1295,25 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(e.getMessage()); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getUrlById(java.lang.String, boolean, boolean) */ @Override public GWTWorkspaceItem getUrlById(String identifier, boolean isInternalUrl, boolean fullDetails) throws Exception { - + try { - + if(identifier==null) throw new Exception(IDENTIFIER_IS_NULL); - + Workspace workspace = getWorkspace(); workspaceLogger.trace("get url by id: "+identifier); - WorkspaceItem item = workspace.getItem(identifier); //get item from workspace + WorkspaceItem item = workspace.getItem(identifier); //get item from workspace workspaceLogger.trace("item name " + item.getName()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); return builder.buildGWTWorspaceUrl(item, isInternalUrl, fullDetails); - + } catch (Exception e) { workspaceLogger.error("Error in server get image by id ", e); // workspaceLogger.trace("Error in server get image by id " + e); @@ -1329,29 +1327,29 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public FileModel createExternalUrl(FileModel parentFileModel, String name, String description, String url) throws Exception { - + try { Workspace workspace = getWorkspace(); - + if(parentFileModel==null) throw new Exception("Parent item is null"); - + workspaceLogger.trace("create url in parent id: "+parentFileModel.getIdentifier()); - + //DEBUG // workspaceLogger.trace("Name " + name); // workspaceLogger.trace("description " + description); // workspaceLogger.trace("url " + url); -// workspaceLogger.trace("parentFileModel " + parentFileModel.getIdentifier() + " " + parentFileModel.getName()); -// if(description == null) +// workspaceLogger.trace("parentFileModel " + parentFileModel.getIdentifier() + " " + parentFileModel.getName()); +// if(description == null) // description = ""; - + ExternalUrl ext = workspace.createExternalUrl(name, description, url, parentFileModel.getIdentifier()); - WorkspaceItem parent = workspace.getItem(parentFileModel.getIdentifier()); //get item from workspace + WorkspaceItem parent = workspace.getItem(parentFileModel.getIdentifier()); //get item from workspace workspaceLogger.trace("parent name " + parent.getName()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); return builder.buildGXTFileModelItem(ext, parentFileModel); - + } catch (Exception e) { workspaceLogger.error("Error in server create url in parent id ", e); // workspaceLogger.trace("Error in server create url in parent id " + e); @@ -1359,39 +1357,39 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(e.getMessage()); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getURLFromApplicationProfile(java.lang.String) */ @Override public String getURLFromApplicationProfile(String oid) throws Exception { - + String urlPortlet = ""; ApplicationReaderFromGenericResource app = new ApplicationReaderFromGenericResource(); - + try{ - + if(oid==null) throw new Exception(IDENTIFIER_IS_NULL); ASLSession session = WsUtil.getAslSession(this.getThreadLocalRequest().getSession()); - + if(WsUtil.isVRE(session)){ - + ScopeProvider.instance.set(session.getScope()); // GET WORKSPACE Workspace workspace = HomeLibrary.getUserWorkspace(session.getUsername()); // GET ITEM FROM WORKSPACE WorkspaceItem item = workspace.getItem(oid); - + // ITEM IS A WorkspaceItemType.FOLDER_ITEM? if (item.getType().equals(WorkspaceItemType.FOLDER_ITEM)) { FolderItem folderItem = (FolderItem) item; - + if(folderItem.getFolderItemType().equals(FolderItemType.REPORT)){ setValueInSession("idreport", oid); - + }else if(folderItem.getFolderItemType().equals(FolderItemType.REPORT_TEMPLATE)){ setValueInSession("idtemplate", oid); } @@ -1400,21 +1398,21 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } else urlPortlet = app.getURLFromApplicationProfile(oid, WsUtil.getAslSession(this.getThreadLocalRequest().getSession()),this.getThreadLocalRequest().getSession()); - + } catch (Exception e) { workspaceLogger.error("getURLFromApplicationProfile", e); throw new Exception("Sorry, an error occurred in retrieve application profile, try again"); } - + return urlPortlet; } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#setValueInSession(java.lang.String, java.lang.String) */ @Override public void setValueInSession(String name, String value) throws Exception { - + try{ ASLSession session = WsUtil.getAslSession(this.getThreadLocalRequest().getSession()); @@ -1431,9 +1429,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public List getAllScope() throws Exception { - + try { - + Workspace workspace = getWorkspace(); workspaceLogger.trace("get all scope"); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); @@ -1447,7 +1445,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.error("workspace.getHome() is null"); throw new Exception("Sorry, an error occurred on getting all scope. Please try later"); } - + } catch (Exception e) { workspaceLogger.error("Error in server get all scope ", e); e.printStackTrace(); @@ -1462,52 +1460,52 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public List getAllContacts() throws Exception { - + try { - + workspaceLogger.trace("Get all contacts from server..."); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - + org.gcube.common.homelibrary.home.workspace.usermanager.UserManager hlUserManager = HomeLibrary.getHomeManagerFactory().getUserManager(); - + if(isTestMode()){ - + workspaceLogger.warn("WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS"); List listContactsModel = new ArrayList(); HashMap hashFakeUsers = GWTWorkspaceBuilder.getHashTestUsers(); for (String login : hashFakeUsers.keySet()) { - + InfoContactModel contact = hashFakeUsers.get(login); listContactsModel.add(contact); - + } -// //TEST USERS +// //TEST USERS // listContactsModel.add(new InfoContactModel("antonio.gioia", "antonio.gioia", "Antonio Gioia",false)); // listContactsModel.add(new InfoContactModel("fabio.sinibaldi", "fabio.sinibaldi", "Fabio Sinibaldi",false)); // listContactsModel.add(new InfoContactModel("pasquale.pagano", "pasquale.pagano", "Pasquale Pagano",false)); // listContactsModel.add(new InfoContactModel(WsUtil.TEST_USER, WsUtil.TEST_USER, WsUtil.TEST_USER_FULL_NAME,false)); // listContactsModel.add(new InfoContactModel("francesco.mangiacrapa", "francesco.mangiacrapa", "Francesco Mangiacrapa",false)); // listContactsModel.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante",false)); - + workspaceLogger.trace("Home Library User Manager getting list Gcube Group"); listContactsModel.addAll(builder.buildGXTListContactsModelFromGcubeGroup(hlUserManager.getGroups())); - + return listContactsModel; - + } UserManager userManag = new LiferayUserManager(); GroupManager gm = new LiferayGroupManager(); String groupId = gm.getRootVO().getGroupId(); - + workspaceLogger.trace("Liferay User Manager getting list users by group: "+groupId); List listContactsModel = builder.buildGXTListContactsModelFromUserModel(userManag.listUsersByGroup(groupId)); - + workspaceLogger.trace("Home Library User Manager getting list Gcube Group"); listContactsModel.addAll(builder.buildGXTListContactsModelFromGcubeGroup(hlUserManager.getGroups())); - + return listContactsModel; - + } catch (Exception e) { workspaceLogger.error("Error in server get all contacts ", e); // return new ArrayList(); @@ -1520,14 +1518,14 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public boolean sendToById(List listContactsId, List listAttachmentsId, String subject, String body) throws Exception { - + try { - + Workspace workspace = getWorkspace(); // workspaceLogger.trace("######### SEND TO: "); // workspaceLogger.trace("subject " + subject); // workspaceLogger.trace("body " + body); - + //DEBUG for(String contactId : listContactsId) workspaceLogger.trace("contactId " + contactId); @@ -1536,16 +1534,16 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.trace("attachId " + id); workspace.getWorkspaceMessageManager().sendMessageToPortalLogins(subject, body, listAttachmentsId, listContactsId); - return true; - + return true; + } catch (Exception e) { workspaceLogger.error("Error in server sendTo ", e); //GWT can't serialize all exceptions throw new Exception(e.getMessage()); } - + } - + /** * Gets the list workspace item by id. * @@ -1556,30 +1554,30 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT * @throws InternalErrorException the internal error exception */ private List getListWorkspaceItemById(Workspace workspace, List listItemsId) throws ItemNotFoundException, InternalErrorException{ - + List listWorkspaceItem = new ArrayList(); - + for(String itemId: listItemsId){ - + WorkspaceItem item = workspace.getItem(itemId); workspaceLogger.trace("Attach name: " +item.getName()); workspaceLogger.trace("Attach id: " +item.getId()); - listWorkspaceItem.add(workspace.getItem(itemId)); //get item from workspace + listWorkspaceItem.add(workspace.getItem(itemId)); //get item from workspace } - + return listWorkspaceItem; } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#copyItem(java.lang.String, java.lang.String) */ @Override public boolean copyItem(String itemId, String destinationFolderId) throws Exception { - + if(isSessionExpired()) throw new SessionExpiredException(); - + try { Workspace workspace = getWorkspace(); @@ -1589,10 +1587,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT WorkspaceItem destinationItem = workspace.copy(itemId, destinationFolderId); //copy item WorkspaceItem folderDestinationItem = workspace.getItem(destinationFolderId); checkNotifyAddItemToShare(destinationItem, sourceSharedId, folderDestinationItem); - + if(destinationItem!=null) return true; - + return false; }catch (InsufficientPrivilegesException e) { String error = "An error occurred on copying item, " +e.getMessage() + ". "+ConstantsExplorer.TRY_AGAIN; @@ -1607,22 +1605,22 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - - + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#copyItems(java.util.List, java.lang.String) */ @Override public boolean copyItems(List idsItem, String destinationFolderId) throws Exception { - + if(isSessionExpired()) throw new SessionExpiredException(); - + try { Workspace workspace = getWorkspace(); boolean error = false; - + for (String itemId : idsItem) { WorkspaceItem sourceItem = workspace.getItem(itemId); //GET SOURCE ITEM BEFORE COPY @@ -1631,16 +1629,16 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT WorkspaceItem destinationItem = workspace.copy(itemId, destinationFolderId); //copy item WorkspaceItem folderDestinationItem = workspace.getItem(destinationFolderId); checkNotifyAddItemToShare(destinationItem, sourceSharedId, folderDestinationItem); - + if(destinationItem==null){ error = true; break; } } - + if(error) return false; //Copied is false - + return true; //copied is true }catch (InsufficientPrivilegesException e) { @@ -1662,7 +1660,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public String getUrlWebDav(String itemId) throws Exception { - + try { Workspace workspace = getWorkspace(); workspaceLogger.trace("getWebDavUrl" + itemId); @@ -1674,46 +1672,46 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(e.getMessage()); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#shareFolder(org.gcube.portlets.user.workspace.client.model.FileModel, java.util.List, boolean, org.gcube.portlets.user.workspace.shared.WorkspaceACL) */ @Override public boolean shareFolder(FileModel folder, List listContacts, boolean isNewFolder, WorkspaceACL acl) throws Exception { - + if(isSessionExpired()) throw new SessionExpiredException(); - + try { Workspace workspace = getWorkspace(); - - workspaceLogger.info("shareFolder "+ folder.getIdentifier() - + " name: "+ folder.getName() + + workspaceLogger.info("shareFolder "+ folder.getIdentifier() + + " name: "+ folder.getName() + " parent is: " + folder.getParentFileModel() + " listContacts size: " + listContacts.size() +" ACL: "+acl); - + //DEBUG printContacts(listContacts); List listLogin = UserUtil.getListLoginByInfoContactModel(listContacts); WorkspaceSharedFolder sharedFolder = null; List listSharedContact = null; - + boolean sourceFolderIsShared = folder.isShared(); - + if(sourceFolderIsShared){ //if source folder is already share... retrieve old list of sharing to notify listSharedContact = getListUserSharedByFolderSharedId(folder.getIdentifier()); } if(listLogin.size()>0){ - + if(!isNewFolder){ - + sharedFolder = workspace.shareFolder(listLogin, folder.getIdentifier()); sharedFolder.setDescription(folder.getDescription()); //SET NEW DESCRIPTION - + //USER REMOVED FROM SHARE DifferenceBetweenInfoContactModel diff2 = new DifferenceBetweenInfoContactModel(listSharedContact, listContacts); List listRemovedUsersFromShare = diff2.getDifferentsContacts(); @@ -1735,12 +1733,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT sharedFolder = workspace.createSharedFolder(folder.getName(), folder.getDescription(), listLogin, parentId); } } - + boolean created = sharedFolder==null?false:true; if(acl!=null) setACLs(sharedFolder.getId(), listLogin, acl.getId().toString()); - + if(created){ NotificationsProducer np = getNotificationProducer(); if(!sourceFolderIsShared) //if source folder is not already shared @@ -1750,19 +1748,19 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT np.notifyUpdatedUsersToSharing(listSharedContact, listContacts, sharedFolder); } } - + return created; } catch (InsufficientPrivilegesException e) { workspaceLogger.error("Error in shareFolder ", e); String error = "An error occurred on creating shared folder. "+ e.getMessage(); throw new Exception(error); - + } catch (ItemAlreadyExistException e) { workspaceLogger.error("Error in shareFolder ", e); String error = "An error occurred on creating shared folder. "+ e.getMessage(); throw new Exception(error); - + } catch (WrongDestinationException e) { workspaceLogger.error("Error in shareFolder ", e); String error = "An error occurred on creating shared folder. "+ e.getMessage(); @@ -1781,15 +1779,15 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public List getListUserSharedByFolderSharedId(String folderSharedId) throws Exception{ - + workspaceLogger.trace("getListUserSharedByFolderSharedId "+ folderSharedId); try { Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(folderSharedId); - + if(NotificationsUtil.isASharedFolder(wsItem)){ - + WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) wsItem; GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); List listPortalLogin = wsFolder.getUsers(); @@ -1797,21 +1795,21 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(isTestMode()) return builder.buildGxtInfoContactFromPortalLoginTestMode(listPortalLogin); - + return builder.buildGxtInfoContactsFromPortalLogins(listPortalLogin); } else workspaceLogger.trace("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER); - + return new ArrayList(); - + } catch (Exception e) { workspaceLogger.error("Error in getListUserSharedByItemId ", e); throw new Exception(e.getMessage()); } } - - + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getListUserSharedBySharedItem(java.lang.String) */ @@ -1819,19 +1817,19 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT public List getListUserSharedBySharedItem(String sharedItemId) throws Exception{ workspaceLogger.trace("Get ListUserSharedBySharedItem "+ sharedItemId); try { - + WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId(sharedItemId); if(wsFolder!=null){ if(isASharedFolder(wsFolder, true)){ GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - + WorkspaceSharedFolder wsSharedFolder = (WorkspaceSharedFolder) wsFolder; List listPortalLogin = wsSharedFolder.getUsers(); workspaceLogger.trace("getListUserSharedByFolderSharedId return "+ listPortalLogin.size() + " user/s"); - + if(isTestMode()) return builder.buildGxtInfoContactFromPortalLoginTestMode(listPortalLogin); - + return builder.buildGxtInfoContactsFromPortalLogins(listPortalLogin); }else{ workspaceLogger.warn("wsFolder with id: "+sharedItemId +" is not a: "+WorkspaceItemType.SHARED_FOLDER +", returning null"); @@ -1840,37 +1838,37 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } workspaceLogger.warn("wsFolder with id: "+sharedItemId +" is null, returning null"); return null; - + } catch (Exception e) { workspaceLogger.error("Error in getListUserSharedByItemId ", e); throw new Exception(e.getMessage()); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#unSharedFolderByFolderSharedId(java.lang.String) */ @Override public boolean unSharedFolderByFolderSharedId(String folderSharedId) throws Exception{ - + boolean unShared = false; - + if(isSessionExpired()) throw new SessionExpiredException(); - + workspaceLogger.trace("unSharedFolderByFolderSharedId "+ folderSharedId); - + try { - + if(isASharedFolder(folderSharedId, true)){ Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(folderSharedId); workspaceLogger.trace("workspace return an item with name "+wsItem.getName()); WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) wsItem; - - List contacts = getListUserSharedByFolderSharedId(folderSharedId); + + List contacts = getListUserSharedByFolderSharedId(folderSharedId); String sharedFolderName = wsFolder.getName(); - + //RETURN A NEW FOLDER wsFolder.unShare(); workspaceLogger.trace("no error incoming on unsharing"); @@ -1888,7 +1886,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } workspaceLogger.trace("UNSHARE WITH: "); printContacts(purgeMyContact); - + np.notifyFolderUnSharing(purgeMyContact, folderSharedId, sharedFolderName); } else{ @@ -1896,22 +1894,22 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.warn("the item with id: "+folderSharedId+ "is not "+WorkspaceItemType.SHARED_FOLDER +" or root shared folder"); throw new WorkspaceHandledException(msg); } - + } catch (InternalErrorException e) { workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e); String error = "An error occerred on unsharing folder. "+ e.getMessage(); throw new Exception(error); - + } catch (WorkspaceHandledException e) { String error = ConstantsExplorer.SERVER_ERROR+" unshare folder. "+e.getMessage(); throw new Exception(error); - + } catch (Exception e) { workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e); String error = ConstantsExplorer.SERVER_ERROR+" unshare folder. Refresh folder and " +ConstantsExplorer.TRY_AGAIN; throw new Exception(error); } - + return unShared; } @@ -1925,20 +1923,20 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public List getListParentsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception { - + workspaceLogger.debug("get List Parents By Item Identifier "+ itemIdentifier +", include Item As (Last) Parent: "+includeItemAsParent); - + if(itemIdentifier==null) return new ArrayList(); //empty list - + try { - + Workspace workspace = getWorkspace(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - List parents = workspace.getParentsById(itemIdentifier); + List parents = workspace.getParentsById(itemIdentifier); workspaceLogger.debug("parents returned by HL, size: "+ parents.size()); String nameSpecialFolder = getNameForSpecialFolder(); - + switch (parents.size()) { case 0: // itemIdentifier is ROOT workspaceLogger.trace("itemIdentifier isRoot..."); @@ -1954,7 +1952,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.trace("returning empty list"); return new ArrayList(); // empty list } - + case 1: //itemIdentifier is first level from root workspaceLogger.trace("itemIdentifier is first level..."); List listParents = new ArrayList(); @@ -1964,20 +1962,20 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(includeItemAsParent){ WorkspaceFolder wsFolder1 =(WorkspaceFolder) workspace.getItem(itemIdentifier); //root parent =builder.buildGXTFolderModelItemHandleSpecialFolder(wsFolder1, null, nameSpecialFolder); - } + } listParents.add(root); if(parent!=null) listParents.add(parent); // workspaceLogger.trace("returning: "+listParents.toString()); return listParents; - + default: break; } - + WorkspaceItem lastItem = parents.get(parents.size()-1); FileModel[] arrayParents; - + //CONVERTING LAST ELEMENT IF NECESSARY workspaceLogger.trace("converting last element.."); if(includeItemAsParent && lastItem.isFolder()){ //FIX BUG #298 @@ -1993,7 +1991,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT WorkspaceFolder wsFolder = (WorkspaceFolder) parents.get(i); arrayParents[i] = builder.buildGXTFolderModelItemHandleSpecialFolder(wsFolder, null, nameSpecialFolder); } - + //SET PARENTS workspaceLogger.trace("setting parents.."); for(int i=0; i getUsersManagerToSharedFolder(String folderId) throws Exception{ - + try{ - + workspaceLogger.info("Get User Manager to shared folder id: "+folderId); Workspace workspace = getWorkspace(); List listManagers = new ArrayList(); @@ -2062,10 +2060,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.info("Added owner: "+owner); listManagers.add(owner); WorkspaceItem wsItem = workspace.getItem(folderId); - - if(wsItem.isShared() && (wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER))){ + + if(wsItem.isShared() && wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ WorkspaceSharedFolder ite = (WorkspaceSharedFolder) workspace.getItemByPath(wsItem.getPath()); - + workspaceLogger.info("Retrieving administrators..."); Map> aclOwner = ite.getACLOwner(); if(aclOwner!=null){ @@ -2080,7 +2078,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } workspaceLogger.info("Added " +listLogins.size() +"administrators, converting into InfoContactModel"); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - + List adms = builder.buildGxtInfoContactsFromPortalLogins(listLogins); listManagers.addAll(adms); workspaceLogger.info("Returing" +listManagers.size() +"users managers"); @@ -2089,7 +2087,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } }else throw new Exception("Source item is not shared or shared folder"); - + }catch (Exception e) { String error = "Sorry an error occurred on get managers "; workspaceLogger.error(error, e); @@ -2104,22 +2102,22 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public String itemExistsInWorkpaceFolder(String parentId, String itemName) throws Exception { - + workspaceLogger.trace("get itemExistsInWorkpace by parentId: "+parentId); System.out.println("get itemExistsInWorkpace by parentId: "+parentId); - + try { - + Workspace workspace = getWorkspace(); 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) return null; - + return itemFound.getId(); } else @@ -2143,16 +2141,16 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT public Date getItemCreationDateById(String itemId) throws Exception { workspaceLogger.trace("get Item Creation Date By ItemId "+ itemId); try { - + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(itemId); Calendar cl = wsItem.getCreationTime(); - + if(cl!=null) return cl.getTime(); - + return null; - + } catch (Exception e) { workspaceLogger.error("get Item Creation Date By ItemId ", e); throw new Exception(e.getMessage()); @@ -2164,14 +2162,14 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public Long loadSizeByItemId(String itemId) throws Exception { - + workspaceLogger.info("get Size By ItemId "+ itemId); try { - + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(itemId); Long size = new Long(-1); - + if(wsItem instanceof FolderItem){ //ITEM FolderItem folderItem = (FolderItem) wsItem; size = new Long(folderItem.getLength()); @@ -2184,34 +2182,34 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } workspaceLogger.info("returning size: " +size); return size; - + } catch (Exception e) { workspaceLogger.error("get Size By ItemId ", e); throw new Exception(e.getMessage()); } } - - + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#loadLastModificationDateById(java.lang.String) */ @Override public Date loadLastModificationDateById(String itemId) throws Exception { - + workspaceLogger.trace("get last modification date ItemId "+ itemId); try { - - Workspace workspace = getWorkspace(); + + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(itemId); wsItem.getLastModificationTime().getTime(); Date lastModification =null; - + if(wsItem.getLastModificationTime()!=null){ lastModification = wsItem.getLastModificationTime().getTime(); } - + return lastModification; - + } catch (Exception e) { workspaceLogger.error("get last modification date ItemId ", e); throw new Exception(e.getMessage()); @@ -2223,17 +2221,17 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @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); @@ -2247,16 +2245,16 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(e.getMessage()); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getAccountingReaders(java.lang.String) */ @Override public List getAccountingReaders(String identifier) throws Exception { - + workspaceLogger.trace("get accounting readers "+ identifier); try { - + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(identifier); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); @@ -2270,16 +2268,16 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getAccountingHistory(java.lang.String) */ @Override public List getAccountingHistory(String identifier) throws Exception { - + workspaceLogger.trace("get accounting history "+ identifier); try { - + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(identifier); List accoutings = wsItem.getAccounting(); @@ -2300,22 +2298,22 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public String getShortUrl(String longUrl) throws Exception { - + workspaceLogger.trace("get short url for "+ longUrl); UrlShortener shortener = getUrlShortener(); try{ - + if(shortener!=null && shortener.isAvailable()) return shortener.shorten(longUrl); - + return longUrl; - + }catch (Exception e) { workspaceLogger.error("Error get short url for ", e); return longUrl; } } - + /** * Gets the public link for folder item id. * @@ -2328,47 +2326,64 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT public PublicLink getPublicLinkForFolderItemId(String itemId, boolean shortenUrl) throws Exception{ workspaceLogger.trace("get Public Link For ItemId: "+ itemId); - GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - try{ - + + if(itemId==null) + throw new Exception("Sorry, The Public Link for empty item is unavailable (itemId is null)"); + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(itemId); - + + if(wsItem==null) + throw new Exception("Sorry, The Public Link for empty item is unavailable"); + if(wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)){ - - FolderItem folderItem = (FolderItem) wsItem; + + /*FolderItem folderItem = (FolderItem) wsItem; String storageID = builder.getStorageIDForFolderItem(folderItem); - + if(storageID==null || storageID.isEmpty()) throw new Exception("Sorry, public link on "+wsItem.getName() +" is not available"); - + UriResolverReaderParameterForResolverIndex uriResolver = getUriResolver(); String uriRequest = ""; - + if(uriResolver!=null && uriResolver.isAvailable()){ - - /*String itemName = StringUtil.removeSpecialCharacters(folderItem.getName()); - itemName = StringUtil.replaceAllWhiteSpace(itemName, "_"); - uriRequest = uriResolver.resolveAsUriRequest(storageID, itemName, folderItem.getMimeType(), true);*/ - + +// String itemName = StringUtil.removeSpecialCharacters(folderItem.getName()); +// itemName = StringUtil.replaceAllWhiteSpace(itemName, "_"); +// uriRequest = uriResolver.resolveAsUriRequest(storageID, itemName, folderItem.getMimeType(), true); + uriRequest = uriResolver.resolveAsStorageIdRequest(storageID, true); - - /* + + //VALIDATE CONNECTION - if(!HttpRequestUtil.urlExists(uriRequest+"&validation=true")) - throw new Exception("Sorry, The Public Link for selected file is unavailable"); - */ +// if(!HttpRequestUtil.urlExists(uriRequest+"&validation=true")) +// throw new Exception("Sorry, The Public Link for selected file is unavailable"); + String shortURL = null; - - if(shortenUrl) + + if(shortenUrl) shortURL = getShortUrl(uriRequest); - return new PublicLink(uriRequest, shortURL); - } - else - throw new Exception("Sorry, The Uri resolver service is temporarily unavailable. Please try again later"); - + +// } +// else +// throw new Exception("Sorry, The Uri resolver service is temporarily unavailable. Please try again later");*/ + + FolderItem folderItem = (FolderItem) wsItem; + String uriRequest = folderItem.getPublicLink(false); + + if(uriRequest==null || uriRequest.isEmpty()) + throw new Exception("Sorry, public link on "+folderItem.getName() +" is not available"); + + String shortURL = null; + + if(shortenUrl) + shortURL = getShortUrl(uriRequest); + + return new PublicLink(uriRequest, shortURL); + }else{ workspaceLogger.warn("ItemId: "+ itemId +" is not a folder item, sent exception Public Link unavailable"); throw new Exception("Sorry, The Public Link for selected file is unavailable"); @@ -2378,7 +2393,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.error("Error getPublicLinkForFolderItemId for item: "+itemId, e); throw new Exception(e.getMessage()); } - + } /* (non-Javadoc) @@ -2394,20 +2409,20 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public List deleteListItemsForIds(List ids) throws Exception { - + try { - + if(ids == null) - throw new Exception("List identifiers is null"); - + throw new Exception("List identifiers is null"); + Workspace workspace = getWorkspace(); workspaceLogger.trace("removeItem item for list size: "+ids.size()); String[] items = new String[ids.size()]; items = ids.toArray(items); - + Map garbage = new HashMap(items.length); - + //SAVE DATE FOR NOTIFICATIONS for (String itemId : ids) { //NOTIFICATION @@ -2418,23 +2433,23 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT String sourceFolderSharedId = null; if(sourceItemIsShared){ sourceFolderSharedId = wsItem.getIdSharedFolder(); - } + } //REMOVE ITEM - + garbage.put(itemId, new GarbageItem(sourceItemIsShared, itemName, itemId, sourceFolderSharedId)); - + // workspace.removeItem(itemId); // //IF SOURCE SHARED FOLDER IS NOT NULL // if(sourceFolderSharedId!=null) // NotificationsUtil.checkSendNotifyRemoveItemToShare(this.getThreadLocalRequest().getSession(), sourceItemIsShared, itemName, itemId, sourceFolderSharedId); } - + //ITEM ID - ERROR Map backendError = workspace.removeItems(items); - + //GARBAGE ITEM ERROR List frontEndError = new ArrayList(backendError.size()); - + //REMOVING IDS WHICH HAVE GENERATED AN ERROR for (String idError : backendError.keySet()) { GarbageItem gbi = garbage.get(idError); @@ -2443,7 +2458,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT garbage.remove(idError); } } - + for (String idItem : garbage.keySet()) { GarbageItem item = garbage.get(idItem); workspaceLogger.trace("Check notification for "+item); @@ -2451,7 +2466,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(item.getSourceFolderSharedId()!=null) NotificationsUtil.checkSendNotifyRemoveItemToShare(this.getThreadLocalRequest().getSession(), item.isSourceItemIsShared(), item.getOldItemName(), item.getOldItemName(), item.getSourceFolderSharedId()); } - + return frontEndError; } catch (InsufficientPrivilegesException e) { @@ -2468,9 +2483,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT String error = ConstantsExplorer.SERVER_ERROR +" deleting item. "+e.getMessage(); throw new Exception(error); } - + } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#setACLs(java.lang.String, java.util.List, java.lang.String) @@ -2480,26 +2495,26 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT try { if(folderId == null) - throw new Exception("Folder id is null"); - + throw new Exception("Folder id is null"); + if(listLogins==null || listLogins.size()==0) throw new Exception("List Logins is null or empty"); - + workspaceLogger.trace("Setting ACL for folder id: "+folderId); - workspaceLogger.trace("ACL type is: "+aclType); + workspaceLogger.trace("ACL type is: "+aclType); Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(folderId); - + //IS A WORKSPACE FOLDER? if(wsItem!= null && wsItem.isFolder() && wsItem.isShared()){ WorkspaceFolder ite; - if(wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ + if(wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ //IS ROOT SHARED FOLDER ite = (WorkspaceSharedFolder) wsItem; workspaceLogger.trace("Folder " +ite.getName()+" is a "+WorkspaceSharedFolder.class.getName()); // ite = (WorkspaceSharedFolder) workspace.getItemByPath(wsItem.getPath()); - }else{ - // IS SUB FOLDER OF THE SHARING + }else{ + // IS SUB FOLDER OF THE SHARING ite = (WorkspaceFolder) wsItem; workspaceLogger.trace("Folder " +ite.getName()+" is a "+WorkspaceFolder.class.getName()); // ite = (WorkspaceSharedFolder) workspace.getItem(wsItem.getIdSharedFolder()); @@ -2508,7 +2523,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT ite.setACL(listLogins, ACLType.valueOf(aclType)); }else throw new Exception("Source item is not shared or shared folder"); - + workspaceLogger.info("Setting ACL for "+wsItem.getName()+" completed, returning"); } catch (Exception e) { workspaceLogger.error("Error in set ACLs", e); @@ -2516,7 +2531,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /** * Validate acl to user. * @@ -2528,19 +2543,19 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public ReportAssignmentACL validateACLToUser(String folderId, List listLogins, String aclType) throws Exception { - + if(folderId == null) - throw new Exception("Folder id is null"); - + throw new Exception("Folder id is null"); + if(listLogins==null || listLogins.size()==0) throw new Exception("List Logins is null or empty"); if(isASharedFolder(folderId, false)){ - + try{ Workspace workspace = getWorkspace(); WorkspaceFolder folder = (WorkspaceFolder) workspace.getItem(folderId); - + if(!folder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ //IS NOT ROOT SHARED FOLDER? WorkspaceFolder parent = folder.getParent(); if(parent!=null) @@ -2549,26 +2564,26 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.warn("Parent folder of folder: "+folder.getName() + " is null, using current folder"); } Map> mapACL = folder.getACLOwner(); - + ACLType settingACL = ACLType.valueOf(aclType); - + workspaceLogger.info("Validating assignment: "+settingACL); workspaceLogger.info("To logins: "+listLogins); - + AclTypeComparator comparator = new AclTypeComparator(); - + //TO REMOVE ADMINS List admins = mapACL.get(ACLType.ADMINISTRATOR); for (String admin : admins) { listLogins.remove(admin); workspaceLogger.info("Reject username: "+admin +" as "+ACLType.ADMINISTRATOR); } - + //TO COMPLETE REPORT List validLogins = new ArrayList(listLogins); List errors = new ArrayList(); ReportAssignmentACL reportValidation = new ReportAssignmentACL(); - + for (String username : listLogins) { workspaceLogger.trace("\nChecking username: "+username); for (ACLType aclHL : mapACL.keySet()) { @@ -2576,7 +2591,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(!aclHL.equals(ACLType.ADMINISTRATOR)){ List loginsHL = mapACL.get(aclHL); workspaceLogger.trace("to ACLType: "+aclHL +", logins found: "+loginsHL); - + if(loginsHL.contains(username)){ int cmp = comparator.compare(settingACL, aclHL); workspaceLogger.trace("Compare result between "+aclHL + " and "+settingACL +": "+cmp); @@ -2602,7 +2617,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.trace("[Login not found], Set ACL: "+settingACL+ " to "+username); } } - } + } } /* System.out.println("\n"); @@ -2614,12 +2629,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT for (String error : errors) { workspaceLogger.trace(error); }*/ - + reportValidation.setAclType(aclType); reportValidation.setErrors(errors); reportValidation.setValidLogins(validLogins); return reportValidation; - + } catch (InternalErrorException e) { throw new Exception("Sorry, an error occurred when validating ACL assignment, try again later"); } @@ -2645,7 +2660,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /** * Checks if is within portal. * @@ -2655,13 +2670,13 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT try { UserLocalServiceUtil.getService(); return true; - } - catch (Exception ex) { + } + catch (Exception ex) { workspaceLogger.trace("Development Mode ON"); return false; - } + } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getMyLogin() */ @@ -2672,8 +2687,8 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT String email = username+"@isti.cnr.it"; String firstName = "Testing"; String lastName = "User"; - - + + if (isWithinPortal() && username.compareTo(WsUtil.TEST_USER) != 0) { com.liferay.portal.model.UserModel user = null; try { @@ -2684,11 +2699,11 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } catch (PortalException | SystemException e) { e.printStackTrace(); } - + } return new UserBean(username, firstName, lastName, email); } - + /** * Update acl for vr eby group name. * @@ -2701,15 +2716,15 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT try { if(folderId == null) - throw new Exception("Folder id is null"); - + throw new Exception("Folder id is null"); + workspaceLogger.trace("Updating ACL to VRE FOLDER id: "+folderId); workspaceLogger.trace("ACL type is: "+aclType); - + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(folderId); - - if(wsItem.isShared() && (wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER))){ + + if(wsItem.isShared() && wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ WorkspaceSharedFolder ite = (WorkspaceSharedFolder) workspace.getItemByPath(wsItem.getPath()); //PATCH TODO TEMPORARY SOLUTION if(ite.isVreFolder()){ @@ -2719,7 +2734,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } }else throw new Exception("Source item is not shared or shared folder"); - + workspaceLogger.trace("Updating ACL completed, retuning"); } catch (Exception e) { workspaceLogger.error("Error in set ACLs", e); @@ -2727,8 +2742,8 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - - + + /** * Gets the user acl for folder id. * @@ -2743,16 +2758,16 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId(folderId); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); List listACL = builder.getWorkspaceACLFromACLs(Arrays.asList(wsFolder.getACLUser())); - + List listEACL = new ArrayList(listACL.size()); for (WorkspaceACL workspaceACL : listACL) { - + 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); workspaceLogger.trace("ACL "+workspaceACL+" converted in: "+eac); listEACL.add(eac); } - + return listEACL; } catch (Exception e) { workspaceLogger.error("Error in server get getACLForFolderId", e); @@ -2760,7 +2775,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /** * Gets ACLs Description For WorkspaceItem ById. * @@ -2771,19 +2786,19 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT @Override public String getACLsDescriptionForWorkspaceItemById(String workspaceItemId) throws Exception{ try { - + workspaceLogger.trace("Get ACLsDescriptionForWorkspaceItemById: "+workspaceItemId); - + Workspace workspace = getWorkspace(); WorkspaceItem wsItem = workspace.getItem(workspaceItemId); - + GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - + Map> acls = wsItem.getACLOwner(); - + if(acls==null) throw new Exception("ACLOwner is null!"); - + return builder.getFormatHtmlACLFromACLs(acls); } catch (Exception e) { @@ -2792,7 +2807,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /** * Gets the shared workspace folder for id. * @@ -2801,33 +2816,33 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT * @throws Exception the exception */ private WorkspaceFolder getSharedWorkspaceFolderForId(String folderId) throws Exception{ - + if(folderId == null) - throw new Exception("Folder id is null"); - + throw new Exception("Folder id is null"); + workspaceLogger.trace("Get SharedFolderForId: "+folderId); - + Workspace workspace = getWorkspace(); 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)){ workspaceLogger.trace("Get SharedFolderForId: folder id "+folderId+" is shared"); - + //TODO REMOVE wsItem.getIdSharedFolder() // WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) workspace.getItem(wsItem.getIdSharedFolder()); - + WorkspaceFolder wsFolder = (WorkspaceFolder) wsItem; if(wsFolder!=null){ workspaceLogger.info("Get SharedFolderForId return name: "+wsFolder.getName()); return wsFolder; - + }else{ workspaceLogger.warn("Source item is not a shared folder, throw exception"); throw new Exception("Source item is not a shared folder"); @@ -2837,7 +2852,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception("Source item is null or not shared folder for id: "+folderId); } } - + /** * Checks if is a shared folder. * @@ -2845,24 +2860,24 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT * @param asRoot true check if itemID is root, not otherwise * @return true, if is a shared folder */ - + public boolean isASharedFolder(String itemID, boolean asRoot){ try { - + if(itemID==null) throw new Exception("ItemId is null"); - + Workspace workspace = getWorkspace(); WorkspaceItem item = workspace.getItem(itemID); return isASharedFolder(item, asRoot); - + }catch(Exception e){ workspaceLogger.error("Error in server isASharedFolder", e); return false; } } - + /** * Checks if is a shared folder. * @@ -2873,11 +2888,11 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ public boolean isASharedFolder(WorkspaceItem item, boolean asRoot){ try { - + if(item!=null && item.isFolder() && item.isShared()){ //IS A SHARED SUB-FOLDER if(asRoot) return item.getType().equals(WorkspaceItemType.SHARED_FOLDER); //IS ROOT? - + return true; } return false; @@ -2886,9 +2901,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT return false; } } - - - + + + /** * Gets the trash content. * @@ -2898,23 +2913,23 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT @Override public List getTrashContent() throws Exception{ workspaceLogger.trace("Get TrashContent: "); - + Workspace workspace; try { - + workspace = getWorkspace(); WorkspaceTrashFolder trash = workspace.getTrash(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - + return builder.buildGXTListTrashContent(trash); - + }catch (Exception e) { workspaceLogger.error("Error in server TrashConten", e); String error = ConstantsExplorer.SERVER_ERROR +" get Trash content. "+e.getMessage(); throw new Exception(error); } } - + /** * Update trash content. * @@ -2924,28 +2939,28 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public TrashContent updateTrashContent(WorkspaceTrashOperation operation) throws Exception{ - + workspaceLogger.info("Updating TrashContent with operation: "+operation); - + Workspace workspace; List listErrors = null; try { - + workspace = getWorkspace(); WorkspaceTrashFolder trash = workspace.getTrash(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); TrashContent result = new TrashContent(); - + switch (operation) { - + case EMPTY_TRASH: listErrors = trash.emptyTrash(); break; - + case RESTORE_ALL: listErrors = trash.restoreAll(); break; - + case REFRESH: default: result.setTrashContent(builder.buildGXTListTrashContent(trash)); @@ -2954,52 +2969,52 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT trash = workspace.getTrash(); result.setTrashContent(builder.buildGXTListTrashContent(trash)); - + if(listErrors!=null){ List listContentError = new ArrayList(listErrors.size()); for (String trashedItemId : listErrors) { listContentError.add(builder.buildGXTTrashModelItemById(trashedItemId, trash)); } - + result.setListErrors(listContentError); } - + return result; - + }catch (Exception e) { workspaceLogger.error("Error in server TrashContent", e); String error = ConstantsExplorer.SERVER_ERROR +" update Trash content. "+e.getMessage(); throw new Exception(error); } } - - + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#executeOperationOnTrash(java.util.List, org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation) */ @Override public TrashOperationContent executeOperationOnTrash(List listTrashItemIds, WorkspaceTrashOperation operation) throws Exception{ - + workspaceLogger.info("Get TrashContent, operation: "+operation); - + if(listTrashItemIds==null || listTrashItemIds.size()==0) throw new Exception("List of Trash item ids is null or empty"); - + Workspace workspace; List listContentError = new ArrayList(); try { - + workspace = getWorkspace(); WorkspaceTrashFolder trash = workspace.getTrash(); TrashOperationContent result = new TrashOperationContent(); result.setOperation(operation); - + List listUpdatedTrashIds = new ArrayList(); - + switch (operation) { - + case DELETE_PERMANENTLY:{ - + boolean deleted = false; for (String trashItemId : listTrashItemIds) { try{ @@ -3009,7 +3024,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT listUpdatedTrashIds.add(trashItemId); deleted = true; } - + }catch (Exception e) { workspaceLogger.warn("Error on DELETE_PERMANENTLY the item : "+trashItemId, e); FileTrashedModel fakeFile = new FileTrashedModel(); @@ -3017,16 +3032,16 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT listContentError.add(fakeFile); } } - + String label = listTrashItemIds.size()>1?"items":"item"; if(!deleted) throw new Exception("Sorry, an error occurred on deleting permanently the trash "+label+", try again"); - + break; } - + case RESTORE:{ - + boolean restored = false; for (String trashItemId : listTrashItemIds) { try{ @@ -3036,7 +3051,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT listUpdatedTrashIds.add(trashItemId); restored = true; } - + }catch (Exception e) { workspaceLogger.warn("Error on RESTORE the item : "+trashItemId, e); FileTrashedModel fakeFile = new FileTrashedModel(); @@ -3045,28 +3060,28 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } } String label = listTrashItemIds.size()>1?"items":"item"; - + if(!restored) throw new Exception("Sorry, an error occurred on restoring the trash "+label+", try again"); - + break; } - + default: break; } // trash = workspace.getTrash(); // result.setTrashContent(builder.buildGXTListTrashContent(trash)); - + if(!listContentError.isEmpty()){ result.setListErrors(listContentError); } - + result.setListTrashIds(listUpdatedTrashIds); - + return result; - + }catch (Exception e) { workspaceLogger.error("Error in server executeOperationOnTrash", e); String error = ConstantsExplorer.SERVER_ERROR +" update Trash content. "+e.getMessage(); @@ -3076,7 +3091,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#addAdministratorsByFolderId(java.lang.String, java.util.List) - * + * * true if administrators have been added, false otherwise */ @Override @@ -3084,55 +3099,55 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(folderId==null || listContactLogins==null || listContactLogins.size()==0) return false; try { - + Workspace workspace = getWorkspace(); WorkspaceItem item = workspace.getItem(folderId); workspaceLogger.info("Adding administator/s to folder: "+folderId); - + if(item!=null && item.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item; - + //retrieving old administrators list GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); workspaceLogger.info("Retrieving old administator/s.."); List oldAdmins = builder.buildGxtInfoContactsFromPortalLogins(sharedFolder.getAdministrators()); workspaceLogger.info("Retrieving old administator/s are/is: "+oldAdmins.size()); - + workspaceLogger.info("Setting administators:"); - printList(listContactLogins); + printList(listContactLogins); sharedFolder.setAdmins(listContactLogins); - + workspaceLogger.info("Converting new administator/s.."); List newAdmins = builder.buildGxtInfoContactsFromPortalLogins(listContactLogins); NotificationsProducer np = getNotificationProducer(); - + workspaceLogger.info("Sending notifications downgrade/upgrade administator/s.."); DifferenceBetweenInfoContactModel diff1 = new DifferenceBetweenInfoContactModel(oldAdmins, newAdmins); List contactsDowngrade = diff1.getDifferentsContacts(); - + for (InfoContactModel infoContactModel : contactsDowngrade) { np.notifyAdministratorDowngrade(infoContactModel, sharedFolder); } - + DifferenceBetweenInfoContactModel diff2 = new DifferenceBetweenInfoContactModel(newAdmins, oldAdmins); List contactsUpgrade = diff2.getDifferentsContacts(); - + for (InfoContactModel infoContactModel : contactsUpgrade) { np.notifyAdministratorUpgrade(infoContactModel, sharedFolder); } - + return true; - + }else throw new Exception("The item is null or not instanceof "+WorkspaceItemType.SHARED_FOLDER); - + } catch (Exception e) { workspaceLogger.error("Error in server addAdministratorsByFolderId: "+e.getMessage()); workspaceLogger.error(e); String error = ConstantsExplorer.SERVER_ERROR +" adding administrators, try again later"; throw new Exception(error); } - + } /* (non-Javadoc) @@ -3141,7 +3156,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT @Override public List getAdministratorsByFolderId(String folderId) throws Exception { List admins = new ArrayList(); - + if(folderId==null) return admins; try { @@ -3153,7 +3168,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT return builder.buildGxtInfoContactsFromPortalLogins(wsSharedFolder.getAdministrators()); }else 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(); @@ -3165,27 +3180,27 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - - + + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getItemDescriptionById(java.lang.String) */ @Override public String getItemDescriptionById(String identifier) throws Exception { - + workspaceLogger.info("Getting ItemDescriptionById: "+identifier); if(identifier==null || identifier.isEmpty()){ workspaceLogger.warn("Getting ItemDescriptionById identifier is null or empty, returning null"); return null; } - + try { - + Workspace workspace = getWorkspace(); WorkspaceItem item = workspace.getItem(identifier); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); return builder.getItemDescriptionForTypeById(item); - + } catch (Exception e) { workspaceLogger.error("Error in server ItemDescriptionById: ", e); String error = ConstantsExplorer.SERVER_ERROR +" getting description for item id: "+identifier; @@ -3206,7 +3221,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT try { WorkspaceFolder sharedFolder = getSharedWorkspaceFolderForId(identifier); - + //IS ROOT?? if(isASharedFolder(sharedFolder, true)){ GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); @@ -3214,12 +3229,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT WorkspaceSharedFolder wsSharedFolder = (WorkspaceSharedFolder) sharedFolder; workspaceLogger.info("Read getPrivilege from HL: "+wsSharedFolder.getACLUser()); List wsAcls = builder.getWorkspaceACLFromACLs(Arrays.asList(wsSharedFolder.getPrivilege())); - + if(wsAcls==null || wsAcls.isEmpty()){ workspaceLogger.info("Converted ACLBySharedFolderId is null or empty, returning null"); return null; } - + workspaceLogger.info("Returning first acl with id: "+wsAcls.get(0).getId()); return wsAcls.get(0); } @@ -3248,7 +3263,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.info("Root size is: "+size +" formatting.."); String formatSize = GWTWorkspaceBuilder.formatFileSize(size); long total = getUserWorkspaceTotalItems(); - + WorkspaceUserQuote quote = new WorkspaceUserQuote(); quote.setDiskSpace(size); quote.setDiskSpaceFormatted(formatSize); @@ -3260,7 +3275,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT return null; } } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getUserWorkspaceSize() */ @@ -3279,9 +3294,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT String error = ConstantsExplorer.SERVER_ERROR +" getting disk usage"; throw new Exception(error); } - + } - + /* (non-Javadoc) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getUserWorkspaceTotalItems() */ @@ -3310,7 +3325,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.warn("Getting GcubeItemProperties identifier is null or empty, returning null"); return null; } - + try { Workspace workspace = getWorkspace(); WorkspaceItem item = workspace.getItem(itemId); @@ -3320,7 +3335,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.info("Returning "+mapProperties.size()+" properties"); else workspaceLogger.info("Returning null properties"); - + return mapProperties; } catch (Exception e) { workspaceLogger.error("Error in server GcubeItemProperties: ", e); @@ -3328,7 +3343,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } - + /** * Gets the HTML gcube item properties. @@ -3344,14 +3359,14 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.warn("Getting FormattedGcubeItemProperties identifier is null or empty, returning null"); return null; } - + try { - + Workspace workspace = getWorkspace(); WorkspaceItem item = workspace.getItem(itemId); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); return builder.getFormatHtmlGcubeItemProperties(item); - + } catch (Exception e) { workspaceLogger.error("Error in server FormattedGcubeItemProperties: ", e); String error = ConstantsExplorer.SERVER_ERROR +" getting gcube item properties for item id: "+itemId; @@ -3373,9 +3388,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT workspaceLogger.warn("Set GcubeItemProperties, identifier is null or empty, returning null"); throw new Exception("The item id is null or empty"); } - + try { - + Workspace workspace = getWorkspace(); WorkspaceItem item = workspace.getItem(itemId); if(item instanceof GCubeItem){ @@ -3389,7 +3404,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT gItem.getProperties().update(); }else throw new NoGcubeItemTypeException("The item is not a Gcube Item"); - + } catch (NoGcubeItemTypeException e){ workspaceLogger.error("Error in server FormattedGcubeItemProperties: ", e); throw new Exception(e.getMessage()); diff --git a/src/test/java/org/gcube/portlets/user/workspace/ItemRetrieve.java b/src/test/java/org/gcube/portlets/user/workspace/ItemRetrieve.java index 235c567..e46f07d 100644 --- a/src/test/java/org/gcube/portlets/user/workspace/ItemRetrieve.java +++ b/src/test/java/org/gcube/portlets/user/workspace/ItemRetrieve.java @@ -1,5 +1,5 @@ /** - * + * */ package org.gcube.portlets.user.workspace; @@ -20,40 +20,38 @@ import org.gcube.common.homelibrary.home.workspace.folder.FolderItem; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.impl.ScopeBean; -import com.itextpdf.text.log.SysoCounter; - /** - * + * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @Jan 29, 2014 * */ public class ItemRetrieve { - - + + // public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; //PRODUCTION public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV - public static String TEST_USER = "francesco.mangiacrapa"; + public static String TEST_USER = "giancarlo.panichi"; // public static String ITEMID = "63832213-098d-42d1-8774-89b6349764c0"; //Activity T3.4 working drafts/T2-EC-IMAR-HO-14-015 iMarine Sustainability WP - Business Model tools.pdf - public static String ITEMID = "d81d3a64-603f-4907-ae74-be8353211807"; + public static String ITEMID = "79b2490b-43aa-40b0-98ec-e073cf7d4887"; // d81d3a64-603f-4907-ae74-be8353211807 protected static Logger logger = Logger.getLogger(ItemRetrieve.class); - - + + public static void main(String[] args) { - + ScopeBean scope = new ScopeBean(DEFAULT_SCOPE); ScopeProvider.instance.set(scope.toString()); - + System.out.println("init HL"); try { Workspace ws = getWorkspace(); - - - retrieveFirstLevel(ws, null); - + + +// retrieveFirstLevel(ws, null); + retrieveFirstLevel(ws, ITEMID); - + System.out.println("get workspace -> OK"); WorkspaceItem item = ws.getItem(ITEMID); System.out.println("get item id: "+item.getId()+", name: "+item.getName() +", parent: "+item.getParent()); @@ -61,7 +59,7 @@ public class ItemRetrieve { }catch(Exception e){ e.printStackTrace(); } - + // } catch (WorkspaceFolderNotFoundException e) { // // TODO Auto-generated catch block // e.printStackTrace(); @@ -75,85 +73,85 @@ public class ItemRetrieve { // // TODO Auto-generated catch block // e.printStackTrace(); // } -// +// } - + public static Workspace getWorkspace() throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException, UserNotFoundException { - + logger.trace("Get Workspace scope: "+DEFAULT_SCOPE + " username: "+TEST_USER); ScopeProvider.instance.set(DEFAULT_SCOPE); logger.trace("Scope provider instancied"); - + // return HomeLibrary.getUserWorkspace(TEST_USER); return HomeLibrary.getHomeManagerFactory().getHomeManager().getHome(TEST_USER).getWorkspace(); } - - - private static void retrieveFirstLevel(Workspace ws, String foundID){ - + + + private static void retrieveFirstLevel(Workspace ws, String foundFolder){ + try { //TEST TIME Long startTime = System.currentTimeMillis(); Long endTime = System.currentTimeMillis() - startTime; String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime)); - + startTime = System.currentTimeMillis(); - System.out.println("Start get root at time: "+startTime); + System.out.println("Start foundFolder at time: "+startTime); // WorkspaceItem root = ws.getItem(ITEMID); - WorkspaceItem root = ws.getRoot(); - System.out.println("root id: "+root.getId()); + WorkspaceItem fd = ws.getItem(foundFolder); + System.out.println("foundFolder id: "+foundFolder); System.out.println("start get children"); - List children = root.getChildren(); + List children = fd.getChildren(); System.out.println("tree getChildren() returning "+children.size()+" elements in " + time); - + System.out.println("children size: "+children.size()); - + int i=0; int foldersCounter = 0; int sharedFoldersCounter = 0; int folderItemCounter = 0; int othersCounter = 0; for (WorkspaceItem workspaceItem : children) { - - if(foundID!=null && !foundID.isEmpty()){ - if(workspaceItem.getId().compareTo(foundID)==0){ + + /*if(foundFolder!=null && !foundFolder.isEmpty()){ + if(workspaceItem.getId().compareTo(foundFolder)==0){ System.out.println("ITEM FOUND id: "+workspaceItem.getId()+", name: "+workspaceItem.getName()); return; } - } - - + }*/ + + switch (workspaceItem.getType()) { - + case FOLDER: - + WorkspaceFolder folder = (WorkspaceFolder) workspaceItem; System.out.println(++i+") "+folder.getId() +" folder name: "+folder.getName() + " owner "+folder.getOwner()); foldersCounter++; - + break; case SHARED_FOLDER: - + WorkspaceSharedFolder shared = (WorkspaceSharedFolder) workspaceItem; System.out.println(++i+") "+shared.getId() +" shared folder name: "+shared.getName() + " owner "+shared.getOwner()+" isVRE "+shared.isVreFolder() +" ACLOwner: "+shared.getACLOwner()+" AclUser: "+shared.getACLUser()); - + // System.out.println(++i+") shared folder name: "+shared.getName() + " owner "+shared.getOwner().getPortalLogin()); sharedFoldersCounter++; - + break; - + case FOLDER_ITEM: - + FolderItem folderItem = (FolderItem) workspaceItem; - + System.out.println(++i+") folderItem id: "+folderItem.getId() +", name: "+folderItem.getName() + ", own: "+folderItem.getOwner()); folderItemCounter++; - + break; default: System.out.println(++i+") DEFAULT - item id: "+workspaceItem.getId() +", name: "+workspaceItem.getName() + ", own: "+workspaceItem.getOwner()); @@ -161,7 +159,7 @@ public class ItemRetrieve { break; } } - + //TEST TIME endTime = System.currentTimeMillis(); long difference = endTime - startTime;