");
+ sb.appendHtmlConstant("
");
super.render(context, object, sb);
sb.appendHtmlConstant("
");
};
@@ -193,7 +193,7 @@ public class ItemsTable
extends AbstractItemsCellTable implem
Comparator c = new Comparator() {
@Override
public int compare(T o1, T o2) {
- return ((Item) o1).getName().compareTo(((Item) o2).getName());
+ return ((ItemDTO) o1).getName().compareTo(((ItemDTO) o2).getName());
}
};
@@ -209,7 +209,7 @@ public class ItemsTable extends AbstractItemsCellTable implem
public String getValue(T object) {
if(object==null)
return "";
- return ((Item) object).getOwner() != null ? ((Item) object).getOwner() : "";
+ return ((ItemDTO) object).getOwner() != null ? ((ItemDTO) object).getOwner() : "";
}
};
@@ -219,7 +219,7 @@ public class ItemsTable extends AbstractItemsCellTable implem
Comparator c = new Comparator() {
@Override
public int compare(T o1, T o2) {
- return ((Item) o1).getOwner().compareTo(((Item) o2).getOwner());
+ return ((ItemDTO) o1).getOwner().compareTo(((ItemDTO) o2).getOwner());
}
};
sortedCellTable.setComparator(owner, c);
@@ -236,7 +236,7 @@ public class ItemsTable extends AbstractItemsCellTable implem
public Date getValue(T object) {
if(object==null)
return null;
- return ((Item) object).getCreationDate();
+ return ((ItemDTO) object).getCreationDate();
}
};
sortedCellTable.addColumn(dateColumn, "Created", true);
@@ -251,8 +251,8 @@ public class ItemsTable extends AbstractItemsCellTable implem
if(o2 == null || o2.getCreationDate()==null)
return 1;
- Date d1 = ((Item) o1).getCreationDate();
- Date d2 = ((Item) o2).getCreationDate();
+ Date d1 = ((ItemDTO) o1).getCreationDate();
+ Date d2 = ((ItemDTO) o2).getCreationDate();
// GWT.log(d1.toString() + "is after "+d2.toString() +" ? "+d2.after(d1));
@@ -276,9 +276,9 @@ public class ItemsTable extends AbstractItemsCellTable implem
TextColumn textColumn = new TextColumn() {
@Override
public String getValue(T object) {
- Item extensionItem;
+ ItemDTO extensionItem;
String value = null;
- if(object instanceof Item){
+ if(object instanceof ItemDTO){
extensionItem = object;
value = extensionItem.getGcubeProperties().get(column);
}
@@ -292,14 +292,14 @@ public class ItemsTable extends AbstractItemsCellTable implem
@Override
public int compare(T o1, T o2) {
- if(!(o1 instanceof Item))
+ if(!(o1 instanceof ItemDTO))
return -1;
- if(!(o2 instanceof Item))
+ if(!(o2 instanceof ItemDTO))
return 1;
- Item e1 = o1;
- Item e2 = o2;
+ ItemDTO e1 = o1;
+ ItemDTO e2 = o2;
String v1 = e1.getGcubeProperties().get(column);
String v2 = e2.getGcubeProperties().get(column);
@@ -348,7 +348,7 @@ public class ItemsTable extends AbstractItemsCellTable implem
Context context, Element elem, T object, NativeEvent event) {
super.onBrowserEvent(context, elem, object, event);
if ("click".equals(event.getType())) {
- Item item = object;
+ ItemDTO item = object;
DialogShowGcubeItem dg = new DialogShowGcubeItem("Gcube Properties for: "+item.getName(), null, item, true);
// dg.setPopupPosition(event.getClientX()-Integer.parseInt(dg.getElement().getStyle().getWidth()), event.getClientY());
dg.center();
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemBuilder.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemBuilder.java
index 8d2dde9..84c3097 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemBuilder.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemBuilder.java
@@ -10,17 +10,18 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import org.gcube.common.homelibary.model.items.type.WorkspaceItemType;
-import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder;
-import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
-import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalFile;
+import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
+import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
+import org.gcube.common.storagehub.model.items.AbstractFileItem;
+import org.gcube.common.storagehub.model.items.FolderItem;
+import org.gcube.common.storagehub.model.items.Item;
+import org.gcube.common.storagehub.model.items.SharedFolder;
+import org.gcube.common.storagehub.model.items.VreFolder;
import org.gcube.portlets.widgets.wsexplorer.client.Util;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
+import org.gcube.portlets.widgets.wsexplorer.server.stohub.Whorespace;
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
-import org.gcube.portlets.widgets.wsexplorer.shared.Item;
+import org.gcube.portlets.widgets.wsexplorer.shared.ItemDTO;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,18 +41,18 @@ public class ItemBuilder {
* @param item the item
* @return the item
*/
- public static Item purgeEmptyFolders(Item item)
+ public static ItemDTO purgeEmptyFolders(ItemDTO item)
{
//for (Item child:item.getChildren()) purgeEmptyFolders(child); ONLY FIRST LEVEL
- List- toRemoveList = new LinkedList
- ();
- for (Item child:item.getChildren()) {
+ List toRemoveList = new LinkedList();
+ for (ItemDTO child:item.getChildren()) {
boolean toRemove = isAnEmptyFolder(child);
if (toRemove) {
toRemoveList.add(child);
}
}
- for (Item child:toRemoveList) {
+ for (ItemDTO child:toRemoveList) {
item.removeChild(child);
}
@@ -65,7 +66,7 @@ public class ItemBuilder {
* @param item the item
* @return true, if is an empty folder
*/
- protected static boolean isAnEmptyFolder(Item item)
+ protected static boolean isAnEmptyFolder(ItemDTO item)
{
return Util.isFolder(item.getType()) && item.getChildren().size() == 0;
}
@@ -84,8 +85,9 @@ public class ItemBuilder {
* @return the item
* @throws InternalErrorException the internal error exception
*/
- public static Item getItem(Item parent, WorkspaceItem workspaceItem, String workspaceItemPath, List showableTypes, FilterCriteria filterCriteria, boolean loadChildren, boolean loadGcubeProperties) throws InternalErrorException
- {
+ public static ItemDTO getItem(ItemDTO parent, Item workspaceItem, String workspaceItemPath,
+ List showableTypes, FilterCriteria filterCriteria,
+ boolean loadChildren, boolean loadGcubeProperties) {
ItemType type = getItemType(workspaceItem);
@@ -96,30 +98,25 @@ public class ItemBuilder {
return null;
}
-// //TODO ADD CONTROL ON THE PATH WHEN WILL BE MORE FAST
-// if (itemName.equals(WorkspaceExplorerConstants.SPECIAL_FOLDERS_LABEL))
-// itemName = WorkspaceExplorerConstants.VRE_FOLDERS_LABEL;
+ // //TODO ADD CONTROL ON THE PATH WHEN WILL BE MORE FAST
+ // if (itemName.equals(WorkspaceExplorerConstants.SPECIAL_FOLDERS_LABEL))
+ // itemName = WorkspaceExplorerConstants.VRE_FOLDERS_LABEL;
- boolean isFolder = type.equals(ItemType.FOLDER)?true:false;
- boolean isSharedFolder = workspaceItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)?true:false;
+ boolean isFolder = type.equals(ItemType.PRIVATE_FOLDER)?true:false;
+ boolean isSharedFolder = (type.equals(ItemType.SHARED_FOLDER) || type.equals(ItemType.VRE_FOLDER )) ? true : false;
String itemName = workspaceItem.getName();
if(isSharedFolder){
- logger.debug("Is shared folder: "+workspaceItem.getName());
- WorkspaceSharedFolder shared = (WorkspaceSharedFolder) workspaceItem;
- itemName = shared.isVreFolder()?shared.getDisplayName():workspaceItem.getName();
+ logger.info("Is shared folder: "+workspaceItem.getTitle());
+ SharedFolder shared = (SharedFolder) workspaceItem;
+ itemName = shared.isVreFolder()?shared.getDisplayName():workspaceItem.getTitle();
}
-// _log.debug("Building Item for: "+itemName);
- Item item = null;
+ // _log.debug("Building Item for: "+itemName);
+ ItemDTO item = null;
try{
- //THIS CALL IS VERY SLOW!!
-// String storageID = null;
-// if(workspaceItem instanceof FolderItem){
-// storageID = workspaceItem.getStorageID();
-// }
- item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItemPath, UserUtil.getUserFullName(workspaceItem.getOwner().getPortalLogin()), toDate(workspaceItem.getCreationTime()), isFolder, false);
+ item = new ItemDTO(parent, workspaceItem.getId(), itemName, type, workspaceItemPath, UserUtil.getUserFullName(workspaceItem.getOwner()), toDate(workspaceItem.getCreationTime()), isFolder, false);
item.setSharedFolder(isSharedFolder);
if(loadGcubeProperties){
@@ -132,16 +129,14 @@ public class ItemBuilder {
}
if(loadChildren){
- //TODO A PATCH TO AVOID A SLOW GETPATH
-// workspaceItemPath = workspaceItem.getPath();
- for (WorkspaceItem child: workspaceItem.getChildren()){
+ String itemId = item.getId();
+ ItemManagerClient client = AbstractPlugin.item().build();
+ List extends Item> theChildren = null;
+ theChildren = client.getChildren(itemId, Whorespace.ACCOUNTING_HL_NODE_NAME);
+ for (Item child : theChildren) {
String itemPath = workspaceItemPath+"/"+child.getName();
-// if(child.isFolder())
-// itemPath+="/"+child.getName();
-
-// _log.trace("\nConverting child item: "+child.getName());
- Item itemChild = getItem(item, child, itemPath, showableTypes, filterCriteria, false, loadGcubeProperties);
-// _log.trace("Item: "+child.getName() +" converted!!!");
+ ItemDTO itemChild = getItem(item, child, itemPath, showableTypes, filterCriteria, false, loadGcubeProperties);
+ logger.trace("Item: "+child.getName() +" converted!!!");
if (itemChild!=null){
item.addChild(itemChild);
}
@@ -168,7 +163,9 @@ public class ItemBuilder {
* @return the item
* @throws InternalErrorException the internal error exception
*/
- public static Item getItem(Item parent, WorkspaceItem workspaceItem, String workspaceItemPath, List showableTypes, FilterCriteria filterCriteria, boolean loadChildren, boolean loadGcubeProperties, int startIdx, int limit) throws InternalErrorException {
+ public static ItemDTO getItem(ItemDTO parent, Item workspaceItem, String workspaceItemPath,
+ List showableTypes, FilterCriteria filterCriteria,
+ boolean loadChildren, boolean loadGcubeProperties, int startIdx, int limit) {
ItemType type = getItemType(workspaceItem);
@@ -178,31 +175,27 @@ public class ItemBuilder {
if (!filterItem(type, workspaceItem, filterCriteria)) {
return null;
}
-
-// //TODO ADD CONTROL ON THE PATH WHEN WILL BE MORE FAST
-// if (itemName.equals(WorkspaceExplorerConstants.SPECIAL_FOLDERS_LABEL))
-// itemName = WorkspaceExplorerConstants.VRE_FOLDERS_LABEL;
-
- boolean isFolder = type.equals(ItemType.FOLDER)?true:false;
- boolean isSharedFolder = workspaceItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)?true:false;
+ boolean isFolder = type.equals(ItemType.PRIVATE_FOLDER)?true:false;
+ boolean isSharedFolder = (type.equals(ItemType.SHARED_FOLDER) || type.equals(ItemType.VRE_FOLDER )) ? true : false;
String itemName = workspaceItem.getName();
if(isSharedFolder){
- logger.debug("Is shared folder: "+workspaceItem.getName());
- WorkspaceSharedFolder shared = (WorkspaceSharedFolder) workspaceItem;
- itemName = shared.isVreFolder()?shared.getDisplayName():workspaceItem.getName();
+ logger.info("Is shared folder: "+workspaceItem.getTitle());
+ SharedFolder shared = (SharedFolder) workspaceItem;
+ itemName = shared.isVreFolder()?shared.getDisplayName():workspaceItem.getTitle();
}
-// _log.debug("Building Item for: "+itemName);
- Item item = null;
+
+ // _log.debug("Building Item for: "+itemName);
+ ItemDTO item = null;
try{
//THIS CALL IS VERY SLOW!!
-// String storageID = null;
-// if(workspaceItem instanceof FolderItem){
-// storageID = workspaceItem.getStorageID();
-// }
- item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItemPath, UserUtil.getUserFullName(workspaceItem.getOwner().getPortalLogin()), toDate(workspaceItem.getCreationTime()), isFolder, false);
+ // String storageID = null;
+ // if(workspaceItem instanceof FolderItem){
+ // storageID = workspaceItem.getStorageID();
+ // }
+ item = new ItemDTO(parent, workspaceItem.getId(), itemName, type, workspaceItemPath, UserUtil.getUserFullName(workspaceItem.getOwner()), toDate(workspaceItem.getCreationTime()), isFolder, false);
item.setSharedFolder(isSharedFolder);
if(loadGcubeProperties){
@@ -215,10 +208,14 @@ public class ItemBuilder {
}
if(loadChildren){
- WorkspaceFolder folder = (WorkspaceFolder) workspaceItem;
- for (WorkspaceItem child: folder.getChildren(limit, startIdx, false)){
+ String itemId = item.getId();
+ ItemManagerClient client = AbstractPlugin.item().build();
+ List extends Item> theChildren = null;
+ theChildren = client.getChildren(itemId, Whorespace.ACCOUNTING_HL_NODE_NAME);
+ for (Item child : theChildren) {
String itemPath = workspaceItemPath+"/"+child.getName();
- Item itemChild = getItem(item, child, itemPath, showableTypes, filterCriteria, false, loadGcubeProperties, startIdx, limit);
+ ItemDTO itemChild = getItem(item, child, itemPath, showableTypes, filterCriteria, false, loadGcubeProperties);
+ logger.trace("Item: "+child.getName() +" converted!!!");
if (itemChild!=null){
item.addChild(itemChild);
}
@@ -235,20 +232,16 @@ public class ItemBuilder {
* @return the item type
* @throws InternalErrorException the internal error exception
*/
- protected static ItemType getItemType(WorkspaceItem item) throws InternalErrorException
- {
- switch(item.getType())
- {
- case SHARED_FOLDER:
- case FOLDER:{
-// if (item.isRoot()) return ItemType.ROOT;
- return ItemType.FOLDER;
- }
- case FOLDER_ITEM: return getFolderItemType((FolderItem) item);
-
- default:
- return null;
+ protected static ItemType getItemType(Item item) {
+ if (item instanceof AbstractFileItem) {
+ return ItemType.EXTERNAL_FILE;
}
+ else if (item instanceof FolderItem) {
+ return getFolderItemType(item);
+ }
+ logger.warn("Item Type non found: ");
+ return ItemType.UNKNOWN_TYPE;
+
}
/**
@@ -257,14 +250,17 @@ public class ItemBuilder {
* @param item the item
* @return the folder item type
*/
- protected static ItemType getFolderItemType(FolderItem item){
-
- try{
- return ItemType.valueOf(item.getFolderItemType().toString());
- }catch (Exception e) {
- logger.warn("Item Type non found: ", e.getMessage());
- return ItemType.UNKNOWN_TYPE;
+ protected static ItemType getFolderItemType(Item item){
+ if (item instanceof SharedFolder || item instanceof VreFolder) {
+ SharedFolder folder = (SharedFolder) item;
+ if (folder.isVreFolder())
+ return ItemType.VRE_FOLDER;
+ return ItemType.SHARED_FOLDER;
+ } else if (item instanceof FolderItem) {
+ return ItemType.PRIVATE_FOLDER;
}
+ logger.warn("Item Type non found: ");
+ return ItemType.UNKNOWN_TYPE;
}
@@ -277,7 +273,7 @@ public class ItemBuilder {
* @return true, if successful
* @throws InternalErrorException the internal error exception
*/
- protected static boolean filterItem(ItemType type, WorkspaceItem item, FilterCriteria filterCriteria) throws InternalErrorException {
+ protected static boolean filterItem(ItemType type, Item item, FilterCriteria filterCriteria) {
if(filterCriteria==null) {
return true;
}
@@ -304,14 +300,13 @@ public class ItemBuilder {
* @param allowedMimeTypes the allowed mime types
* @return true, if successful
*/
- protected static boolean checkAllowedMimeTypes(ItemType type, WorkspaceItem item, List allowedMimeTypes){
+ protected static boolean checkAllowedMimeTypes(ItemType type, Item item, List allowedMimeTypes){
if (allowedMimeTypes==null || allowedMimeTypes.size()==0) {
return true;
}
- if (type == ItemType.EXTERNAL_FILE || type == ItemType.EXTERNAL_IMAGE || type == ItemType.EXTERNAL_PDF_FILE) {
- ExternalFile externalFile = (ExternalFile)item;
- String mimeType = externalFile.getMimeType();
+ if (type == ItemType.EXTERNAL_FILE) {
+ String mimeType = "unknown"; //TODO
return allowedMimeTypes.contains(mimeType);
}
return true;
@@ -328,18 +323,18 @@ public class ItemBuilder {
* @param allowedFileExtension the allowed mime types
* @return true, if successful
*/
- protected static boolean checkAllowedFileExtension(ItemType type, WorkspaceItem item, List allowedFileExtension){
+ protected static boolean checkAllowedFileExtension(ItemType type, Item item, List allowedFileExtension){
if (allowedFileExtension==null || allowedFileExtension.size()==0) {
return true;
}
try {
- if (type != ItemType.FOLDER) {
+ if (item instanceof FolderItem) {
String name = item.getName();
return checkFileExtension(name, allowedFileExtension);
}
return true;
- } catch (InternalErrorException e) {
+ } catch (Exception e) {
logger.error("checkAllowedFileExtension, InternalErrorException: ",e);
return false;
}
@@ -363,8 +358,8 @@ public class ItemBuilder {
String ext = fileName.substring(dot+1, fileName.length());
logger.trace("Extension found: "+ext +" for: "+fileName);
-// if(ext.isEmpty())
-// return false;
+ // if(ext.isEmpty())
+ // return false;
for (String fe : allowedFileExtension) {
if(ext.compareTo(fe)==0) {
return true;
@@ -385,9 +380,9 @@ public class ItemBuilder {
* @return true, if successful
* @throws InternalErrorException the internal error exception
*/
- protected static boolean checkProperties(WorkspaceItem item, Map requestedProperties) throws InternalErrorException
+ protected static boolean checkProperties(Item item, Map requestedProperties)
{
- if (requestedProperties==null || requestedProperties.size()==0 || item.getType()!=WorkspaceItemType.FOLDER_ITEM) {
+ if (requestedProperties==null || requestedProperties.size()==0 || (item instanceof FolderItem)) {
return true;
}
@@ -417,15 +412,16 @@ public class ItemBuilder {
* @return the gcube properties for item
* @throws InternalErrorException the internal error exception
*/
- protected static Map getGcubePropertiesForItem(WorkspaceItem item) throws InternalErrorException{
-
- try {
- return item.getProperties().getProperties();
- }
- catch (InternalErrorException e) {
- logger.warn("An error occurred during get properties for item: "+item.getId()+", returning null");
- return null;
- }
+ protected static Map getGcubePropertiesForItem(Item item) {
+ return null;
+ //TODO: see how to return this later
+ // try {
+ // return item.getProperties().getProperties();
+ // }
+ // catch (InternalErrorException e) {
+ // logger.warn("An error occurred during get properties for item: "+item.getId()+", returning null");
+ // return null;
+ // }
}
@@ -438,19 +434,19 @@ public class ItemBuilder {
* @return the item
* @throws InternalErrorException the internal error exception
*/
- public static Item buildFolderForBreadcrumbs(WorkspaceFolder wsFolder, Item parent) throws InternalErrorException {
+ public static ItemDTO buildFolderForBreadcrumbs(FolderItem wsFolder, ItemDTO parent){
String name = "";
boolean isSpecialFolder = false;
boolean isRoot = false;
- if(wsFolder.isRoot()){ //IS ROOT
+ if(wsFolder.getParentId() == null){ //IS ROOT
name = WorkspaceExplorerConstants.HOME_LABEL;
isRoot = true;
- }else if(wsFolder.isShared() && wsFolder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ //MANAGEMENT SHARED FOLDER NAME
- WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
- name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
- //MANAGEMENT SPECIAL FOLDER
+ }else if(wsFolder.isShared()){ //MANAGEMENT SHARED FOLDER NAME
+ SharedFolder shared = (SharedFolder) wsFolder;
+ name = shared.isVreFolder()?shared.getDisplayName():shared.getTitle();
+ //MANAGEMENT SPECIAL FOLDER
}else if(isSpecialFolder(wsFolder)){
name = WorkspaceExplorerConstants.VRE_FOLDERS_LABEL;
isSpecialFolder = true;
@@ -461,7 +457,7 @@ public class ItemBuilder {
//BUILDS A SIMPLE ITEM FOR BREADCRUMB
String path = null; //wsFolder.getPath(); FORCED TO NULL BECAUSE IS SLOW CALL
- Item item = new Item(null, wsFolder.getId(), name, ItemType.FOLDER, path, null, null, true, isRoot);
+ ItemDTO item = new ItemDTO(null, wsFolder.getId(), name, ItemType.FOLDER, path, null, null, true, isRoot);
item.setSpecialFolder(isSpecialFolder);
logger.debug("breadcrumb returning: "+item);
@@ -474,14 +470,8 @@ public class ItemBuilder {
* @param wsFolder the ws folder
* @return true, if is special folder
*/
- public static boolean isSpecialFolder(WorkspaceFolder wsFolder){
-
- try {
- return wsFolder.getName().compareTo(WorkspaceExplorerConstants.SPECIAL_FOLDERS_NAME)==0 && wsFolder.getParent()!=null && wsFolder.getParent().isRoot();
- } catch (InternalErrorException e) {
- logger.warn("isSpecialFolder exception, returning false");
- return false;
- }
+ public static boolean isSpecialFolder(FolderItem wsFolder){
+ return (wsFolder.getName().compareTo("MySpecialFolder") == 0);
}
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemComparator.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemComparator.java
index 14fa9d2..91a465f 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemComparator.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemComparator.java
@@ -7,20 +7,20 @@ import java.util.Comparator;
import org.gcube.portlets.widgets.wsexplorer.client.Util;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
-import org.gcube.portlets.widgets.wsexplorer.shared.Item;
+import org.gcube.portlets.widgets.wsexplorer.shared.ItemDTO;
/**
* A comparator that sorts the items first by type, folder up others down, the each group alphabetically on the item name.
* @author "Federico De Faveri defaveri@isti.cnr.it"
*/
-public class ItemComparator implements Comparator
- {
+public class ItemComparator implements Comparator {
/**
* {@inheritDoc}
*/
@Override
- public int compare(Item item1, Item item2) {
+ public int compare(ItemDTO item1, ItemDTO item2) {
//if one of the item is folder and the other one not, we move up the folder
boolean isItem1Folder = Util.isFolder(item1.getType());
@@ -36,7 +36,7 @@ public class ItemComparator implements Comparator
- {
return String.CASE_INSENSITIVE_ORDER.compare(item1.getName(), item2.getName());
}
- private boolean isSpecialFolder(Item item) {
+ private boolean isSpecialFolder(ItemDTO item) {
// return item.getName().equals(WorkspaceExplorerConstants.VRE_FOLDERS_LABEL) && item.getParent()!=null && item.getParent().isRoot();
return item.getName().equals(WorkspaceExplorerConstants.VRE_FOLDERS_LABEL) && item.isSpecialFolder();
}
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java
index 5d39253..88df645 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java
@@ -3,30 +3,24 @@ package org.gcube.portlets.widgets.wsexplorer.server;
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.homelibary.model.items.type.WorkspaceItemType;
-import org.gcube.common.homelibrary.home.HomeLibrary;
-import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
-import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
-import org.gcube.common.homelibrary.home.workspace.Workspace;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder;
-import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException;
-import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException;
-import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
-import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
+import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.portal.PortalContext;
-import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
+import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
+import org.gcube.common.storagehub.model.items.FolderItem;
+import org.gcube.common.storagehub.model.items.Item;
+import org.gcube.common.storagehub.model.items.SharedFolder;
+import org.gcube.common.storagehub.model.items.VreFolder;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
+import org.gcube.portlets.widgets.wsexplorer.server.stohub.Whorespace;
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
-import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
+import org.gcube.portlets.widgets.wsexplorer.shared.ItemDTO;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemInterface;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import org.gcube.portlets.widgets.wsexplorer.shared.SearchedFolder;
@@ -47,60 +41,31 @@ import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implements WorkspaceExplorerService {
public static final Logger logger = LoggerFactory.getLogger(WorkspaceExplorerServiceImpl.class);
- //public static final String USERNAME_ATTRIBUTE = "username";
- //public static final String TEST_USER = "test.user";
- //public static final String TEST_SCOPE = "/gcube"; //DEV
-// public static final String PRODUCTION_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; //PRODUCTION
-
- /**
-
- /**
- * Gets the workspace.
- *
- * @return the workspace
- * @throws Exception the exception
- */
- protected Workspace getWorkspace() throws Exception {
- PortalContext pContext = PortalContext.getConfiguration();
- Workspace workspace;
- try{
- ScopeProvider.instance.set(pContext.getCurrentScope(getThreadLocalRequest()));
- workspace = HomeLibrary.getUserWorkspace(pContext.getCurrentUser(getThreadLocalRequest()).getUsername());
- }catch(InternalErrorException | HomeNotFoundException | WorkspaceFolderNotFoundException e){
- String msg = "Sorry, an error occurred when retrieving workspace item, Refresh an try again";
- logger.error("HL error: ",e);
- throw new Exception(msg);
- }
- return workspace;
- }
-
/**
* {@inheritDoc}
*/
@Override
- public Item getRoot(List showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException {
+ public ItemDTO getRoot(List showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException {
logger.trace("getRoot showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+ filterCriteria);
try {
-
- Workspace workspace = getWorkspace();
+ PortalContext pContext = PortalContext.getConfiguration();
+ String userName = pContext.getCurrentUser(getThreadLocalRequest()).getUsername();
+ String scope = pContext.getCurrentScope(getThreadLocalRequest());
+ String authorizationToken = pContext.getCurrentUserToken(scope, userName);
+ SecurityTokenProvider.instance.set(authorizationToken);
+
logger.trace("Start getRoot...");
-
- WorkspaceItem root = workspace.getRoot();
+ Item root = Whorespace.getRoot(getThreadLocalRequest());
logger.trace("GetRoot - Replyiing root");
long startTime = System.currentTimeMillis();
logger.trace("start time - " + startTime);
- Item rootItem = ItemBuilder.getItem(null, root, root.getPath(), showableTypes, filterCriteria, true, false);
+ ItemDTO rootItem = ItemBuilder.getItem(null, root, root.getPath(), showableTypes, filterCriteria, true, false);
rootItem.setName(WorkspaceExplorerConstants.HOME_LABEL);
rootItem.setIsRoot(true);
- /* SPECIAL FOLDERS
- Item specialFolders = ItemBuilder.getItem(null, specials, showableTypes, filterCriteria, 2);
- specialFolders.setShared(true);
- rootItem.addChild(specialFolders);
- */
if (purgeEmpyFolders) {
rootItem = ItemBuilder.purgeEmptyFolders(rootItem);
}
@@ -124,20 +89,22 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
* {@inheritDoc}
*/
@Override
- public Item getFolder(ItemInterface item, List showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria, boolean loadGcubeProperties) throws WorkspaceNavigatorServiceException {
+ public ItemDTO getFolder(ItemInterface item, List showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria, boolean loadGcubeProperties) throws WorkspaceNavigatorServiceException {
logger.trace("getFolder folderId: "+item.getId()+" showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+filterCriteria);
try {
- Workspace workspace = getWorkspace();
- WorkspaceItem folder = workspace.getItem(item.getId());
+ PortalContext pContext = PortalContext.getConfiguration();
+ String userName = pContext.getCurrentUser(getThreadLocalRequest()).getUsername();
+ String scope = pContext.getCurrentScope(getThreadLocalRequest());
+ String authorizationToken = pContext.getCurrentUserToken(scope, userName);
+ SecurityTokenProvider.instance.set(authorizationToken);
+ Item folder = Whorespace.getItem(getThreadLocalRequest(), item.getId());
logger.trace("GetFolder - Replying folder");
- long startTime = System.currentTimeMillis();
- logger.trace("start time - " + startTime);
-
+
//TO AVOID SLOW CALL getPATH()
String folderPath = item.getPath()!=null && !item.getPath().isEmpty()?item.getPath():folder.getPath();
- Item itemFolder = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties);
+ ItemDTO itemFolder = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties);
// _log.trace("Only showable types:");
if (purgeEmpyFolders) {
@@ -145,9 +112,6 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
}
Collections.sort(itemFolder.getChildren(), new ItemComparator());
-
- Long endTime = System.currentTimeMillis() - startTime;
- logger.debug("end time - " + String.format("%d msc %d sec", endTime - startTime, TimeUnit.MILLISECONDS.toSeconds(endTime)));
logger.info("Returning children size: "+itemFolder.getChildren().size());
return itemFolder;
@@ -169,28 +133,34 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
* @throws WorkspaceNavigatorServiceException the workspace navigator service exception
*/
@Override
- public Item getItemByCategory(ItemCategory category) throws WorkspaceNavigatorServiceException{
+ public ItemDTO getItemByCategory(ItemCategory category) throws WorkspaceNavigatorServiceException{
logger.trace("GetItemByCategory category: "+category);
+ PortalContext pContext = PortalContext.getConfiguration();
+ String userName = pContext.getCurrentUser(getThreadLocalRequest()).getUsername();
+ String scope = pContext.getCurrentScope(getThreadLocalRequest());
+ String authorizationToken = pContext.getCurrentUserToken(scope, userName);
+ SecurityTokenProvider.instance.set(authorizationToken);
+
try {
- Workspace workspace = getWorkspace();
- Item item = null;
+
+ ItemDTO item = null;
switch(category){
case HOME:{
- WorkspaceItem root = workspace.getRoot();
- PortalContext pContext = PortalContext.getConfiguration();
+ Item root = Whorespace.getRoot(getThreadLocalRequest());
String fullName = pContext.getCurrentUser(getThreadLocalRequest()).getFullname();
if(fullName.indexOf(" ")>0){
fullName = fullName.substring(0, fullName.indexOf(" "));
}else if(fullName.indexOf(".")>0){
fullName = fullName.substring(0, fullName.indexOf("."));
}
- item = new Item(null, root.getId(), fullName+"'s", ItemType.FOLDER, root.getPath(), root.getOwner().getPortalLogin(), null, true, true);
+ item = new ItemDTO(null, root.getId(), fullName+"'s", ItemType.FOLDER, root.getPath(), root.getOwner(), null, true, true);
break;
}
case VRE_FOLDER:{
- WorkspaceItem folder = workspace.getMySpecialFolders();
- item = new Item(null, folder.getId(), WorkspaceExplorerConstants.VRE_FOLDERS_LABEL, ItemType.FOLDER, folder.getPath(), folder.getOwner().getPortalLogin(), null, true, false);
+ String vreFolderId = Whorespace.getVREFoldersId(getThreadLocalRequest());
+ Item folder = Whorespace.getItem(getThreadLocalRequest(), vreFolderId);
+ item = new ItemDTO(null, folder.getId(), WorkspaceExplorerConstants.VRE_FOLDERS_LABEL, ItemType.FOLDER, folder.getPath(), folder.getOwner(), null, true, false);
//SET SPECIAL FOLDER /Workspace/MySpecialFolders
item.setSpecialFolder(true);
break;
@@ -207,18 +177,22 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
* {@inheritDoc}
*/
@Override
- public Item getMySpecialFolder(List showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException {
+ public ItemDTO getMySpecialFolder(List showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException {
logger.trace("GetMySpecialFolder showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+filterCriteria);
try {
-
- Workspace workspace = getWorkspace();
- WorkspaceItem folder = workspace.getMySpecialFolders();
+ PortalContext pContext = PortalContext.getConfiguration();
+ String userName = pContext.getCurrentUser(getThreadLocalRequest()).getUsername();
+ String scope = pContext.getCurrentScope(getThreadLocalRequest());
+ String authorizationToken = pContext.getCurrentUserToken(scope, userName);
+ SecurityTokenProvider.instance.set(authorizationToken);
+ String vreFolderId = Whorespace.getVREFoldersId(getThreadLocalRequest());
+ Item folder = Whorespace.getItem(getThreadLocalRequest(), vreFolderId);
long startTime = System.currentTimeMillis();
logger.trace("start time - " + startTime);
- Item itemFolder = ItemBuilder.getItem(null, folder, folder.getPath(), showableTypes, filterCriteria, true, false);
+ ItemDTO itemFolder = ItemBuilder.getItem(null, folder, folder.getPath(), showableTypes, filterCriteria, true, false);
//OVERRIDING VRE FOLDERS NAME - SET SPECIAL FOLDER /Workspace/MySpecialFolders
itemFolder.setName(WorkspaceExplorerConstants.VRE_FOLDERS_LABEL);
itemFolder.setSpecialFolder(true);
@@ -254,15 +228,8 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
*/
@Override
public boolean checkName(String name) throws WorkspaceNavigatorServiceException {
- logger.trace("checkName name: "+name);
- try {
- PortalContext pContext = PortalContext.getConfiguration();
- Workspace workspace = HomeLibrary.getUserWorkspace(pContext.getCurrentUser(getThreadLocalRequest()).getUsername());
- return workspace.isValidName(name);
- } catch (Exception e) {
- logger.error("Error during folder retrieving", e);
- throw new WorkspaceNavigatorServiceException(e.getMessage());
- }
+ logger.warn("checkName name NOT IMPLEMENTED: "+name);
+ return true; //TODO:
}
/*protected void printName(String indentation, Item item)
@@ -282,38 +249,42 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
* @throws Exception the exception
*/
@Override
- public List
- getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception {
+ public List getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception {
logger.trace("ListParents By Item Identifier "+ itemIdentifier);
try {
- Workspace workspace = getWorkspace();
- WorkspaceItem wsItem = workspace.getItem(itemIdentifier);
+ Item wsItem = Whorespace.getItem(getThreadLocalRequest(), itemIdentifier);
logger.trace("workspace retrieve item name: "+wsItem.getName());
- List parents = workspace.getParentsById(itemIdentifier);
+ List
- parents = new ArrayList<>();
+ Item whileItem = wsItem;
+ while (whileItem.getParentId() != null) {
+ parents.add(whileItem);
+ whileItem = Whorespace.getItem(getThreadLocalRequest(), whileItem.getParentId());
+ }
+ // List
- parents = workspace.getParentsById(itemIdentifier);
logger.trace("parents size: "+parents.size());
- Item[] arrayParents;
-
- if(includeItemAsParent==true && wsItem.isFolder()){
- arrayParents = new Item[parents.size()];
- arrayParents[parents.size()-1] = ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsItem, null);
+ ItemDTO[] arrayParents;
+ if(includeItemAsParent==true && wsItem instanceof FolderItem){
+ arrayParents = new ItemDTO[parents.size()];
+ arrayParents[parents.size()-1] = ItemBuilder.buildFolderForBreadcrumbs((FolderItem) wsItem, null);
}
else {
- arrayParents = new Item[parents.size()-1];
+ arrayParents = new ItemDTO[parents.size()-1];
}
/** HANDLE MY_SPECIAL_FOLDER TO AVOID COMPLETE PATH WORKSPACE/MY_SPECIAL_FOLDER
* BUT RETURNING ONLY /MY_SPECIAL_FOLDER
*/
- if(wsItem.isFolder()){
- if(ItemBuilder.isSpecialFolder((WorkspaceFolder) wsItem)){
- return new ArrayList
- (Arrays.asList(arrayParents));
+ if(wsItem instanceof FolderItem){
+ if(ItemBuilder.isSpecialFolder((FolderItem) wsItem)){
+ return new ArrayList(Arrays.asList(arrayParents));
}
}
//CONVERTING PATH
logger.trace("converting path from second-last..");
for (int i = parents.size()-2; i >= 0; i--) {
- WorkspaceFolder wsParentFolder = (WorkspaceFolder) parents.get(i);
+ FolderItem wsParentFolder = (FolderItem) parents.get(i);
arrayParents[i] = ItemBuilder.buildFolderForBreadcrumbs(wsParentFolder, null);
if(arrayParents[i].isSpecialFolder()){ //SKIP HOME PARENT FOR MY_SPECIAL_FOLDER
logger.info("arrayParents index "+i+" is special folder, exit");
@@ -325,21 +296,21 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
logger.trace("setting parents..");
for(int i=0; i breadcrumbs = new ArrayList
- (arrayParents.length-1);
+ List breadcrumbs = new ArrayList(arrayParents.length-1);
for (int i=1; i(Arrays.asList(arrayParents));
+ return new ArrayList(Arrays.asList(arrayParents));
}
} catch (Exception e) {
@@ -358,23 +329,29 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
* @throws Exception the exception
*/
@Override
- public List
- getBreadcrumbsByItemIdentifierToParentLimit(String itemIdentifier, String parentLimit, boolean includeItemAsParent) throws Exception {
+ public List getBreadcrumbsByItemIdentifierToParentLimit(String itemIdentifier, String parentLimit, boolean includeItemAsParent) throws Exception {
logger.trace("getBreadcrumbsByItemIdentifierToParentLimit by Item Identifier " + itemIdentifier +" and limit: "+parentLimit);
try {
- Workspace workspace = getWorkspace();
- WorkspaceItem wsItem = workspace.getItem(itemIdentifier);
+ Item wsItem = Whorespace.getItem(getThreadLocalRequest(), itemIdentifier);
logger.trace("workspace retrieve item name: "+wsItem.getName());
- List parents = workspace.getParentsById(itemIdentifier);
+ List
- parents = new ArrayList<>();
+ Item whileItem = wsItem;
+ while (whileItem.getParentId() != null) {
+ parents.add(whileItem);
+ whileItem = Whorespace.getItem(getThreadLocalRequest(), whileItem.getParentId());
+ }
+ logger.trace("workspace retrieve item name: "+wsItem.getName());
+ //List parents = workspace.getParentsById(itemIdentifier);
logger.trace("parents size: "+parents.size());
- Item[] arrayParents;
+ ItemDTO[] arrayParents;
- if(includeItemAsParent==true && wsItem.isFolder()){
- arrayParents = new Item[parents.size()];
- arrayParents[parents.size()-1] = ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsItem, null);
+ if(includeItemAsParent==true && wsItem instanceof FolderItem){
+ arrayParents = new ItemDTO[parents.size()];
+ arrayParents[parents.size()-1] = ItemBuilder.buildFolderForBreadcrumbs((FolderItem) wsItem, null);
}
else {
- arrayParents = new Item[parents.size()-1];
+ arrayParents = new ItemDTO[parents.size()-1];
}
parentLimit = parentLimit!=null?parentLimit:"";
@@ -382,15 +359,15 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
/** HANDLE MY_SPECIAL_FOLDER TO AVOID COMPLETE PATH WORKSPACE/MY_SPECIAL_FOLDER
* BUT RETURNING ONLY /MY_SPECIAL_FOLDER
*/
- if(wsItem.isFolder()){
- if(ItemBuilder.isSpecialFolder((WorkspaceFolder) wsItem)){
+ if( wsItem instanceof FolderItem){
+ if(ItemBuilder.isSpecialFolder((FolderItem) wsItem)){
logger.debug("item id is special folder, returning");
- return new ArrayList
- (Arrays.asList(arrayParents));
+ return new ArrayList(Arrays.asList(arrayParents));
}
if(itemIdentifier.compareTo(parentLimit)==0){
logger.debug("item and parent limit are identical element, returning");
- return new ArrayList
- (Arrays.asList(arrayParents));
+ return new ArrayList(Arrays.asList(arrayParents));
}
}
@@ -398,7 +375,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
//CONVERTING PATH
logger.trace("converting path from second-last..");
for (int i = parents.size()-2; i >= 0; i--) {
- WorkspaceFolder wsParentFolder = (WorkspaceFolder) parents.get(i);
+ FolderItem wsParentFolder = (FolderItem) parents.get(i);
arrayParents[i] = ItemBuilder.buildFolderForBreadcrumbs(wsParentFolder, null);
if(arrayParents[i].isSpecialFolder()){ //SKIP HOME PARENT FOR MY_SPECIAL_FOLDER
logger.info("arrayParents index "+i+" is special folder, break");
@@ -413,8 +390,8 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
logger.trace("setting parents..");
for(int i=0; i breadcrumbs = new ArrayList
- ();
+ List breadcrumbs = new ArrayList();
for (int i=1; i(Arrays.asList(arrayParents));
+ return new ArrayList(Arrays.asList(arrayParents));
}
} catch (Exception e) {
@@ -453,31 +430,32 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
*/
@Override
public Long getSizeByItemId(String itemId) throws Exception {
-
- logger.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());
- } else if (wsItem instanceof WorkspaceFolder ){ //FOLDER
- WorkspaceFolder theFolder = (WorkspaceFolder) wsItem;
- size = theFolder.getSize();
- } else if (wsItem instanceof WorkspaceSharedFolder){ //SHARED FOLDER
- WorkspaceSharedFolder theFolder = (WorkspaceSharedFolder) wsItem;
- size = theFolder.getSize();
- }
- logger.info("returning size: " +size);
- return size;
-
- } catch (Exception e) {
- logger.error("get Size By ItemId ", e);
- throw new Exception(e.getMessage());
- }
+ //TODO: implementation missing
+ return 0L;
+// logger.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());
+// } else if (wsItem instanceof WorkspaceFolder ){ //FOLDER
+// WorkspaceFolder theFolder = (WorkspaceFolder) wsItem;
+// size = theFolder.getSize();
+// } else if (wsItem instanceof WorkspaceSharedFolder){ //SHARED FOLDER
+// WorkspaceSharedFolder theFolder = (WorkspaceSharedFolder) wsItem;
+// size = theFolder.getSize();
+// }
+// logger.info("returning size: " +size);
+// return size;
+//
+// } catch (Exception e) {
+// logger.error("get Size By ItemId ", e);
+// throw new Exception(e.getMessage());
+// }
}
/* (non-Javadoc)
@@ -495,17 +473,17 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
logger.info("get MimeType By ItemId "+ itemId);
try {
+ Item wsItem = Whorespace.getItem(getThreadLocalRequest(), itemId);
+ logger.trace("workspace retrieve item name: "+wsItem.getName());
+
- Workspace workspace = getWorkspace();
- WorkspaceItem wsItem = workspace.getItem(itemId);
-
- if(!wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)) {
+ if(! (wsItem instanceof FolderItem)) {
return null;
}
FolderItem folderItem = (FolderItem) wsItem;
-
- return folderItem.getMimeType();
+ //TODO:folderItem.getMimeType();
+ return "unknown";
} catch (Exception e) {
logger.error("get MimeType By ItemId ", e);
@@ -525,14 +503,14 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
public String getUserACLForFolderId(String folderId) throws Exception{
try {
logger.info("Get user ACL to FOLDER id: "+folderId);
- Workspace workspace = getWorkspace();
- WorkspaceItem wsItem = workspace.getItem(folderId);
+ Item wsItem = Whorespace.getItem(getThreadLocalRequest(), folderId);
+ logger.trace("workspace retrieve item name: "+wsItem.getName());
if(!isASharedFolder(wsItem, false)) {
return "OWNER";
}
else {
- return wsItem.getACLUser().toString();
+ return "NOT IMPLEMENTED";//TODO
}
} catch (Exception e) {
logger.error("Error in server get UserACLForFolderId", e);
@@ -549,16 +527,15 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
* @param asRoot the as root
* @return true, if is a shared folder
*/
- private boolean isASharedFolder(WorkspaceItem item, boolean asRoot){
+ private boolean isASharedFolder(Item 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?
- }
-
+ if (item instanceof SharedFolder || item instanceof VreFolder) {
+ SharedFolder folder = (SharedFolder) item;
+ if (folder.isVreFolder())
+ return true;
return true;
+ } else if (item instanceof FolderItem) {
+ return false;
}
return false;
}catch(Exception e){
@@ -601,61 +578,62 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
* @throws Exception the exception
*/
@Override
- public Item createFolder(String nameFolder, String description, String parentId) throws Exception {
+ public ItemDTO createFolder(String nameFolder, String description, String parentId) throws Exception {
logger.debug("creating folder: "+nameFolder +", parent id: "+parentId);
-
- try {
-
- if(parentId==null || parentId.isEmpty())
- throw new Exception("Parent id is null or empty");
-
- if(nameFolder == null)
- nameFolder = "Empty Folder";
-
- Workspace workspace = getWorkspace();
- WorkspaceFolder wsFolder = workspace.createFolder(nameFolder, description, parentId);
-
-// _log.info("Path returned by HL: "+wsFolder.getPath());
-
- List allTypes = Arrays.asList(ItemType.values());
-
- Item parent = null;
- try{
- String parentPath = wsFolder.getParent()!=null?wsFolder.getParent().getPath():"";
- parent = ItemBuilder.getItem(null, wsFolder.getParent(), parentPath, allTypes, null, false, false);
- }catch(Exception e){
- logger.error("Get parent thown an exception, is it the root id? "+parentId);
- }
-
- //TODO PATCH TO AVOID PROBLEM ON GETPATH. FOR EXAMPLE WHEN PARENT IS ROOT
- String itemPath = null;
- try{
- itemPath = wsFolder.getPath();
- logger.info("itemPath: "+itemPath);
- }catch(Exception e){
- logger.error("Get path thrown an exception, for id: "+wsFolder.getId() +" name: "+wsFolder.getName(), e);
-// itemPath= wsFolder.isFolder()?workspace.getRoot().getPath()+"/"+wsFolder.getName():workspace.getRoot().getPath();
- //PATCH TO RETURN ABSOLUTE PATH
- itemPath= workspace.getRoot().getPath()+"/"+wsFolder.getName();
- logger.warn("returning base path: "+itemPath);
- }
-
- return ItemBuilder.getItem(parent, wsFolder, itemPath, allTypes, null, false, false);
-
- } catch(InsufficientPrivilegesException e){
- String error = "Insufficient Privileges to create the folder";
- logger.error(error, e);
- throw new Exception(error);
- } catch (ItemAlreadyExistException e) {
- String error = "An error occurred on creating folder, " +e.getMessage();
- logger.error(error, e);
- throw new Exception(error);
- } catch (Exception e) {
- String error = "An error occurred on the sever during creating folder. Try again";
- logger.error(error, e);
- throw new Exception(error);
- }
+ //TODO
+ return null;
+// try {
+//
+// if(parentId==null || parentId.isEmpty())
+// throw new Exception("Parent id is null or empty");
+//
+// if(nameFolder == null)
+// nameFolder = "Empty Folder";
+//
+// Workspace workspace = getWorkspace();
+// WorkspaceFolder wsFolder = workspace.createFolder(nameFolder, description, parentId);
+//
+//// _log.info("Path returned by HL: "+wsFolder.getPath());
+//
+// List allTypes = Arrays.asList(ItemType.values());
+//
+// ItemDTO parent = null;
+// try{
+// String parentPath = wsFolder.getParent()!=null?wsFolder.getParent().getPath():"";
+// parent = ItemBuilder.getItem(null, wsFolder.getParent(), parentPath, allTypes, null, false, false);
+// }catch(Exception e){
+// logger.error("Get parent thown an exception, is it the root id? "+parentId);
+// }
+//
+// //TODO PATCH TO AVOID PROBLEM ON GETPATH. FOR EXAMPLE WHEN PARENT IS ROOT
+// String itemPath = null;
+// try{
+// itemPath = wsFolder.getPath();
+// logger.info("itemPath: "+itemPath);
+// }catch(Exception e){
+// logger.error("Get path thrown an exception, for id: "+wsFolder.getId() +" name: "+wsFolder.getName(), e);
+//// itemPath= wsFolder.isFolder()?workspace.getRoot().getPath()+"/"+wsFolder.getName():workspace.getRoot().getPath();
+// //PATCH TO RETURN ABSOLUTE PATH
+// itemPath= workspace.getRoot().getPath()+"/"+wsFolder.getName();
+// logger.warn("returning base path: "+itemPath);
+// }
+//
+// return ItemBuilder.getItem(parent, wsFolder, itemPath, allTypes, null, false, false);
+//
+// } catch(InsufficientPrivilegesException e){
+// String error = "Insufficient Privileges to create the folder";
+// logger.error(error, e);
+// throw new Exception(error);
+// } catch (ItemAlreadyExistException e) {
+// String error = "An error occurred on creating folder, " +e.getMessage();
+// logger.error(error, e);
+// throw new Exception(error);
+// } catch (Exception e) {
+// String error = "An error occurred on the sever during creating folder. Try again";
+// logger.error(error, e);
+// throw new Exception(error);
+// }
}
@@ -673,22 +651,24 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
@Override
public Map getGcubePropertiesForWorspaceId(String id) throws Exception {
logger.trace("getGcubePropertiesForWorspaceId "+id);
- try {
-
- if(id==null || id.isEmpty()){
- logger.info(id +" is null or empty returing empty map as GcubeProperties");
- return new HashMap(1);
- }
-
- Workspace workspace = getWorkspace();
- WorkspaceItem item = workspace.getItem(id);
-
- return ItemBuilder.getGcubePropertiesForItem(item);
-
- } catch (Exception e) {
- logger.error("Error during folder retrieving", e);
- throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get folder");
- }
+ //TODO
+ return null;
+// try {
+//
+// if(id==null || id.isEmpty()){
+// logger.info(id +" is null or empty returing empty map as GcubeProperties");
+// return new HashMap(1);
+// }
+//
+// Workspace workspace = getWorkspace();
+// WorkspaceItem item = workspace.getItem(id);
+//
+// return ItemBuilder.getGcubePropertiesForItem(item);
+//
+// } catch (Exception e) {
+// logger.error("Error during folder retrieving", e);
+// throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get folder");
+// }
}
/* (non-Javadoc)
@@ -696,7 +676,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
*/
@Override
public SearchedFolder getFolder(
- Item item, List showableTypes, boolean purgeEmpyFolders,
+ ItemDTO item, List showableTypes, boolean purgeEmpyFolders,
FilterCriteria filterCriteria, boolean loadGcubeProperties,
final int startIndex, final int limit, final int serverStartIndex) throws WorkspaceNavigatorServiceException {
@@ -704,8 +684,8 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
try {
- Workspace workspace = getWorkspace();
- WorkspaceItem folder = workspace.getItem(item.getId());
+ Item folder = Whorespace.getItem(getThreadLocalRequest(), item.getId());
+
int searchStartIndex = startIndex < serverStartIndex? serverStartIndex : startIndex;
//logger.trace("GetFolder - Replyiing folder");
logger.debug("MyLg getFolder searchIndex: "+searchStartIndex+", limit: "+limit);
@@ -714,14 +694,14 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
//TO AVOID SLOW CALL getPATH()
String folderPath = item.getPath()!=null && !item.getPath().isEmpty()?item.getPath():folder.getPath();
- Item itemFolderToReturn = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties, searchStartIndex, limit);
+ ItemDTO itemFolderToReturn = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties, searchStartIndex, limit);
SearchedFolder sf = new SearchedFolder(itemFolderToReturn, startIndex, limit, searchStartIndex, false);
int currentListCount = sf.getFolder().getChildren().size();
logger.debug("MyLg Total item returning is: "+currentListCount);
- WorkspaceFolder hlFolder = (WorkspaceFolder) folder;
- int folderChildrenCount = hlFolder.getChildrenCount(false);
+ FolderItem hlFolder = (FolderItem) folder;
+ int folderChildrenCount = Whorespace.getItemChildrenCount(getThreadLocalRequest(), hlFolder.getId());
logger.debug("MyLg Folder children count is: "+folderChildrenCount);
if(currentListCount == limit || folderChildrenCount==0){
@@ -733,7 +713,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
return sf;
}
- ArrayList
- childrenToReturn = new ArrayList
- (limit);
+ ArrayList childrenToReturn = new ArrayList(limit);
childrenToReturn.addAll(sf.getFolder().getChildren());
int offsetStartIndex = searchStartIndex;
@@ -748,7 +728,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
if(newstartIndex < folderChildrenCount){
//newLimit = limit - childrenToReturn.size();
logger.debug("MyLg getting items with index start: "+newstartIndex + ", limit: "+limit);
- Item newItemFolder = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties, newstartIndex, limit);
+ ItemDTO newItemFolder = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties, newstartIndex, limit);
int diff = limit - currentListCount; //How items are remaining
//int offset = 0;
logger.debug("MyLg new search start: "+newstartIndex + ", diff: "+diff+ ", retrieved: "+newItemFolder.getChildren().size());
@@ -800,31 +780,11 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
}
}
- /* (non-Javadoc)
- * @see org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService#getFolderChildrenCount(org.gcube.portlets.widgets.wsexplorer.shared.Item)
- */
+
@Override
- public int getFolderChildrenCount(Item item) throws WorkspaceNavigatorServiceException {
-
- try {
-
- Workspace workspace = getWorkspace();
- WorkspaceItem wsItem = workspace.getItem(item.getId());
-
- if(wsItem.isFolder()){
- WorkspaceFolder folder = (WorkspaceFolder) wsItem;
- int count = folder.getChildrenCount(false);
- //count = folder.getChildrenCount();
- logger.debug("returning children count time - " + count);
- //return count = 100;
- return count;
- }
-
- return 0;
-
- } catch (Exception e) {
- logger.error("Error during folder retrieving", e);
- throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get count on folder children");
- }
+ public int getFolderChildrenCount(ItemDTO item){
+ return Whorespace.getItemChildrenCount(getThreadLocalRequest(), item.getId());
}
+
+
}
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/AuthorizedUser.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/AuthorizedUser.java
new file mode 100644
index 0000000..7550cd9
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/AuthorizedUser.java
@@ -0,0 +1,45 @@
+package org.gcube.portlets.widgets.wsexplorer.server.stohub;
+
+import org.gcube.vomanagement.usermanagement.model.GCubeUser;
+
+public class AuthorizedUser {
+ private GCubeUser user;
+ private String token;
+ private String context;
+ public AuthorizedUser(GCubeUser user, String token, String context) {
+ super();
+ this.user = user;
+ this.token = token;
+ this.context = context;
+ }
+ public GCubeUser getUser() {
+ return user;
+ }
+ public void setUser(GCubeUser user) {
+ this.user = user;
+ }
+ public String getSecurityToken() {
+ return token;
+ }
+ public void setSecurityToken(String token) {
+ this.token = token;
+ }
+ public String getContext() {
+ return context;
+ }
+ public void setContext(String context) {
+ this.context = context;
+ }
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("AuthorizedUser [user=");
+ builder.append(user);
+ builder.append(", token=");
+ builder.append(token);
+ builder.append(", context=");
+ builder.append(context);
+ builder.append("]");
+ return builder.toString();
+ }
+}
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/Whorespace.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/Whorespace.java
new file mode 100644
index 0000000..95eb84a
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/Whorespace.java
@@ -0,0 +1,88 @@
+package org.gcube.portlets.widgets.wsexplorer.server.stohub;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
+import org.gcube.common.portal.PortalContext;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
+import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
+import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
+import org.gcube.common.storagehub.model.items.Item;
+
+import com.liferay.portal.kernel.log.Log;
+import com.liferay.portal.kernel.log.LogFactoryUtil;
+
+
+public class Whorespace {
+ private static Log _log = LogFactoryUtil.getLog(Whorespace.class);
+ public static final String ACCOUNTING_HL_NODE_NAME = "hl:accounting";
+
+ public static Item getRoot(HttpServletRequest request) {
+ PortalContext pContext = PortalContext.getConfiguration();
+ String userName = pContext.getCurrentUser(request).getUsername();
+ String scope = pContext.getCurrentScope(request);
+ String authorizationToken = pContext.getCurrentUserToken(scope, userName);
+ ScopeProvider.instance.set(scope);
+ SecurityTokenProvider.instance.set(authorizationToken);
+ WorkspaceManagerClient client = AbstractPlugin.workspace().build();
+ Item itemRoot = client.getWorkspace(ACCOUNTING_HL_NODE_NAME);
+ return itemRoot;
+ }
+
+ public static Item getItem(HttpServletRequest request, String itemId) {
+ PortalContext pContext = PortalContext.getConfiguration();
+ String userName = pContext.getCurrentUser(request).getUsername();
+ String scope = pContext.getCurrentScope(request);
+ String authorizationToken = pContext.getCurrentUserToken(scope, userName);
+ ScopeProvider.instance.set(scope);
+ SecurityTokenProvider.instance.set(authorizationToken);
+ ItemManagerClient client = AbstractPlugin.item().build();
+ Item toReturn = client.get(itemId, ACCOUNTING_HL_NODE_NAME);
+ return toReturn;
+ }
+
+ /**
+ *
+ * @param request
+ * @return the VRE Folders Id
+ */
+ public static String getVREFoldersId(HttpServletRequest request) {
+ PortalContext pContext = PortalContext.getConfiguration();
+ String userName = pContext.getCurrentUser(request).getUsername();
+ String scope = pContext.getCurrentScope(request);
+ String authorizationToken = pContext.getCurrentUserToken(scope, userName);
+ ScopeProvider.instance.set(scope);
+ SecurityTokenProvider.instance.set(authorizationToken);
+ String toReturn = "";
+ try {
+ WorkspaceManagerClient wsclient = AbstractPlugin.workspace().build();
+ try {
+ List extends Item> list = wsclient.getVreFolders("hl:accounting");
+ toReturn =list.iterator().next().getParentId();
+ } catch (Exception e) {
+ _log.info("This user has no VRE Folders", e);
+ return null;
+ }
+ }catch (Exception e) {
+ e.printStackTrace();
+ }
+ return toReturn;
+ }
+
+ /**
+ *
+ */
+ public static int getItemChildrenCount(HttpServletRequest request, String itemId) {
+ PortalContext pContext = PortalContext.getConfiguration();
+ String userName = pContext.getCurrentUser(request).getUsername();
+ String scope = pContext.getCurrentScope(request);
+ String authorizationToken = pContext.getCurrentUserToken(scope, userName);
+ ScopeProvider.instance.set(scope);
+ SecurityTokenProvider.instance.set(authorizationToken);
+ ItemManagerClient client = AbstractPlugin.item().build();
+ return client.childrenCount(itemId);
+ }
+}
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/ItemDTO.java
similarity index 88%
rename from src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java
rename to src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/ItemDTO.java
index 3c98f9d..bafc550 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/ItemDTO.java
@@ -16,15 +16,15 @@ import com.google.gwt.user.client.rpc.IsSerializable;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Dec 2, 2015
*/
-public class Item implements IsSerializable, ItemInterface{
+public class ItemDTO implements IsSerializable, ItemInterface{
- protected Item parent;
+ protected ItemDTO parent;
protected String id;
protected String name;
protected ItemType type;
protected String path;
- protected ArrayList
- children;
+ protected ArrayList children;
private String owner;
private boolean isFolder;
private boolean isSpecialFolder = false;
@@ -37,7 +37,7 @@ public class Item implements IsSerializable, ItemInterface{
/**
* Instantiates a new item.
*/
- public Item() {
+ public ItemDTO() {
}
/**
* Instantiates a new item.
@@ -46,12 +46,12 @@ public class Item implements IsSerializable, ItemInterface{
* @param name the name
* @param isFolder the is folder
*/
- public Item(String id, String name, boolean isFolder) {
+ public ItemDTO(String id, String name, boolean isFolder) {
this.id = id;
this.isFolder = isFolder;
this.name = name;
this.type = isFolder?ItemType.FOLDER:ItemType.UNKNOWN_TYPE;
- this.children = new ArrayList