ref 9114: DataMiner - Add pagination to Workspace Explorer

https://support.d4science.org/issues/9114

Added pagination to Workspace Explorer 

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager@151097 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2017-07-14 16:42:08 +00:00
parent 0f41e3ba14
commit 79e0df3def
8 changed files with 119 additions and 126 deletions

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/data-miner-manager-1.5.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<classpathentry kind="src" output="target/data-miner-manager-1.6.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/data-miner-manager-1.5.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<classpathentry excluding="**" kind="src" output="target/data-miner-manager-1.6.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
@ -34,5 +34,5 @@
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="target/data-miner-manager-1.5.0-SNAPSHOT/WEB-INF/classes"/>
<classpathentry kind="output" path="target/data-miner-manager-1.6.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

View File

@ -1,4 +1,8 @@
<ReleaseNotes>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-6-0"
date="2016-08-01">
<Change>Updated to support pagination in Workspace Explorer [ticket #9114]</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-5-0"
date="2016-06-12">
<Change>Support Java 8 compatibility [ticket #8471]</Change>

View File

@ -12,7 +12,7 @@
<groupId>org.gcube.portlets.user</groupId>
<artifactId>data-miner-manager</artifactId>
<version>1.5.0-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>data-miner-manager</name>

View File

@ -25,7 +25,7 @@ import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload;
import org.gcube.portlets.widgets.wsexplorer.client.explore.WorkspaceResourcesExplorerPanel;
import org.gcube.portlets.widgets.wsexplorer.client.explore.WorkspaceResourcesExplorerPanelPaginated;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
@ -59,7 +59,8 @@ public class ComputationsExecutedPanel extends FramedPanel {
private Item selectedItem;
private MultipleDNDUpload dnd;
private WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel;
//private WorkspaceResourcesExplorerPanel ;
private WorkspaceResourcesExplorerPanelPaginated wsResourcesExplorerPanel;
private TextButton btnShow;
private TextButton btnDownload;
private TextButton btnDelete;
@ -233,10 +234,15 @@ public class ComputationsExecutedPanel extends FramedPanel {
Map<String, String> map = new HashMap<String, String>();
filterCriteria.setRequiredProperties(map);
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
/*wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
event.getDataMinerWorkArea().getComputations().getFolder()
.getId(), false, showProperties, filterCriteria,
true, DISPLAY_FIELD.CREATION_DATE);
true, DISPLAY_FIELD.CREATION_DATE);*/
wsResourcesExplorerPanel=new WorkspaceResourcesExplorerPanelPaginated(event.getDataMinerWorkArea().getComputations().getFolder()
.getId(), false, showProperties, filterCriteria,
true, DISPLAY_FIELD.CREATION_DATE);
WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() {
@Override
public void onSelectedItem(Item item) {
@ -430,15 +436,20 @@ public class ComputationsExecutedPanel extends FramedPanel {
});
forceLayout();
} catch (Exception e) {
Log.error("Error opening wsResourceExplorerPanel");
} catch (Throwable e) {
Log.error("Error opening wsResourceExplorerPanel: "+e.getLocalizedMessage(),e);
e.printStackTrace();
}
}
private void refreshWSResourceExplorerPanel() {
if (wsResourcesExplorerPanel != null) {
wsResourcesExplorerPanel.refreshRootFolderView();
try {
wsResourcesExplorerPanel.hardRefresh();
} catch (Exception e) {
Log.error("Error retrieving data: "+e.getLocalizedMessage());
}
}
}

View File

@ -22,7 +22,7 @@ import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload;
import org.gcube.portlets.widgets.wsexplorer.client.explore.WorkspaceResourcesExplorerPanel;
import org.gcube.portlets.widgets.wsexplorer.client.explore.WorkspaceResourcesExplorerPanelPaginated;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
@ -56,7 +56,7 @@ public class InputDataSetsPanel extends FramedPanel {
private Item selectedItem;
private MultipleDNDUpload dnd;
private WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel;
private WorkspaceResourcesExplorerPanelPaginated wsResourcesExplorerPanel;
private TextButton btnDownload;
private TextButton btnDelete;
private TextButton btnRefresh;
@ -87,15 +87,14 @@ public class InputDataSetsPanel extends FramedPanel {
private void bindToEvents() {
EventBusProvider.INSTANCE.addHandler(UIStateEvent.TYPE,
new UIStateEvent.UIStateEventHandler() {
EventBusProvider.INSTANCE.addHandler(UIStateEvent.TYPE, new UIStateEvent.UIStateEventHandler() {
@Override
public void onChange(UIStateEvent event) {
manageStateEvents(event);
@Override
public void onChange(UIStateEvent event) {
manageStateEvents(event);
}
});
}
});
EventBusProvider.INSTANCE.addHandler(DataMinerWorkAreaEvent.TYPE,
new DataMinerWorkAreaEvent.DataMinerWorkAreaEventHandler() {
@ -108,19 +107,16 @@ public class InputDataSetsPanel extends FramedPanel {
});
EventBusProvider.INSTANCE
.addHandler(
RefreshDataMinerWorkAreaEvent.TYPE,
new RefreshDataMinerWorkAreaEvent.RefreshDataMinerWorkAreaEventHandler() {
EventBusProvider.INSTANCE.addHandler(RefreshDataMinerWorkAreaEvent.TYPE,
new RefreshDataMinerWorkAreaEvent.RefreshDataMinerWorkAreaEventHandler() {
@Override
public void onRefresh(
RefreshDataMinerWorkAreaEvent event) {
manageRefreshDataMinerWorkAreaEvents(event);
@Override
public void onRefresh(RefreshDataMinerWorkAreaEvent event) {
manageRefreshDataMinerWorkAreaEvents(event);
}
}
});
});
}
@ -143,8 +139,7 @@ public class InputDataSetsPanel extends FramedPanel {
}
private void manageDataMinerWorkAreaEvents(DataMinerWorkAreaEvent event) {
Log.debug("InputDataSetsPanel recieved DataMinerWorkAreaEvent: "
+ event);
Log.debug("InputDataSetsPanel recieved DataMinerWorkAreaEvent: " + event);
if (event == null) {
Log.error("DataMinerWorkAreaEvent");
return;
@ -173,10 +168,8 @@ public class InputDataSetsPanel extends FramedPanel {
}
private void manageRefreshDataMinerWorkAreaEvents(
RefreshDataMinerWorkAreaEvent event) {
Log.debug("InputDataSetsPanel recieved RefreshDataMinerWorkAreaEvent: "
+ event);
private void manageRefreshDataMinerWorkAreaEvents(RefreshDataMinerWorkAreaEvent event) {
Log.debug("InputDataSetsPanel recieved RefreshDataMinerWorkAreaEvent: " + event);
if (event == null) {
Log.error("RefreshDataMinerWorkAreaEvent");
return;
@ -199,15 +192,11 @@ public class InputDataSetsPanel extends FramedPanel {
private void create(DataMinerWorkAreaEvent event) {
try {
if (event == null
|| event.getDataMinerWorkArea() == null
if (event == null || event.getDataMinerWorkArea() == null
|| event.getDataMinerWorkArea().getInputDataSets() == null
|| event.getDataMinerWorkArea().getInputDataSets()
.getFolder() == null
|| event.getDataMinerWorkArea().getInputDataSets()
.getFolder().getId() == null
|| event.getDataMinerWorkArea().getInputDataSets()
.getFolder().getId().isEmpty()) {
|| event.getDataMinerWorkArea().getInputDataSets().getFolder() == null
|| event.getDataMinerWorkArea().getInputDataSets().getFolder().getId() == null
|| event.getDataMinerWorkArea().getInputDataSets().getFolder().getId().isEmpty()) {
if (v != null) {
remove(v);
forceLayout();
@ -217,18 +206,16 @@ public class InputDataSetsPanel extends FramedPanel {
}
List<String> showProperties = new ArrayList<String>();
for (DataSpacePropertiesType dataSpaceProperties : DataSpacePropertiesType
.values()) {
for (DataSpacePropertiesType dataSpaceProperties : DataSpacePropertiesType.values()) {
showProperties.add(dataSpaceProperties.getLabel());
}
FilterCriteria filterCriteria = new FilterCriteria();
Map<String, String> map = new HashMap<String, String>();
filterCriteria.setRequiredProperties(map);
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
event.getDataMinerWorkArea().getInputDataSets().getFolder()
.getId(), false, showProperties, filterCriteria,
true, DISPLAY_FIELD.CREATION_DATE);
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanelPaginated(
event.getDataMinerWorkArea().getInputDataSets().getFolder().getId(), false, showProperties,
filterCriteria, true, DISPLAY_FIELD.CREATION_DATE);
WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() {
@Override
public void onSelectedItem(Item item) {
@ -254,23 +241,20 @@ public class InputDataSetsPanel extends FramedPanel {
}
};
wsResourcesExplorerPanel
.addWorkspaceExplorerSelectNotificationListener(wsResourceExplorerListener);
wsResourcesExplorerPanel.addWorkspaceExplorerSelectNotificationListener(wsResourceExplorerListener);
wsResourcesExplorerPanel.ensureDebugId("wsResourceExplorerPanel");
wsResourcesExplorerPanel.setHeightToInternalScroll(300);
// DND
dnd = new MultipleDNDUpload();
dnd.setParameters(event.getDataMinerWorkArea().getInputDataSets()
.getFolder().getId(), UPLOAD_TYPE.File);
dnd.setParameters(event.getDataMinerWorkArea().getInputDataSets().getFolder().getId(), UPLOAD_TYPE.File);
dnd.addUniqueContainer(wsResourcesExplorerPanel);
WorskpaceUploadNotificationListener workspaceUploaderListener = new WorskpaceUploadNotificationListener() {
@Override
public void onUploadCompleted(String parentId, String itemId) {
Log.debug("Upload completed: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
Log.debug("Upload completed: [parentID: " + parentId + ", itemId: " + itemId + "]");
wsResourcesExplorerPanel.refreshRootFolderView();
forceLayout();
@ -278,22 +262,18 @@ public class InputDataSetsPanel extends FramedPanel {
@Override
public void onUploadAborted(String parentId, String itemId) {
Log.debug("Upload Aborted: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
Log.debug("Upload Aborted: [parentID: " + parentId + ", itemId: " + itemId + "]");
}
@Override
public void onError(String parentId, String itemId,
Throwable throwable) {
Log.debug("Upload Error: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
public void onError(String parentId, String itemId, Throwable throwable) {
Log.debug("Upload Error: [parentID: " + parentId + ", itemId: " + itemId + "]");
throwable.printStackTrace();
}
@Override
public void onOverwriteCompleted(String parentId, String itemId) {
Log.debug("Upload Override Completed: [parentID: "
+ parentId + ", itemId: " + itemId + "]");
Log.debug("Upload Override Completed: [parentID: " + parentId + ", itemId: " + itemId + "]");
wsResourcesExplorerPanel.refreshRootFolderView();
forceLayout();
}
@ -360,26 +340,30 @@ public class InputDataSetsPanel extends FramedPanel {
@Override
public void onResize(ResizeEvent event) {
int scrollBarHeight = event.getHeight()
- toolBar.getElement().getHeight(false);
int scrollBarHeight = event.getHeight() - toolBar.getElement().getHeight(false);
Log.debug("ScrollBarHeight: " + scrollBarHeight);
wsResourcesExplorerPanel
.setHeightToInternalScroll(scrollBarHeight);
wsResourcesExplorerPanel.setHeightToInternalScroll(scrollBarHeight);
forceLayout();
}
});
forceLayout();
} catch (Exception e) {
Log.error("Error opening wsResourceExplorerPanel");
} catch (Throwable e) {
Log.error("Error opening wsResourceExplorerPanel: "+e.getLocalizedMessage(),e);
e.printStackTrace();
}
}
private void refreshWSResourceExplorerPanel() {
if (wsResourcesExplorerPanel != null) {
wsResourcesExplorerPanel.refreshRootFolderView();
// wsResourcesExplorerPanel.refreshRootFolderView();
try {
wsResourcesExplorerPanel.hardRefresh();
} catch (Exception e) {
Log.error("Error retrieving data: " + e.getLocalizedMessage());
}
}
}
@ -400,12 +384,10 @@ public class InputDataSetsPanel extends FramedPanel {
}
private void deleteItem(SelectEvent event) {
ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(), selectedItem
.getType().name());
DeleteItemRequestEvent deleteItemEvent = new DeleteItemRequestEvent(
DataMinerWorkAreaElementType.InputDataSets, itemDescription);
ItemDescription itemDescription = new ItemDescription(selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(), selectedItem.getType().name());
DeleteItemRequestEvent deleteItemEvent = new DeleteItemRequestEvent(DataMinerWorkAreaElementType.InputDataSets,
itemDescription);
EventBusProvider.INSTANCE.fireEvent(deleteItemEvent);
Log.debug("Fired: " + deleteItemEvent);
}
@ -415,52 +397,40 @@ public class InputDataSetsPanel extends FramedPanel {
if (selectedItem.isFolder()) {
StringBuilder actionUrl = new StringBuilder();
actionUrl.append(GWT.getModuleBaseURL());
actionUrl
.append(Constants.DOWNLOAD_FOLDER_SERVLET
+ "?"
+ Constants.DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER
+ "="
+ selectedItem.getId()
+ "&"
+ Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER
+ "=" + selectedItem.getName() + "&"
+ Constants.CURR_GROUP_ID + "="
+ GCubeClientContext.getCurrentContextId());
actionUrl.append(Constants.DOWNLOAD_FOLDER_SERVLET + "?"
+ Constants.DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER + "=" + selectedItem.getId() + "&"
+ Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER + "=" + selectedItem.getName() + "&"
+ Constants.CURR_GROUP_ID + "=" + GCubeClientContext.getCurrentContextId());
Log.debug("Retrieved link: " + actionUrl);
Window.open(actionUrl.toString(), selectedItem.getName(), "");
} else {
final ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(),
final ItemDescription itemDescription = new ItemDescription(selectedItem.getId(),
selectedItem.getName(), selectedItem.getOwner(), selectedItem.getPath(),
selectedItem.getType().name());
DataMinerPortletServiceAsync.INSTANCE.getPublicLink(
itemDescription, new AsyncCallback<String>() {
DataMinerPortletServiceAsync.INSTANCE.getPublicLink(itemDescription, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
if (caught instanceof SessionExpiredServiceException) {
EventBusProvider.INSTANCE
.fireEvent(new SessionExpiredEvent());
} else {
Log.error("Error open file: "
+ caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
caught.printStackTrace();
@Override
public void onFailure(Throwable caught) {
if (caught instanceof SessionExpiredServiceException) {
EventBusProvider.INSTANCE.fireEvent(new SessionExpiredEvent());
} else {
Log.error("Error open file: " + caught.getLocalizedMessage());
UtilsGXT3.alert("Error", caught.getLocalizedMessage());
}
caught.printStackTrace();
}
}
@Override
public void onSuccess(String link) {
Log.debug("Retrieved link: " + link);
Window.open(link, itemDescription.getName(), "");
}
@Override
public void onSuccess(String link) {
Log.debug("Retrieved link: " + link);
Window.open(link, itemDescription.getName(), "");
}
});
});
}
} else {
UtilsGXT3.info("Attention", "Select a file!");

View File

@ -22,7 +22,7 @@ import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload;
import org.gcube.portlets.widgets.wsexplorer.client.explore.WorkspaceResourcesExplorerPanel;
import org.gcube.portlets.widgets.wsexplorer.client.explore.WorkspaceResourcesExplorerPanelPaginated;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
@ -56,7 +56,7 @@ public class OutputDataSetsPanel extends FramedPanel {
private Item selectedItem;
private MultipleDNDUpload dnd;
private WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel;
private WorkspaceResourcesExplorerPanelPaginated wsResourcesExplorerPanel;
private TextButton btnDownload;
private TextButton btnDelete;
private TextButton btnRefresh;
@ -223,7 +223,7 @@ public class OutputDataSetsPanel extends FramedPanel {
Map<String, String> map = new HashMap<String, String>();
filterCriteria.setRequiredProperties(map);
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanelPaginated(
event.getDataMinerWorkArea().getOutputDataSets()
.getFolder().getId(), false, showProperties,
filterCriteria, true, DISPLAY_FIELD.CREATION_DATE);
@ -369,15 +369,21 @@ public class OutputDataSetsPanel extends FramedPanel {
});
forceLayout();
} catch (Exception e) {
Log.error("Error opening wsResourceExplorerPanel");
} catch (Throwable e) {
Log.error("Error opening wsResourceExplorerPanel: "+e.getLocalizedMessage(),e);
e.printStackTrace();
}
}
private void refreshWSResourceExplorerPanel() {
if (wsResourcesExplorerPanel != null) {
wsResourcesExplorerPanel.refreshRootFolderView();
// wsResourcesExplorerPanel.refreshRootFolderView();
try {
wsResourcesExplorerPanel.hardRefresh();
} catch (Exception e) {
Log.error("Error retrieving data: " + e.getLocalizedMessage());
}
}
}

View File

@ -28,19 +28,20 @@
<inherits
name="org.gcube.portlets.widgets.workspaceuploader.WorkspaceUploader" />
<entry-point
class='org.gcube.portlets.user.dataminermanager.client.DataMinerManager' />
<!-- <set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
<!--
<set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
name="log_DivLogger" value="ENABLED" /> <set-property name="log_GWTLogger"
value="ENABLED" /> <set-property name="log_SystemLogger" value="ENABLED"
/> -->
/> -->
<set-property name="log_ConsoleLogger" value="DISABLED" />
<set-property name="log_DivLogger" value="DISABLED" />
<set-property name="log_GWTLogger" value="DISABLED" />
<set-property name="log_SystemLogger" value="DISABLED" />
<set-property name="log_SystemLogger" value="DISABLED" />

View File

@ -31,11 +31,12 @@
<entry-point
class='org.gcube.portlets.user.dataminermanager.client.DataMinerManager' />
<!-- <set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
<!--
<set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
name="log_DivLogger" value="ENABLED" /> <set-property name="log_GWTLogger"
value="ENABLED" /> <set-property name="log_SystemLogger" value="ENABLED"
/> -->
/> -->
<set-property name="log_ConsoleLogger" value="DISABLED" />
<set-property name="log_DivLogger" value="DISABLED" />
<set-property name="log_GWTLogger" value="DISABLED" />