From 47ecdfd3e65c70d45cc1f6f22a05af4b7cbc2749 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Thu, 6 Jun 2013 16:04:06 +0000 Subject: [PATCH] added search by item id functionality git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@76831 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/AppControllerExplorer.java | 5 +- .../client/rpc/GWTWorkspaceService.java | 25 ++++--- .../client/rpc/GWTWorkspaceServiceAsync.java | 2 + .../client/view/windows/DialogGetLink.java | 73 +++++++++++++++++++ .../workspace/server/GWTWorkspaceBuilder.java | 6 +- .../server/GWTWorkspaceServiceImpl.java | 39 +++++++++- 6 files changed, 135 insertions(+), 15 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetLink.java diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java b/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java index 300cf57..479e2e8 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java @@ -742,7 +742,10 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt FileModel file = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(fileDownloadEvent.getItemIdentifier()); - file.setMarkAsRead(true); + + if(file!=null){ //FILE CAN NOT LOADED IN TREE + file.setMarkAsRead(true); + } notifySubscriber(fileDownloadEvent); } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java index 4036ff9..78cb919 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java @@ -105,8 +105,7 @@ public interface GWTWorkspaceService extends RemoteService{ public GWTWorkspaceItem getTimeSeriesById(String identifier) throws Exception; - boolean shareFolder(FileModel folder, List listContacts, - boolean isNewFolder) throws Exception; + boolean shareFolder(FileModel folder, List listContacts, boolean isNewFolder) throws Exception; public List getListUserSharedByFolderSharedId(String itemId) throws Exception; @@ -120,23 +119,22 @@ public interface GWTWorkspaceService extends RemoteService{ public String itemExistsInWorkpaceFolder(String parentId, String itemName) throws Exception; - List getListUserSharedBySharedItem(String sharedItemId) - throws Exception; + public List getListUserSharedBySharedItem(String sharedItemId) throws Exception; - Date getItemCreationDateById(String itemId) throws Exception; + public Date getItemCreationDateById(String itemId) throws Exception; - Long loadSizeByItemId(String itemId) throws Exception; + public Long loadSizeByItemId(String itemId) throws Exception; - Date loadLastModificationDateById(String itemId) throws Exception; + public Date loadLastModificationDateById(String itemId) throws Exception; - FileModel getParentByItemId(String identifier) throws Exception; + public FileModel getParentByItemId(String identifier) throws Exception; /** * @param identifier * @return * @throws Exception */ - List getAccountingReaders(String identifier) + public List getAccountingReaders(String identifier) throws Exception; /** @@ -144,6 +142,13 @@ public interface GWTWorkspaceService extends RemoteService{ * @return * @throws Exception */ - List getAccountingHistory(String identifier) throws Exception; + public List getAccountingHistory(String identifier) throws Exception; + + /** + * @param itemId + * @return + * @throws Exception + */ + public FileGridModel getItemForFileGrid(String itemId) throws Exception; } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java index d7d6dcf..451b1fb 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java @@ -147,5 +147,7 @@ public interface GWTWorkspaceServiceAsync { void getAccountingHistory(String identifier, AsyncCallback> callback); + void getItemForFileGrid(String itemId, AsyncCallback callback); + } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetLink.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetLink.java new file mode 100644 index 0000000..da4d4db --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogGetLink.java @@ -0,0 +1,73 @@ +package org.gcube.portlets.user.workspace.client.view.windows; + +import com.extjs.gxt.ui.client.Style.HorizontalAlignment; +import com.extjs.gxt.ui.client.Style.VerticalAlignment; +import com.extjs.gxt.ui.client.event.ButtonEvent; +import com.extjs.gxt.ui.client.event.SelectionListener; +import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.VerticalPanel; +import com.extjs.gxt.ui.client.widget.form.TextArea; +import com.extjs.gxt.ui.client.widget.form.TextField; +import com.google.gwt.dom.client.Style.Unit; + +/** + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * + */ +public class DialogGetLink extends Dialog { + + private TextField txt; + private int widht = 500; + private int height = 200; + private VerticalPanel vp = new VerticalPanel(); + + public DialogGetLink(String headingTxt, String msgTitle, String urlValue) { + + setButtonAlign(HorizontalAlignment.CENTER); + + vp.setHorizontalAlign(HorizontalAlignment.CENTER); + vp.setVerticalAlign(VerticalAlignment.MIDDLE); + vp.getElement().getStyle().setPadding(5, Unit.PX); + setHeading(headingTxt); + setModal(true); + setBodyStyle("padding: 9px; background: none"); + setWidth(widht); + setHeight(height); + setResizable(false); + setButtons(Dialog.OK); + + txt = new TextArea(); + txt.setStyleAttribute("padding-top", "20px"); + txt.setWidth(widht-30); + txt.setFieldLabel(msgTitle); + txt.setValue(urlValue); + txt.setReadOnly(true); + + this.getButtonById(Dialog.OK).addSelectionListener(new SelectionListener() { + + @Override + public void componentSelected(ButtonEvent ce) { + hide(); + } + + }); + + setFocusWidget(txt); + txt.selectAll(); + + vp.add(txt); + + add(vp); + + this.show(); + } + + public String getTxtValue() { + + return txt.getValue(); + } + + public void selectTxt(){ + txt.select(0, txt.getValue().length()); + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java index 40203f7..881a0dc 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java @@ -963,7 +963,7 @@ public class GWTWorkspaceBuilder { //ACCOUNTING fileModel.setMarkAsRead(item.isMarkedAsRead()); - if(parentFolderModel.isShared()){ + if(parentFolderModel!=null && parentFolderModel.isShared()){ fileModel.setShared(true); fileModel.setShareable(false); } @@ -1052,7 +1052,7 @@ public class GWTWorkspaceBuilder { return listFileGridModel; } - private FileGridModel buildGXTFileGridModelItem(WorkspaceItem item, FileModel parentFileModel) throws InternalErrorException{ + protected FileGridModel buildGXTFileGridModelItem(WorkspaceItem item, FileModel parentFileModel) throws InternalErrorException{ FileGridModel fileGridModel = null; @@ -1092,7 +1092,7 @@ public class GWTWorkspaceBuilder { //ACCOUNTING fileGridModel.setMarkAsRead(item.isMarkedAsRead()); - if(parentFileModel.isShared()){ + if(parentFileModel!=null && parentFileModel.isShared()){ fileGridModel.setShared(true); fileGridModel.setShareable(false); } 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 53b4a25..f4a2616 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 @@ -281,7 +281,44 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT } catch (Exception e) { workspaceLogger.error("Error in server During items retrieving", e); // workspaceLogger.trace("Error in server During items retrieving " + e); - e.printStackTrace(); +// e.printStackTrace(); + //GWT can't serialize all exceptions + throw new Exception("Error during item loading, please contact the support."); + } + } + + + @Override + public FileGridModel getItemForFileGrid(String itemId) throws Exception { + Workspace workspace; + + try { + + workspace = getWorkspace(); + + List listFileGridModels = new ArrayList(); + + GCUBEClientLog logger = new GCUBEClientLog(GWTWorkspaceServiceImpl.class); + logger.trace("get child for Grid by id: "+itemId); + + workspaceLogger.trace("get children for Grid"); + + WorkspaceItem wsItem = workspace.getItem(itemId); + + GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); + + Long startTime = System.currentTimeMillis(); + + Long endTime = System.currentTimeMillis() - startTime; + String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime)); + logger.trace("get child for Grid by id returning element in " + time); + + return builder.buildGXTFileGridModelItem(wsItem, null); + + } catch (Exception e) { + workspaceLogger.error("Error in server during item retrieving", e); +// workspaceLogger.trace("Error in server During items retrieving " + e); +// e.printStackTrace(); //GWT can't serialize all exceptions throw new Exception("Error during item loading, please contact the support."); }