From ea90e93dc1762e9e41300f3fbbfbd735ef8f65ea Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Tue, 17 Nov 2015 11:52:49 +0000 Subject: [PATCH] 1373: Workspace: breadcrumb slowness on file upload make upload of files on parent folders Task-Url: https://support.d4science.org/issues/1373 Updated breadcrumb using HL method: Workspace.getParentsById(itemIdentifier); git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@120289 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../server/GWTWorkspaceServiceImpl.java | 286 ++++++------------ 1 file changed, 91 insertions(+), 195 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 df49bc0..7fb53ec 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 @@ -55,6 +55,7 @@ import org.gcube.portlets.user.workspace.client.model.ScopeModel; import org.gcube.portlets.user.workspace.client.model.SmartFolderModel; import org.gcube.portlets.user.workspace.client.model.SubTree; import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService; +import org.gcube.portlets.user.workspace.client.util.FileModelUtils; import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem; import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.WorkspaceHandledException; import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer; @@ -1666,186 +1667,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT return true; - } catch (Exception e) { workspaceLogger.error("Error in server save attachments by messageIdentifier ", e); //GWT can't serialize all exceptions throw new Exception(e.getMessage()); } } - - /* (non-Javadoc) - * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#saveAttach(java.lang.String) - */ - @Override - @Deprecated - /** - * use WsMailWidget - */ - public boolean saveAttach(String attachId) throws Exception { - // TODO NOT USED - return false; - } - - /* (non-Javadoc) - * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#markMessage(java.lang.String, java.lang.String, boolean, java.lang.String) - */ - @Override - @Deprecated - public boolean markMessage(String messageIdentifier, String messageType, boolean boolMark, String markType) throws Exception { - - try { - - Workspace workspace = getWorkspace(); - - workspaceLogger.trace(" markMessageAsRead by messageIdentifier " + messageIdentifier + " boolMark " + boolMark + " messageType " +messageType); - - if(messageType.equals(GXTCategoryItemInterface.MS_RECEIVED)){ -// workspaceLogger.trace("message identifier: "+messageIdentifier); -// workspaceLogger.trace("Message messageType: "+messageType); - - if(markType.equals("READ")){ - workspace.getWorkspaceMessageManager().getReceivedMessage(messageIdentifier).setStatus(boolMark); - }else if(markType.equals("OPEN")){ - workspace.getWorkspaceMessageManager().getReceivedMessage(messageIdentifier).open(); - }else if(markType.equals("BOTH")){ - workspace.getWorkspaceMessageManager().getReceivedMessage(messageIdentifier).setStatus(boolMark); - workspace.getWorkspaceMessageManager().getReceivedMessage(messageIdentifier).open(); - } - }else{ -// workspaceLogger.trace("Message sent identifier: "+messageIdentifier); -// workspaceLogger.trace("essage sent messageType: "+messageType); - - if(markType.equals("READ")){ - workspace.getWorkspaceMessageManager().getSentMessage(messageIdentifier).setStatus(boolMark); - }else if(markType.equals("OPEN")){ - workspace.getWorkspaceMessageManager().getSentMessage(messageIdentifier).open(); - }else if(markType.equals("BOTH")){ - workspace.getWorkspaceMessageManager().getSentMessage(messageIdentifier).setStatus(boolMark); - workspace.getWorkspaceMessageManager().getSentMessage(messageIdentifier).open(); - } - } - - - return true; - - - } catch (Exception e) { - workspaceLogger.error("Error in server markMessageAsRead by messageIdentifier ", e); - //GWT can't serialize all exceptions - throw new Exception(e.getMessage()); - } - } - - /* (non-Javadoc) - * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#deleteMessage(java.lang.String, java.lang.String) - */ - @Override - @Deprecated - /** - * use WsMailWidget - */ - public boolean deleteMessage(String messageIdentifier, String messageType) throws Exception { - - try { - - Workspace workspace = getWorkspace(); - workspaceLogger.trace("deleteMessage by messageIdentifier " + messageIdentifier); - - if(messageType.equals(GXTCategoryItemInterface.MS_RECEIVED)) - workspace.getWorkspaceMessageManager().deleteReceivedMessage(messageIdentifier); - else - workspace.getWorkspaceMessageManager().deleteSentMessage(messageIdentifier); - - return true; - } catch (Exception e) { - workspaceLogger.error("Error in server deleteMessage by messageIdentifier ", e); - //GWT can't serialize all exceptions - throw new Exception(e.getMessage()); - } - } - - /* (non-Javadoc) - * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getNewMessagesReceived() - */ - @Override - @Deprecated - /** - * use WsMailWidget - */ - public List getNewMessagesReceived() throws Exception { - - try { - - Workspace workspace = getWorkspace(); - int count = workspace.getWorkspaceMessageManager().getMessagesNotOpened(); - - List listMessageModels = new ArrayList(); - - for(int i=0; i searchInSentMessagesByText(String text) throws Exception { - try { - - Workspace workspace = getWorkspace(); - workspaceLogger.trace("searchInSentMessagesByText "+text); - GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - List listMessages = workspace.getWorkspaceMessageManager().searchOutMessages(text); - - return builder.buildGXTListMessageModelForGrid(listMessages, GXTCategoryItemInterface.MS_SENT); - - } catch (Exception e) { - workspaceLogger.error("Error in server searchInSentMessagesByText ", e); -// workspaceLogger.trace("Error in server searchInSentMessagesByText " + e.getMessage()); - throw new Exception(e.getMessage()); - } - } - - - /* (non-Javadoc) - * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#searchInReceivedMessagesByText(java.lang.String) - */ - @Override - @Deprecated - /** - * use WsMailWidget - */ - public List searchInReceivedMessagesByText(String text) throws Exception { - try { - - Workspace workspace = getWorkspace(); - workspaceLogger.trace("searchInSentMessagesByText: "+text); - GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); - List listMessages = workspace.getWorkspaceMessageManager().searchInMessages(text); - - return builder.buildGXTListMessageModelForGrid(listMessages, GXTCategoryItemInterface.MS_RECEIVED); - - } catch (Exception e) { - workspaceLogger.error("Error in server searchInSentMessagesByText ", e); -// workspaceLogger.trace("Error in server searchInSentMessagesByText " + e.getMessage()); - throw new Exception(e.getMessage()); - } - } - /* (non-Javadoc) @@ -2192,46 +2019,57 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT */ @Override public List getListParentsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception { - List listParents = new ArrayList(); + workspaceLogger.debug("get List Parents By Item Identifier "+ itemIdentifier +", include Item As (Last) Parent: "+includeItemAsParent); + + if(itemIdentifier==null) + return new ArrayList(); + try { + Workspace workspace = getWorkspace(); - WorkspaceItem wsItem = workspace.getItem(itemIdentifier); - workspaceLogger.debug("workspace retrieve item name: "+wsItem.getName()); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); + List parents = workspace.getParentsById(itemIdentifier); + WorkspaceItem lastItem = parents.get(parents.size()-1); String nameSpecialFolder = getNameForSpecialFolder(); -// if(includeItemAsParent==true && wsItem.getType().equals(WorkspaceItemType.FOLDER)){ - if(includeItemAsParent==true && wsItem.isFolder()){ //FIX BUG #298 - listParents.add(builder.buildGXTFolderModelItemHandleSpecialFolder((WorkspaceFolder) wsItem, null, nameSpecialFolder)); + FileModel[] arrayParents; + + //CONVERTING LAST ELEMENT IF NECESSARY + workspaceLogger.trace("converting last element.."); + if(includeItemAsParent==true && lastItem.isFolder()){ //FIX BUG #298 + arrayParents = new FileModel[parents.size()]; + workspaceLogger.debug("including last item into path: "+lastItem.getName()); + arrayParents[parents.size()-1] = builder.buildGXTFolderModelItemHandleSpecialFolder((WorkspaceFolder) lastItem, null, nameSpecialFolder); + }else + arrayParents = new FileModel[parents.size()-1]; + + //CONVERTING PATH + workspaceLogger.trace("converting path from second-last.."); + for (int i = parents.size()-2; i >= 0; i--) { + WorkspaceFolder wsFolder = (WorkspaceFolder) parents.get(i); + arrayParents[i] = builder.buildGXTFolderModelItemHandleSpecialFolder(wsFolder, null, nameSpecialFolder); } - while(wsItem!=null && wsItem.getParent()!=null){ - - WorkspaceFolder wsFolder = wsItem.getParent(); - listParents.add(builder.buildGXTFolderModelItemHandleSpecialFolder(wsFolder, null, nameSpecialFolder)); - wsItem = wsFolder; - } - - Collections.reverse(listParents); +// Collections.reverse(listParents); //SET PARENTS - for(int i=0; i(Arrays.asList(arrayParents)); + } catch (Exception e) { workspaceLogger.error("Error in get List Parents By Item Identifier ", e); e.printStackTrace(); throw new Exception(e.getMessage()); } - - return listParents; } /* (non-Javadoc) @@ -3610,4 +3448,62 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getNewMessagesReceived() + */ + @Override + public List getNewMessagesReceived() throws Exception { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#searchInSentMessagesByText(java.lang.String) + */ + @Override + public List searchInSentMessagesByText(String text) + throws Exception { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#searchInReceivedMessagesByText(java.lang.String) + */ + @Override + public List searchInReceivedMessagesByText(String text) + throws Exception { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#saveAttach(java.lang.String) + */ + @Override + public boolean saveAttach(String attachId) throws Exception { + // TODO Auto-generated method stub + return false; + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#markMessage(java.lang.String, java.lang.String, boolean, java.lang.String) + */ + @Override + public boolean markMessage(String messageIdentifier, String messageType, + boolean boolMark, String markType) throws Exception { + // TODO Auto-generated method stub + return false; + } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#deleteMessage(java.lang.String, java.lang.String) + */ + @Override + public boolean deleteMessage(String messageIdentifier, String messageType) + throws Exception { + // TODO Auto-generated method stub + return false; + } }