diff --git a/pom.xml b/pom.xml
index 278279b..6cd3566 100644
--- a/pom.xml
+++ b/pom.xml
@@ -110,6 +110,12 @@
+
+ org.gcube.dvos
+ usermanagement-core
+ provided
+
+
log4j
@@ -131,6 +137,8 @@
test
+
+
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java
index a412d06..f0f7d9a 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java
@@ -17,8 +17,10 @@ import org.gcube.portlets.widgets.wsexplorer.client.view.Breadcrumbs;
import org.gcube.portlets.widgets.wsexplorer.client.view.Navigation;
import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
+import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
+import com.github.gwtbootstrap.client.ui.constants.AlertType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.HandlerManager;
@@ -50,9 +52,9 @@ public class WorkspaceExplorerController implements EventHandler {
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getPanel(), breadcrumbs, navigation);
}
- public void loadRoot(){
- wsExplorer.loadRoot();
- }
+// public void loadRoot(){
+// wsExplorer.loadRoot();
+// }
/**
* Bind events.
@@ -76,7 +78,22 @@ public class WorkspaceExplorerController implements EventHandler {
@Override
public void onLoadRoot(LoadRootEvent loadRootEvent) {
wsExplorer.loadRoot();
- breadcrumbs.init();
+
+ workspaceNavigatorService.getItemByCategory(ItemCategory.HOME, new AsyncCallback- () {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ GWT.log(caught.getMessage());
+ breadcrumbs.clear();
+
+ }
+
+ @Override
+ public void onSuccess(Item result) {
+ result.setName(WorkspaceExplorerConstants.HOME_LABEL); //FORCE SET NAME LIKE "HOME_LABEL"
+ breadcrumbs.init(result);
+ }
+ });
}
});
@@ -85,7 +102,19 @@ public class WorkspaceExplorerController implements EventHandler {
@Override
public void onLoadMySpecialFolder(LoadMySpecialFolderEvent loadMySpecialFolderEvent) {
wsExplorer.loadMySpecialFolder();
- breadcrumbs.init();
+
+ workspaceNavigatorService.getItemByCategory(ItemCategory.VRE_FOLDER, new AsyncCallback
- () {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ GWT.log(caught.getMessage());
+ }
+
+ @Override
+ public void onSuccess(Item result) {
+ breadcrumbs.init(result);
+ }
+ });
}
});
}
@@ -100,12 +129,12 @@ public class WorkspaceExplorerController implements EventHandler {
GWT.log("Reload Parent Breadcrumb: [Item id: "+itemIdentifier+"]");
- workspaceNavigatorService.getListParentsByItemIdentifier(itemIdentifier, includeItemAsParent, new AsyncCallback
>() {
+ workspaceNavigatorService.getBreadcrumbsByItemIdentifier(itemIdentifier, includeItemAsParent, new AsyncCallback>() {
@Override
public void onFailure(Throwable caught) {
- // TODO Auto-generated method stub
-
+ GWT.log(caught.getMessage());
+ wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR);
}
@Override
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java
index 3ecdaf0..f932378 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java
@@ -18,7 +18,7 @@ public class WorkspaceExplorerPanel extends DockPanel{
public int width = 550;
public int height = 400;
- public int west_width = 130;
+ public int west_width = 150;
private ScrollPanel westPanel = new ScrollPanel();
private ScrollPanel centerScrollable = new ScrollPanel();
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/load/WorkspaceExplorerLoadDialog.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/load/WorkspaceExplorerLoadDialog.java
index 1d7880c..658ac7d 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/load/WorkspaceExplorerLoadDialog.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/load/WorkspaceExplorerLoadDialog.java
@@ -8,6 +8,7 @@ import java.util.List;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
+import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEvent;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
@@ -23,17 +24,18 @@ import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
-
/**
* The Class WorkspaceExplorerLoadDialog.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Jun 29, 2015
- *
- *
+ * Jun 30, 2015
*/
public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceExplorerNotificationListener{
+ public static final String SELECT = "Select";
+ public static final String MAX_HEIGHT_DIALOG = "500px";
+ public static final int WIDHT_DIALOG = 720;
+
private Button selectButton;
private WorkspaceExplorerLoadDialog INSTANCE = this;
private boolean isSelect = false;
@@ -42,15 +44,61 @@ public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceEx
private WorkspaceExplorerController controller = new WorkspaceExplorerController();
private List listeners = new ArrayList();
+
/**
- * Instantiates a new worspace navigator dialog.
+ * Instantiates a new workspace explorer load dialog.
*
- * @param captionTxt sets the text inside the caption, if null sets "Workspace Explorer"
- *
- * Add {@link WorskpaceExplorerNotificationListener} to receive events
+ * @param captionTxt the caption txt
+ * You can implement {@link WorskpaceExplorerNotificationListener} to receive events
*/
public WorkspaceExplorerLoadDialog(String captionTxt) {
- controller.loadRoot();
+ WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
+ initDialog(captionTxt);
+ }
+
+ /**
+ * Instantiates a new workspace explorer load dialog.
+ *
+ * @param captionTxt the caption txt
+ * @param showOnlyFolders the show only folders
+ */
+ public WorkspaceExplorerLoadDialog(String captionTxt, boolean showOnlyFolders) {
+
+ if(showOnlyFolders){
+ ItemType[] itemsType = new ItemType[2];
+ itemsType[0] = ItemType.ROOT;
+ itemsType[1] = ItemType.FOLDER;
+ setSelectableTypes(itemsType);
+ setShowableTypes(itemsType);
+ }
+
+ WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
+ initDialog(captionTxt);
+ }
+
+ /**
+ * Instantiates a new workspace explorer load dialog.
+ *
+ * @param captionTxt captionTxt sets the text inside the caption, if null sets "Workspace Explorer"
+ * @param selectableTypes the selectable types
+ * @param showableTypes the showable types
+ *
+ * You can implement {@link WorskpaceExplorerNotificationListener} to receive events
+ */
+ public WorkspaceExplorerLoadDialog(String captionTxt, List selectableTypes, List showableTypes) {
+ if(selectableTypes!=null){
+ ItemType[] itemsType = new ItemType[selectableTypes.size()];
+ itemsType = selectableTypes.toArray(itemsType);
+ setSelectableTypes(selectableTypes.toArray(itemsType));
+ }
+
+ if(showableTypes!=null){
+ ItemType[] itemsType = new ItemType[showableTypes.size()];
+ itemsType = showableTypes.toArray(itemsType);
+ setShowableTypes(showableTypes.toArray(itemsType));
+ }
+
+ WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
initDialog(captionTxt);
}
@@ -65,11 +113,10 @@ public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceEx
setAnimation(false);
setCloseVisible(true);
setTitle(this.captionTxt);
- selectButton = new Button("Select");
+ selectButton = new Button(SELECT);
selectButton.setType(ButtonType.PRIMARY);
- setWidth(710);
-// setHeight("650px");
- setMaxHeigth("500px");
+ setWidth(WIDHT_DIALOG);
+ setMaxHeigth(MAX_HEIGHT_DIALOG);
hide(false);
addHideHandler(new HideHandler() {
@@ -80,41 +127,8 @@ public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceEx
notifyAborted();
}
});
-
-
-// DockPanel dock = new DockPanel();
-// dock.setSpacing(5);
- // dock.add(okButton, DockPanel.SOUTH);
- // dock.add(cancel, DockPanel.SOUTH);
-
-// HorizontalPanel hp = new HorizontalPanel();
-// hp.setStyleName("margin-auto");
-////// hp.add(okButton);
-//// hp.setWidth("50%");
-//// hp.setStyleAttribute("margin", "0 auto");
-// hp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
-// cancel.getElement().getStyle().setMarginTop(5.0, Unit.PX);
-//// cancel.getElement().getStyle().setMarginBottom(5.0, Unit.PX);
-//// hp.getElement().getStyle().setMarginLeft("0 auto", Unit.PCT);
-// hp.add(cancel);
-// dock.add(hp, DockPanel.SOUTH);
-//
-// dock.add(controller.getWorkspaceExplorerPanel(), DockPanel.CENTER);
-//
-// dock.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
-// dock.setWidth("100%");
-
-
add(controller.getWorkspaceExplorerPanel());
-
-// okButton.addClickHandler(new ClickHandler() {
-//
-// @Override
-// public void onClick(ClickEvent event) {
-//
-// }
-// });
selectButton.addClickHandler(new ClickHandler() {
@Override
@@ -131,37 +145,7 @@ public class WorkspaceExplorerLoadDialog extends Modal implements HasWorskpaceEx
});
footer.add(selectButton);
-
add(footer);
-
- }
-
-
- /**
- * Instantiates a new workspace explorer load dialog.
- *
- * @param captionTxt captionTxt sets the text inside the caption, if null sets "Workspace Explorer"
- * @param selectableTypes the selectable types
- * @param showableTypes the showable types
- *
- * Add {@link WorskpaceExplorerNotificationListener} to receive events
- */
- public WorkspaceExplorerLoadDialog(String captionTxt, List selectableTypes, List showableTypes) {
- if(selectableTypes!=null){
- ItemType[] itemsType = new ItemType[selectableTypes.size()];
- itemsType = selectableTypes.toArray(itemsType);
- setSelectableTypes(selectableTypes.toArray(itemsType));
- }
-
- if(showableTypes!=null){
- ItemType[] itemsType = new ItemType[showableTypes.size()];
- itemsType = showableTypes.toArray(itemsType);
- setShowableTypes(showableTypes.toArray(itemsType));
- }
-
- controller.loadRoot();
- initDialog(captionTxt);
-
}
/**
* Notify selected item.
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerService.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerService.java
index 77a8f3d..38b946d 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerService.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerService.java
@@ -23,7 +23,7 @@ public interface WorkspaceExplorerService extends RemoteService {
* @return
* @throws Exception
*/
- List- getListParentsByItemIdentifier(String itemIdentifier,
+ List
- getBreadcrumbsByItemIdentifier(String itemIdentifier,
boolean includeItemAsParent) throws Exception;
/**
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java
index 2e35d93..6716301 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java
@@ -66,15 +66,16 @@ public interface WorkspaceExplorerServiceAsync {
boolean purgeEmpyFolders, FilterCriteria filterCriteria,
AsyncCallback
- callback);
+
/**
- * Gets the list parents by item identifier.
+ * Gets the breadcrumbs by item identifier.
*
* @param itemIdentifier the item identifier
* @param includeItemAsParent the include item as parent
- * @param asyncCallback the callback
- * @return the list parents by item identifier
+ * @param asyncCallback the async callback
+ * @return the breadcrumbs by item identifier
*/
- public void getListParentsByItemIdentifier(String itemIdentifier,
+ public void getBreadcrumbsByItemIdentifier(String itemIdentifier,
boolean includeItemAsParent, AsyncCallback
> asyncCallback);
/**
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/Breadcrumbs.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/Breadcrumbs.java
index 97daf52..a7c901b 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/Breadcrumbs.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/Breadcrumbs.java
@@ -45,14 +45,11 @@ public class Breadcrumbs extends Composite {
/**
* Instantiates a new breadcrumbs.
- *
- * @param rootName
- * the root name
*/
public Breadcrumbs() {
initWidget(uiBinder.createAndBindUi(this));
breadcrumbs.setDivider(DIVIDER);
- init();
+// init();
// initBreadcrumb(true);
this.addStyleName("breadcrumbs-navigator");
}
@@ -66,18 +63,27 @@ public class Breadcrumbs extends Composite {
public void setPath(List- parents) {
resetBreadcrumbs();
if (parents != null && parents.size() > 0) {
- hashListItems = new LinkedHashMap();
for (Item parent : parents) {
+// if(!isRootOrSpecialFolder(parent)){ //SKIP ROOT AND SPECIAL FOLDER
+// addNavigationLink(parent);
+// hashListItems.put(parent.getId(), parent);
+// }
- if(!isRootOrSpecialFolder(parent)){ //SKIP ROOT AND SPECIAL FOLDER
+// if(!isRootOrSpecialFolder(parent)){ //SKIP ROOT AND SPECIAL FOLDER
addNavigationLink(parent);
hashListItems.put(parent.getId(), parent);
- }
+// }
}
lastParent = parents.get(parents.size() - 1);
}
}
+ /**
+ * Checks if is root or special folder.
+ *
+ * @param item the item
+ * @return true, if is root or special folder
+ */
private boolean isRootOrSpecialFolder(Item item){
GWT.log(item.getName() +" is root "+(item.getParent()==null));
GWT.log(item.getName() +" is special folder "+item.isSpecialFolder());
@@ -89,35 +95,29 @@ public class Breadcrumbs extends Composite {
*/
private void resetBreadcrumbs() {
breadcrumbs.clear();
+ hashListItems.clear();
}
// @UiHandler("add")
+
/**
* Adds the navigation link.
*
- * @param parent
- * the parent
+ * @param parent the parent
*/
- public void addNavigationLink(Item parent) {
-// if (parent != null && parent.getParent() != null && !parent.isSpecialFolder() && !parent.getParent().isSpecialFolder()) {
- final NavLink navLink = new NavLink(parent.getName());
- navLink.setName(parent.getId());
- breadcrumbs.add(navLink);
+ private void addNavigationLink(Item parent) {
+ final NavLink navLink = new NavLink(parent.getName());
+ navLink.setName(parent.getId());
+ breadcrumbs.add(navLink);
+ navLink.addClickHandler(new ClickHandler() {
- navLink.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
- @Override
- public void onClick(ClickEvent event) {
-
- Item target = hashListItems.get(navLink.getName());
- WorkspaceExplorerController.eventBus.fireEvent(new LoadFolderEvent(target));
- }
- });
-// } else { //IS ROOT OR SPECIAL FOLDER
-// // final NavLink navLink = new NavLink("");
-// NavLink navLink = new NavLink("");
-// breadcrumbs.add(navLink);// INIT
-// }
+ Item target = hashListItems.get(navLink.getName());
+ WorkspaceExplorerController.eventBus.fireEvent(new LoadFolderEvent(target));
+ }
+ });
}
/**
@@ -142,12 +142,23 @@ public class Breadcrumbs extends Composite {
return lastParent;
}
+
/**
- *
+ * Inits the.
+ *
+ * @param item the item
*/
- public void init() {
+ public void init(Item item) {
resetBreadcrumbs();
- breadcrumbs.add(new NavLink("/"));
+ addNavigationLink(item);
+ hashListItems.put(item.getId(), item);
}
+
+ /**
+ * Clear.
+ */
+ public void clear() {
+ resetBreadcrumbs();
+ }
}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java
index cd2ae55..99cdb61 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java
@@ -75,7 +75,7 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
}
- protected void setAlert(String html, AlertType type){
+ public void setAlert(String html, AlertType type){
explorerPanel.clear();
alert.setHTML(html);
alert.setType(type);
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 8ad8103..8218e4f 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
@@ -89,7 +89,7 @@ public class ItemBuilder {
itemName = "My VRE Folders";
}
- Item item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItem.getPath(), workspaceItem.getOwner().getPortalLogin(), workspaceItem.isFolder());
+ Item item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItem.getPath(), UserUtil.getUserFullName(workspaceItem.getOwner().getPortalLogin()), workspaceItem.isFolder());
item.setSharedFolder(workspaceItem.getType()==WorkspaceItemType.SHARED_FOLDER);
/*
@@ -146,9 +146,7 @@ public class ItemBuilder {
* @param item the item
* @return the folder item type
*/
- protected static ItemType getFolderItemType(FolderItem item)
- {
- //System.out.println("getFolderItemType "+item.getFolderItemType().toString());
+ protected static ItemType getFolderItemType(FolderItem item){
return ItemType.valueOf(item.getFolderItemType().toString());
}
@@ -161,8 +159,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, WorkspaceItem item, FilterCriteria filterCriteria) throws InternalErrorException {
boolean mimeTypeCheck = checkAllowedMimeTypes(type, item, filterCriteria.getAllowedMimeTypes());
if (!mimeTypeCheck) return false;
@@ -178,8 +175,7 @@ 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, WorkspaceItem item, List allowedMimeTypes){
if (allowedMimeTypes.size()==0) return true;
if (type == ItemType.EXTERNAL_FILE || type == ItemType.EXTERNAL_IMAGE || type == ItemType.EXTERNAL_PDF_FILE) {
@@ -228,8 +224,10 @@ public class ItemBuilder {
String name = "";
boolean isSpecialFolder = false;
- //MANAGEMENT SHARED FOLDER NAME
- if(wsFolder.isShared() && wsFolder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
+
+ if(wsFolder.isRoot()){ //IS ROOT
+ name = WorkspaceExplorerConstants.HOME_LABEL;
+ }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
@@ -238,8 +236,9 @@ public class ItemBuilder {
isSpecialFolder = true;
}else
name = wsFolder.getName();
-
- Item item = new Item(null, wsFolder.getId(), name, ItemType.FOLDER, "", wsFolder.getOwner().getPortalLogin(), wsFolder.isFolder());
+
+ //BUILDS A SIMPLE ITEM FOR BREADCRUMB
+ Item item = new Item(null, wsFolder.getId(), name, ItemType.FOLDER, "", null, true);
item.setSpecialFolder(isSpecialFolder);
return item;
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/UserUtil.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/UserUtil.java
new file mode 100644
index 0000000..4643cc0
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/UserUtil.java
@@ -0,0 +1,82 @@
+package org.gcube.portlets.widgets.wsexplorer.server;
+
+import org.gcube.vomanagement.usermanagement.UserManager;
+import org.gcube.vomanagement.usermanagement.exception.UserManagementPortalException;
+import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
+import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault;
+import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayUserManager;
+import org.gcube.vomanagement.usermanagement.model.UserModel;
+import org.slf4j.Logger;
+
+import com.liferay.portal.service.UserLocalServiceUtil;
+
+
+
+/**
+ * The Class UserUtil.
+ *
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
+ * Jun 30, 2015
+ */
+public class UserUtil {
+
+ private static UserManager um = new LiferayUserManager();
+ private static Logger logger = org.slf4j.LoggerFactory.getLogger(UserUtil.class);
+
+ /**
+ * Gets the user full name.
+ *
+ * @param portalLogin the portal login
+ * @return the user full name
+ */
+ public static String getUserFullName(String portalLogin){
+ logger.trace("Get user full name for: "+portalLogin);
+ if(portalLogin==null)
+ return "";
+
+ if (isWithinPortal()) { //INTO PORTAL
+ UserModel curr = null;
+ try {
+ try {
+ curr = um.getUserByScreenName(portalLogin);
+ } catch (UserManagementSystemException e) {
+ logger.error("An error occurred in getUserFullName "+e,e);
+ } catch (UserRetrievalFault e) {
+ logger.error("An error occurred in getUserFullName "+e,e);
+ }
+ } catch (UserManagementPortalException ume) {
+ logger.error("An error occurred in getUserFullName "+ume,ume);
+ }catch (Exception e) {
+ logger.error("An error occurred in getUserFullName "+e,e);
+ logger.warn("Return portal login "+portalLogin);
+ return portalLogin;
+ }
+
+ if (curr != null)
+ return curr.getFullname();
+ }else{
+ logger.trace("DEVELOPEMENT MODE ON");
+ logger.trace("Returning portal login: "+portalLogin);
+ return portalLogin;
+ }
+
+ logger.trace("Returning portal login: "+portalLogin);
+ return portalLogin;
+ }
+
+ /**
+ * Checks if is within portal.
+ *
+ * @return true if you're running into the portal, false if in development
+ */
+ public static boolean isWithinPortal() {
+ try {
+ UserLocalServiceUtil.getService();
+ return true;
+ }
+ catch (Exception ex) {
+ logger.trace("Development Mode ON");
+ return false;
+ }
+ }
+}
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 bac428f..392467e 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
@@ -42,6 +42,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
*/
public static final Logger _log = LoggerFactory.getLogger(WorkspaceExplorerServiceImpl.class);
public static final String USERNAME_ATTRIBUTE = "username";
+ public static final String TEST_USER = "francesco.mangiacrapa";
/**
@@ -65,7 +66,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
//for test only
// user = "test.user";
- user = "francesco.mangiacrapa";
+ user = TEST_USER;
httpSession.setAttribute(USERNAME_ATTRIBUTE, user);
ASLSession session = SessionManager.getInstance().getASLSession(sessionID, user);
session.setScope("/gcube/devsec/devVRE");
@@ -182,7 +183,13 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
case HOME:{
WorkspaceItem root = workspace.getRoot();
ASLSession session = getASLSession(this.getThreadLocalRequest().getSession());
- item = new Item(null, root.getId(), session.getUsername()+"'s", ItemType.ROOT, root.getPath(), root.getOwner().getPortalLogin(), root.isFolder());
+ String fullName = UserUtil.getUserFullName(session.getUsername());
+ 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.ROOT, root.getPath(), root.getOwner().getPortalLogin(), root.isFolder());
break;
}
case VRE_FOLDER:{
@@ -269,7 +276,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
}*/
/**
- * Gets the list parents by item identifier.
+ * Gets Breadcrumbs (the list of parents) by item identifier.
*
* @param itemIdentifier the item identifier
* @param includeItemAsParent - if parameter is true and item passed in input is a folder, the folder is included in path returned as last parent
@@ -277,29 +284,35 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
* @throws Exception the exception
*/
@Override
- public List
- getListParentsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception {
+ public List
- getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception {
List
- listParents = new ArrayList
- ();
_log.trace("ListParents By Item Identifier "+ itemIdentifier);
try {
+
Workspace workspace = getWorkspace();
-
WorkspaceItem wsItem = workspace.getItem(itemIdentifier);
_log.trace("workspace retrieve item name: "+wsItem.getName());
-// String nameSpecialFolder = getNameForSpecialFolder();
-
if(includeItemAsParent==true && wsItem.isFolder()){
listParents.add(ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsItem, null));
}
while(wsItem!=null && wsItem.getParent()!=null){
WorkspaceFolder wsFolder = wsItem.getParent();
- listParents.add(ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsFolder, null));
+ Item parent = ItemBuilder.buildFolderForBreadcrumbs((WorkspaceFolder) wsFolder, null);
+ listParents.add(parent);
+ if(parent.isSpecialFolder()) //SKIP HOME PARENT TO MY_SPECIAL_FOLDER
+ break;
wsItem = wsFolder;
}
Collections.reverse(listParents);
+
+ System.out.println("Parent's:");
+ for (Item item : listParents) {
+ System.out.println(item);
+ }
//SET PARENTS
for(int i=0; i