256: Workspace explorer

Task-Url: https://support.d4science.org/issues/256

Enhancements on get children speed

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@117045 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2015-07-06 16:29:47 +00:00
parent 898be623c7
commit eb95045458
3 changed files with 104 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

View File

@ -78,29 +78,23 @@ public class ItemBuilder {
public static Item getItem(Item parent, WorkspaceItem workspaceItem, List<ItemType> showableTypes, FilterCriteria filterCriteria, boolean loadChildren) throws InternalErrorException
{
_log.info("Building item for: "+workspaceItem.getName());
ItemType type = getItemType(workspaceItem);
if (!showableTypes.contains(type)) return null;
if (!filterItem(type, workspaceItem, filterCriteria)) return null;
// Added in date 26/06/2012 by Francesco Mangiacrapa
// Item item = new Item(parent, workspaceItem.getId(), workspaceItem.getName(), type, workspaceItem.getPath());
String itemName = workspaceItem.getName();
if ( workspaceItem.getName().equals(WorkspaceExplorerConstants.SPECIAL_FOLDERS_LABEL)) {
if (workspaceItem.getName().equals(WorkspaceExplorerConstants.SPECIAL_FOLDERS_LABEL)) {
itemName = "My VRE Folders";
}
Item item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItem.getPath(), UserUtil.getUserFullName(workspaceItem.getOwner().getPortalLogin()), workspaceItem.isFolder(), workspaceItem.isRoot());
item.setSharedFolder(workspaceItem.getType()==WorkspaceItemType.SHARED_FOLDER);
/*
// Add temporary item
if(Util.isFolder(item.getType())){
empty = new Item(parent, UUID.randomUUID().toString(), "empty", ItemType.UNKNOWN_TYPE, "");
item.addChild(empty);
}*/
boolean isFolder = false;
if(type.equals(ItemType.FOLDER) || type.equals(ItemType.ROOT))
isFolder = true;
Item item = new Item(parent, workspaceItem.getId(), itemName, type, "", UserUtil.getUserFullName(workspaceItem.getOwner().getPortalLogin()), isFolder, type.equals(ItemType.ROOT));
item.setSharedFolder(workspaceItem.getType().equals(WorkspaceItemType.SHARED_FOLDER));
if(loadChildren){
for (WorkspaceItem child: workspaceItem.getChildren()){
@ -112,10 +106,6 @@ public class ItemBuilder {
}
}
// // Remove the temporary item when we finish loading
// if(Util.isFolder(item.getType())&& item.getChildren().size()>1)
// item.removeChild(empty);
return item;
}

View File

@ -0,0 +1,97 @@
/**
*
*/
package org.gcube.portlets.widgets.wsexplorer.client;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.gcube.common.homelibrary.home.HomeLibrary;
import org.gcube.common.homelibrary.home.workspace.Workspace;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.portlets.widgets.wsexplorer.server.ItemBuilder;
import org.gcube.portlets.widgets.wsexplorer.server.ItemComparator;
import org.gcube.portlets.widgets.wsexplorer.server.WorkspaceExplorerServiceImpl;
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import org.gcube.portlets.widgets.wsexplorer.shared.WorkspaceNavigatorServiceException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jul 6, 2015
*/
public class TestGetChildren {
public static final Logger _log = LoggerFactory.getLogger(TestGetChildren.class);
public static void main(String[] args) throws WorkspaceNavigatorServiceException {
List<ItemType> showableTypes = new ArrayList<ItemType>();
showableTypes.addAll(Arrays.asList(ItemType.values()));
boolean purgeEmpyFolders = false;
List<String> allowedMimeTypes = new ArrayList<String>();
Map<String, String> requiredProperties = new HashMap<String, String>();
FilterCriteria filterCriteria = new FilterCriteria(allowedMimeTypes,requiredProperties);
getRoot(showableTypes, purgeEmpyFolders, filterCriteria);
}
public static Item getRoot(List<ItemType> showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException {
_log.trace("getRoot showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+ filterCriteria);
try {
ScopeBean scope = new ScopeBean("/gcube/devsec");
ScopeProvider.instance.set(scope.toString());
Workspace workspace = HomeLibrary
.getHomeManagerFactory()
.getHomeManager()
.getHome("francesco.mangiacrapa")
.getWorkspace();
//
_log.trace("Start getRoot...");
WorkspaceItem root = workspace.getRoot();
System.out.println(root.getChildren());
_log.trace("GetRoot - Replyiing root");
long startTime = System.currentTimeMillis();
_log.trace("start time - " + startTime);
Item rootItem = ItemBuilder.getItem(null, root, showableTypes, filterCriteria, true);
rootItem.setName(WorkspaceExplorerConstants.HOME_LABEL);
if (purgeEmpyFolders) rootItem = ItemBuilder.purgeEmptyFolders(rootItem);
_log.trace("Returning:");
Long endTime = System.currentTimeMillis() - startTime;
String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime));
_log.trace("end time - " + time);
Collections.sort(rootItem.getChildren(), new ItemComparator());
_log.info("Returning children size: "+rootItem.getChildren().size());
return rootItem;
} catch (Exception e) {
_log.error("Error during root retrieving", e);
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get root");
}
}
}