updating sharing..

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@69210 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2013-02-13 17:39:33 +00:00
parent 7fa36d874d
commit b9e0cca41f
13 changed files with 500 additions and 229 deletions

View File

@ -3,6 +3,7 @@ package org.gcube.portlets.user.workspace.client;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import org.gcube.portlets.user.workspace.client.event.AddFolderEvent; import org.gcube.portlets.user.workspace.client.event.AddFolderEvent;
import org.gcube.portlets.user.workspace.client.event.AddFolderEventHandler; import org.gcube.portlets.user.workspace.client.event.AddFolderEventHandler;
@ -79,7 +80,6 @@ import org.gcube.portlets.user.workspace.client.interfaces.SubscriberInterface;
import org.gcube.portlets.user.workspace.client.interfaces.TreeAppControllerInterface; import org.gcube.portlets.user.workspace.client.interfaces.TreeAppControllerInterface;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.model.FolderModel; import org.gcube.portlets.user.workspace.client.model.FolderModel;
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
import org.gcube.portlets.user.workspace.client.model.MessageModel; import org.gcube.portlets.user.workspace.client.model.MessageModel;
import org.gcube.portlets.user.workspace.client.model.SmartFolderModel; import org.gcube.portlets.user.workspace.client.model.SmartFolderModel;
import org.gcube.portlets.user.workspace.client.model.SubTree; import org.gcube.portlets.user.workspace.client.model.SubTree;
@ -129,7 +129,6 @@ import com.google.gwt.user.client.ui.HasWidgets;
*/ */
public class AppControllerExplorer implements EventHandler, TreeAppControllerInterface{ public class AppControllerExplorer implements EventHandler, TreeAppControllerInterface{
public static final GWTWorkspaceServiceAsync rpcWorkspaceService = (GWTWorkspaceServiceAsync) GWT.create(GWTWorkspaceService.class); public static final GWTWorkspaceServiceAsync rpcWorkspaceService = (GWTWorkspaceServiceAsync) GWT.create(GWTWorkspaceService.class);
// public static final GWTWorkspaceServiceAsync rpcWorkspaceService = (GWTWorkspaceServiceAsync) Registry.get(ConstantsExplorer.RPC_WORKSPACE_SERVICE);
private ExplorerPanel explorerPanel; private ExplorerPanel explorerPanel;
private final static HandlerManager eventBus = new HandlerManager(null); private final static HandlerManager eventBus = new HandlerManager(null);
private HashMap<EventsTypeEnum, ArrayList<SubscriberInterface>> subscribers = null; private HashMap<EventsTypeEnum, ArrayList<SubscriberInterface>> subscribers = null;
@ -151,16 +150,10 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
return eventBus; return eventBus;
} }
// public WorkspaceFileServiceAsync getRpcService() {
// return rpcService;
// }
public GWTWorkspaceServiceAsync getRpcWorkspaceService() { public GWTWorkspaceServiceAsync getRpcWorkspaceService() {
return rpcWorkspaceService; return rpcWorkspaceService;
} }
private void bind() { private void bind() {
eventBus.addHandler(RenderForm.TYPE, new RenderFormEventHandler() { eventBus.addHandler(RenderForm.TYPE, new RenderFormEventHandler() {
@ -303,7 +296,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}); });
} }
else{//ITEM IS NOT SHARABLE else{//ITEM IS NOT SHAREABLE
new MessageBoxInfo("Info", "The selected item is not shareable because an ancestor item is already shared"); new MessageBoxInfo("Info", "The selected item is not shareable because an ancestor item is already shared");
} }
@ -1290,7 +1283,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
// ArrayList<FileModel> listFileModel = getListParentsByIdentifier(selectedEvent.getFileTarget().getIdentifier()); // ArrayList<FileModel> listFileModel = getListParentsByIdentifier(selectedEvent.getFileTarget().getIdentifier());
ArrayList<FileModel> listFileModel = new ArrayList<FileModel>(); List<FileModel> listFileModel = new ArrayList<FileModel>();
FileModel item = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(selectedEvent.getFileTarget().getIdentifier()); FileModel item = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(selectedEvent.getFileTarget().getIdentifier());
@ -1396,7 +1389,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
} }
private ArrayList<FileModel> getListParents(ArrayList<FileModel> listParentModel, FileModel item){ private List<FileModel> getListParents(List<FileModel> listParentModel, FileModel item){
getParents(listParentModel, item); getParents(listParentModel, item);
@ -1406,7 +1399,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
} }
private void getParents(ArrayList<FileModel> listParents, FileModel item){ private void getParents(List<FileModel> listParents, FileModel item){
if(item==null || item.getParentFileModel()==null){ if(item==null || item.getParentFileModel()==null){
// listParents.add(item); // listParents.add(item);
@ -1482,6 +1475,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
this.explorerPanel.getAsycTreePanel().setSizeTreePanel(width, height); this.explorerPanel.getAsycTreePanel().setSizeTreePanel(width, height);
this.explorerPanel.getAsycTreePanel().setHeaderTreeVisible(false); this.explorerPanel.getAsycTreePanel().setHeaderTreeVisible(false);
return explorerPanel.getAsycTreePanel(); return explorerPanel.getAsycTreePanel();
} }
@ -1588,7 +1582,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
} }
ArrayList<FileModel> pathParentsList = getListParentsByIdentifier(itemIdentifier); ArrayList<FileModel> pathParentsList = (ArrayList<FileModel>) getListParentsByIdentifierFromTree(itemIdentifier);
// FileModel fileModel = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier); // FileModel fileModel = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier);
// if(fileModel != null && !fileModel.isDirectory()) // if(fileModel != null && !fileModel.isDirectory())
@ -1622,9 +1616,9 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
//********METHODS TO NOTIFY TREE //********METHODS TO NOTIFY TREE
@Override @Override
public ArrayList<FileModel> getListParentsByIdentifier(String itemIdentifier) { public List<FileModel> getListParentsByIdentifierFromTree(String itemIdentifier) {
ArrayList<FileModel> listParentModel = new ArrayList<FileModel>(); List<FileModel> listParentModel = new ArrayList<FileModel>();
FileModel item = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier); FileModel item = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier);
@ -1702,8 +1696,6 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override @Override
public void findItemAndSelectItemInTree(String itemIdentifier) { public void findItemAndSelectItemInTree(String itemIdentifier) {
// boolean itemSelected = this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier);
FileModel fileModel = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier); FileModel fileModel = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier);
if(fileModel==null) { //Loading item by RPC if(fileModel==null) { //Loading item by RPC
@ -1714,21 +1706,6 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
else{ else{
selectItemInTree(itemIdentifier); selectItemInTree(itemIdentifier);
// if(explorerPanel.getAsycTreePanel().isSearch())
// deselecteCurrentSelection();
//
// if(fileModel.isDirectory()){
// if(fileModel.getParentFileModel()!=null)
// this.explorerPanel.getAsycTreePanel().setExpandTreeLevel(fileModel.getParentFileModel().getIdentifier(), true); //expand parent folder
//
// this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier);
//
//// if(explorerPanel.getAsycTreePanel().isSearch())
//// deselecteCurrentSelection();
// }else
// this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier); //select item
} }
} }

View File

@ -2,6 +2,7 @@ package org.gcube.portlets.user.workspace.client.interfaces;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer.ViewSwitchType; import org.gcube.portlets.user.workspace.client.ConstantsExplorer.ViewSwitchType;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
@ -19,19 +20,16 @@ public interface SubscriberInterface {
// public void deleteItem(FileModel item); // public void deleteItem(FileModel item);
// void addFolder(FolderModel itemFolder); // void addFolder(FolderModel itemFolder);
void addedFile(String itemIdentifier, FileModel parent); void addedFile(String itemIdentifier, FileModel parent);
void selectedItem(FileModel item, ArrayList<FileModel> parents); void selectedItem(FileModel item, List<FileModel> parents);
void expandFolderItem(FolderModel itemFolder); void expandFolderItem(FolderModel itemFolder);
void setParentItemSelected(ArrayList <FileModel> listParents); void setParentItemSelected(ArrayList <FileModel> listParents);
boolean renameItem(String itemIdentifier, String newName, String extension); boolean renameItem(String itemIdentifier, String newName, String extension);
boolean deleteItem(String itemIdentifier); boolean deleteItem(String itemIdentifier);
void addedFolder(String itemIdentifier, FileModel parent); void addedFolder(String itemIdentifier, FileModel parent);
void rootLoaded(FileModel root); void rootLoaded(FileModel root);
void smartFolderSelected(String folderId, String category); void smartFolderSelected(String folderId, String category);
void movedItems(String sourceParentIdentifier, FileModel targetParent); void movedItems(String sourceParentIdentifier, FileModel targetParent);
void switchView(ViewSwitchType type); void switchView(ViewSwitchType type);
void refreshFolder(FileModel fileModel); void refreshFolder(FileModel fileModel);
// void updatePrevieMessage(String fromLogin, String subject, String date, String body, List<FileModel> attachs); // void updatePrevieMessage(String fromLogin, String subject, String date, String body, List<FileModel> attachs);

View File

@ -1,6 +1,6 @@
package org.gcube.portlets.user.workspace.client.interfaces; package org.gcube.portlets.user.workspace.client.interfaces;
import java.util.ArrayList; import java.util.List;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
@ -19,11 +19,8 @@ public interface TreeAppControllerInterface {
boolean addFolder(String itemIdentifier, String name, String parentIdentifier); boolean addFolder(String itemIdentifier, String name, String parentIdentifier);
boolean addFile(String itemIdentifier, String name, String parentIdentifier); boolean addFile(String itemIdentifier, String name, String parentIdentifier);
// FileDetailsModel getDetailsOnFileModel(String identifier);
boolean reloadFolderChildren(String itemIdentifier); boolean reloadFolderChildren(String itemIdentifier);
ArrayList<FileModel> getListParentsByIdentifier(String itemIdentifier); List<FileModel> getListParentsByIdentifierFromTree(String itemIdentifier);
// List<ScopeModel> getAllScope();
void setVisualizationType(VisualizationType type); void setVisualizationType(VisualizationType type);
void findItemAndSelectItemInTree(String itemIdentifier); void findItemAndSelectItemInTree(String itemIdentifier);
void expandFolder(String itemIdentifier); void expandFolder(String itemIdentifier);

View File

@ -110,7 +110,7 @@ public interface GWTWorkspaceService extends RemoteService{
public boolean unSharedFolderByFolderSharedId(String folderSharedId) throws Exception; public boolean unSharedFolderByFolderSharedId(String folderSharedId) throws Exception;
// public ArrayList<String> getListParentsByItemIdentifier(String itemIdentifier) throws Exception; public List<FileModel> getListParentsByItemIdentifier(String itemIdentifier) throws Exception;
// public ArrayList<List<FileModel>> getChildrenListsByParentsIdentifier(String itemIdentifier) throws Exception; // public ArrayList<List<FileModel>> getChildrenListsByParentsIdentifier(String itemIdentifier) throws Exception;

View File

@ -114,6 +114,8 @@ public interface GWTWorkspaceServiceAsync {
void unSharedFolderByFolderSharedId(String folderSharedId, void unSharedFolderByFolderSharedId(String folderSharedId,
AsyncCallback<Boolean> callback); AsyncCallback<Boolean> callback);
void getListParentsByItemIdentifier(String itemIdentifier,
AsyncCallback<List<FileModel>> callback);
// void getListParentsByItemIdentifier(String itemIdentifier,AsyncCallback<ArrayList<String>> callback); // void getListParentsByItemIdentifier(String itemIdentifier,AsyncCallback<ArrayList<String>> callback);

View File

@ -544,25 +544,21 @@ public class AsyncTreePanel extends LayoutContainer {
else else
type = "null"; type = "null";
String folderItemType;
if(fileModel.getGXTFolderItemType()!=null)
folderItemType = fileModel.getGXTFolderItemType().toString();
else
folderItemType = null;
//DEBUG //DEBUG
if(fileModel.getParentFileModel()!=null) // String folderItemType;
System.out.println("Item selected " + fileModel.getName() + " Id " + fileModel.getIdentifier() + " Parent " + fileModel.getParentFileModel().getName() + " with id " + fileModel.getParentFileModel().getIdentifier() + " IsDirectory " + ""+fileModel.isDirectory() + " type "+ type + " HLFolderItemType "+folderItemType); // if(fileModel.getGXTFolderItemType()!=null)
else // folderItemType = fileModel.getGXTFolderItemType().toString();
System.out.println("Item selected " + fileModel.getName() + " Id " + fileModel.getIdentifier() + " Parent null " + " IsDirectory " + ""+fileModel.isDirectory()+ " type "+ type +" HLFolderItemType "+folderItemType ); // else
// folderItemType = null;
// if(fileModel.getParentFileModel()!=null)
// System.out.println("Item selected " + fileModel.getName() + " Id " + fileModel.getIdentifier() + " Parent " + fileModel.getParentFileModel().getName() + " with id " + fileModel.getParentFileModel().getIdentifier() + " IsDirectory " + ""+fileModel.isDirectory() + " type "+ type + " HLFolderItemType "+folderItemType);
// else
// System.out.println("Item selected " + fileModel.getName() + " Id " + fileModel.getIdentifier() + " Parent null " + " IsDirectory " + ""+fileModel.isDirectory()+ " type "+ type +" HLFolderItemType "+folderItemType );
System.out.println("Item selected" + fileModel); System.out.println("Item selected" + fileModel);
eventBus.fireEvent(new SelectedItemEvent(fileModel)); eventBus.fireEvent(new SelectedItemEvent(fileModel));
// treePanel.findNode(getFileModelByIdentifier(fileModel.getIdentifier()));
// cp.setVScrollPosition(treePanel.findNode(objEvent.getSelectedItem().))
} }
@ -646,12 +642,6 @@ public class AsyncTreePanel extends LayoutContainer {
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
TreeNode node = be.getNode(); TreeNode node = be.getNode();
// FileModel file = treePanel.getSelectionModel().getSelectedItem();
//
// @SuppressWarnings("rawtypes")
// treePanel.TreeNode nodes = (TreeNode) treePanel.getSelectionModel().getSelectedItem();
//
// be.setItem(treePanel.getSelectionModel().getSelectedItem());
if(node!=null){ if(node!=null){
System.out.println("Menu on: " + node.getModel().get(ConstantsExplorer.NAME)); System.out.println("Menu on: " + node.getModel().get(ConstantsExplorer.NAME));
@ -665,8 +655,6 @@ public class AsyncTreePanel extends LayoutContainer {
List<FileModel> listSelected = treePanel.getSelectionModel().getSelectedItems(); List<FileModel> listSelected = treePanel.getSelectionModel().getSelectedItems();
// //
if (listSelected != null && listSelected.size() > 0) { if (listSelected != null && listSelected.size() > 0) {
// FileModel selectedItem = listSelected.get(0); //get first element
manageContextMenu(); manageContextMenu();
} }
// //
@ -741,15 +729,10 @@ public class AsyncTreePanel extends LayoutContainer {
} }
private void loadTreeLevelFromWorkspace(final FolderModel folder){ private void loadTreeLevelFromWorkspace(final FolderModel folder){
System.out.println("Start RPC - getFolderChildren"); System.out.println("Start RPC - getFolderChildren");
// Log.info("Start RPC - getFolderChildren"); // Log.info("Start RPC - getFolderChildren");
// final CountTimer count = new CountTimer(1000); // final CountTimer count = new CountTimer(1000);
AppControllerExplorer.rpcWorkspaceService.getFolderChildren(folder, new AsyncCallback<List<FileModel>>(){ AppControllerExplorer.rpcWorkspaceService.getFolderChildren(folder, new AsyncCallback<List<FileModel>>(){
@Override @Override
@ -761,10 +744,6 @@ public class AsyncTreePanel extends LayoutContainer {
@Override @Override
public void onSuccess(List<FileModel> result) { public void onSuccess(List<FileModel> result) {
//
// be.getTargetEl().setIconStyle("");
// be.getNode().getModel().set("icon", Resources.getIconAudio());
// be.getNode().getModel().set("overlayIconUrl", Resources.getIconAudio());
// Log.info("End RPC - getFolderChildren time " + count.getTime()); // Log.info("End RPC - getFolderChildren time " + count.getTime());
@ -952,12 +931,8 @@ public class AsyncTreePanel extends LayoutContainer {
if (record != null) { if (record != null) {
FileModel item = (FileModel) record.getModel(); FileModel item = (FileModel) record.getModel();
// FolderModel parent = (FolderModel) treePanel.getStore().getParent(item);
treePanel.getStore().remove(item); treePanel.getStore().remove(item);
// treePanel.getStore().getParent((FileModel) record.getModel());
// treePanel.getSelectionModel().select(parent, true); //Select the parent of the item deleted
return true; return true;
} else } else
System.out.println("Record Error: file target with " System.out.println("Record Error: file target with "

View File

@ -31,25 +31,19 @@ import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem; import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem; import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Window;
public class ContextMenuTree { public class ContextMenuTree {
private Menu contextMenu = new Menu(); private Menu contextMenu = new Menu();
// private TreePanel<FileModel> treePanel = null;
private HandlerManager eventBus = AppControllerExplorer.getEventBus(); private HandlerManager eventBus = AppControllerExplorer.getEventBus();
private List<FileModel> listSelectedItems = null; private List<FileModel> listSelectedItems = null;
public ContextMenuTree() { public ContextMenuTree() {
//Context Menu
// Menu contextMenu = new Menu();
this.contextMenu.setWidth(140); this.contextMenu.setWidth(140);
// this.treePanel = treePanel;
this.listSelectedItems = new ArrayList<FileModel>(); this.listSelectedItems = new ArrayList<FileModel>();
createContextMenu(); createContextMenu();
// return contextMenu;
} }
@ -88,24 +82,17 @@ public class ContextMenuTree {
openUrl.addSelectionListener(new SelectionListener<MenuEvent>() { openUrl.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// FileModel selected = treePanel.getSelectionModel().getSelectedItem();
FileModel selected = listSelectedItems.get(0); FileModel selected = listSelectedItems.get(0);
// if(selected!=null)
// eventBus.fireEvent(new ImagePreviewEvent(selected, ce.getClientX(), ce.getClientY()));
if(selected!=null){ if(selected!=null){
eventBus.fireEvent(new OpenUrlEvent(selected)); eventBus.fireEvent(new OpenUrlEvent(selected));
} }
//clearListSelectedItems();
} }
}); });
contextMenu.add(openUrl); contextMenu.add(openUrl);
// contextMenu.add(new SeparatorMenuItem());
//Open Report Template //Open Report Template
@ -126,7 +113,6 @@ public class ContextMenuTree {
}); });
contextMenu.add(openReportTemplate); contextMenu.add(openReportTemplate);
// contextMenu.add(new SeparatorMenuItem());
//Open Report Template //Open Report Template
@ -138,20 +124,12 @@ public class ContextMenuTree {
openReport.addSelectionListener(new SelectionListener<MenuEvent>() { openReport.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// FileModel selected =
// treePanel.getSelectionModel().getSelectedItem();
FileModel selected = listSelectedItems.get(0); FileModel selected = listSelectedItems.get(0);
// if(selected!=null)
// eventBus.fireEvent(new ImagePreviewEvent(selected,
// ce.getClientX(), ce.getClientY()));
if (selected != null){ if (selected != null){
eventBus.fireEvent(new OpenReportsEvent(selected)); eventBus.fireEvent(new OpenReportsEvent(selected));
} }
//clearListSelectedItems();
} }
}); });
@ -170,18 +148,12 @@ public class ContextMenuTree {
insertFolder.addSelectionListener(new SelectionListener<MenuEvent>() { insertFolder.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// final FileModel sourceFileModel = treePanel.getSelectionModel().getSelectedItem();
final FileModel sourceFileModel = listSelectedItems.get(0); final FileModel sourceFileModel = listSelectedItems.get(0);
if (sourceFileModel != null) { if (sourceFileModel != null) {
// final FolderModel parentFileModel = (FolderModel) treePanel.getStore().getParent(sourceFileModel); // TODO parent of item
eventBus.fireEvent(new AddFolderEvent(sourceFileModel, sourceFileModel.getParentFileModel())); eventBus.fireEvent(new AddFolderEvent(sourceFileModel, sourceFileModel.getParentFileModel()));
} }
//clearListSelectedItems();
} }
}); });
@ -205,7 +177,6 @@ public class ContextMenuTree {
}); });
contextMenu.add(createShareFolder); contextMenu.add(createShareFolder);
// contextMenu.add(new SeparatorMenuItem());
//Add Url //Add Url
@ -217,7 +188,6 @@ public class ContextMenuTree {
addUrl.addSelectionListener(new SelectionListener<MenuEvent>() { addUrl.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// FileModel selected = treePanel.getSelectionModel().getSelectedItem();
FileModel selected = listSelectedItems.get(0); FileModel selected = listSelectedItems.get(0);
FileModel parent = getDirectoryOrParent(selected); FileModel parent = getDirectoryOrParent(selected);
@ -226,7 +196,6 @@ public class ContextMenuTree {
eventBus.fireEvent(new CreateUrlEvent(null, parent)); eventBus.fireEvent(new CreateUrlEvent(null, parent));
} }
//clearListSelectedItems();
} }
}); });
@ -240,13 +209,11 @@ public class ContextMenuTree {
copy.addSelectionListener(new SelectionListener<MenuEvent>() { copy.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel target : listSelectedItems) { for (FileModel target : listSelectedItems) {
if(target.getIdentifier()!=null){ if(target.getIdentifier()!=null){
CopyAndPaste.copy(target.getIdentifier()); CopyAndPaste.copy(target.getIdentifier());
} }
} }
//clearListSelectedItems();
} }
}); });
@ -260,30 +227,18 @@ public class ContextMenuTree {
paste.addSelectionListener(new SelectionListener<MenuEvent>() { paste.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel target : listSelectedItems) { for (FileModel target : listSelectedItems) {
FileModel parentTarget = getDirectoryOrParent(target); FileModel parentTarget = getDirectoryOrParent(target);
if(parentTarget!=null){ if(parentTarget!=null){
// FileModel source = treePanel.getStore().findModel(ConstantsExplorer.IDENTIFIER, CopyAndPaste.getCopiedfileModelId());
//// FileModel parentSource = source.getParentFileModel();
// if(parentSource.getIdentifier() != parentTarget.getIdentifier()){
eventBus.fireEvent(new PasteItemEvent(CopyAndPaste.getCopiedfileModelId(), parentTarget.getIdentifier())); eventBus.fireEvent(new PasteItemEvent(CopyAndPaste.getCopiedfileModelId(), parentTarget.getIdentifier()));
CopyAndPaste.setCopiedfileModelId(null); CopyAndPaste.setCopiedfileModelId(null);
// }
// else
// new MessageBoxAlert("Error", "desti", null);
} }
} }
//clearListSelectedItems();
} }
}); });
@ -296,14 +251,12 @@ public class ContextMenuTree {
share.addSelectionListener(new SelectionListener<MenuEvent>() { share.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel target : listSelectedItems) { for (FileModel target : listSelectedItems) {
if(target.getIdentifier()!=null){ if(target.getIdentifier()!=null){
eventBus.fireEvent(new CreateSharedFolderEvent(target, target.getParentFileModel(),false)); eventBus.fireEvent(new CreateSharedFolderEvent(target, target.getParentFileModel(),false));
} }
} }
//clearListSelectedItems();
} }
}); });
@ -317,14 +270,12 @@ public class ContextMenuTree {
unShare.addSelectionListener(new SelectionListener<MenuEvent>() { unShare.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel target : listSelectedItems) { for (FileModel target : listSelectedItems) {
if(target.getIdentifier()!=null){ if(target.getIdentifier()!=null){
eventBus.fireEvent( new UnShareFolderEvent(target)); eventBus.fireEvent( new UnShareFolderEvent(target));
} }
} }
//clearListSelectedItems();
} }
}); });
@ -339,15 +290,12 @@ public class ContextMenuTree {
rename.addSelectionListener(new SelectionListener<MenuEvent>() { rename.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel target : listSelectedItems) { for (FileModel target : listSelectedItems) {
if(target.getIdentifier()!=null){ if(target.getIdentifier()!=null){
eventBus.fireEvent(new RenameItemEvent(target)); eventBus.fireEvent(new RenameItemEvent(target));
// //clearListSelectedItems();
} }
} }
//clearListSelectedItems();
} }
}); });
@ -361,13 +309,11 @@ public class ContextMenuTree {
remove.addSelectionListener(new SelectionListener<MenuEvent>() { remove.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel sel : listSelectedItems) { for (FileModel sel : listSelectedItems) {
eventBus.fireEvent(new DeleteItemEvent(sel)); eventBus.fireEvent(new DeleteItemEvent(sel));
} }
//clearListSelectedItems();
} }
}); });
@ -383,7 +329,6 @@ public class ContextMenuTree {
show.addSelectionListener(new SelectionListener<MenuEvent>() { show.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (final FileModel sel : listSelectedItems) { for (final FileModel sel : listSelectedItems) {
eventBus.fireEvent(new FileDownloadEvent(sel.getIdentifier(), sel.getName(), DownloadType.SHOW)); eventBus.fireEvent(new FileDownloadEvent(sel.getIdentifier(), sel.getName(), DownloadType.SHOW));
@ -404,14 +349,11 @@ public class ContextMenuTree {
viewWebDav.addSelectionListener(new SelectionListener<MenuEvent>() { viewWebDav.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (final FileModel sel : listSelectedItems) for (final FileModel sel : listSelectedItems)
eventBus.fireEvent(new WebDavUrlEvent(sel.getIdentifier())); eventBus.fireEvent(new WebDavUrlEvent(sel.getIdentifier()));
//clearListSelectedItems();
} }
}); });
@ -427,14 +369,9 @@ public class ContextMenuTree {
sendTo.addSelectionListener(new SelectionListener<MenuEvent>() { sendTo.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
if(listSelectedItems!=null && listSelectedItems.size()>0) if(listSelectedItems!=null && listSelectedItems.size()>0)
eventBus.fireEvent(new SendMessageEvent(listSelectedItems)); eventBus.fireEvent(new SendMessageEvent(listSelectedItems));
//clearListSelectedItems();
} }
}); });
@ -451,22 +388,13 @@ public class ContextMenuTree {
upload.addSelectionListener(new SelectionListener<MenuEvent>() { upload.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (final FileModel sel : listSelectedItems) { for (final FileModel sel : listSelectedItems) {
FileModel parent = getDirectoryOrParent(sel); FileModel parent = getDirectoryOrParent(sel);
// if(sel.isDirectory())
// parent = sel;
// else
// parent = sel.getParentFileModel();
eventBus.fireEvent(new FileUploadEvent(parent, UploadType.FILE)); eventBus.fireEvent(new FileUploadEvent(parent, UploadType.FILE));
} }
//clearListSelectedItems();
} }
}); });
@ -482,23 +410,13 @@ public class ContextMenuTree {
uploadArchive.addSelectionListener(new SelectionListener<MenuEvent>() { uploadArchive.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel sel : listSelectedItems) { for (FileModel sel : listSelectedItems) {
FileModel parent = getDirectoryOrParent(sel); FileModel parent = getDirectoryOrParent(sel);
// if(sel.isDirectory())
// parent = sel;
// else
// parent = sel.getParentFileModel();
eventBus.fireEvent(new FileUploadEvent(parent, UploadType.ARCHIVE)); eventBus.fireEvent(new FileUploadEvent(parent, UploadType.ARCHIVE));
} }
//clearListSelectedItems();
} }
}); });
@ -513,25 +431,9 @@ public class ContextMenuTree {
downloadArchive.addSelectionListener(new SelectionListener<MenuEvent>() { downloadArchive.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel sel : listSelectedItems) { for (FileModel sel : listSelectedItems) {
// FolderModel parent = null;
//
// if(sel.isDirectory())
// parent = (FolderModel) sel;
// else
// parent = (FolderModel) store.getParent(sel);
// Window.alert("Upload nella seguente directory: " + parent.getName());
eventBus.fireEvent(new FileDownloadEvent(sel.getIdentifier(), sel.getName(), DownloadType.DOWNLOAD)); eventBus.fireEvent(new FileDownloadEvent(sel.getIdentifier(), sel.getName(), DownloadType.DOWNLOAD));
} }
//clearListSelectedItems();
} }
}); });
@ -547,13 +449,9 @@ public class ContextMenuTree {
refreshItem.addSelectionListener(new SelectionListener<MenuEvent>() { refreshItem.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) { public void componentSelected(MenuEvent ce) {
// List<FileModel> selected = treePanel.getSelectionModel().getSelectedItems();
for (FileModel sel : listSelectedItems) { for (FileModel sel : listSelectedItems) {
eventBus.fireEvent(new RefreshFolderEvent(sel)); eventBus.fireEvent(new RefreshFolderEvent(sel));
} }
//clearListSelectedItems();
} }
}); });
@ -568,8 +466,6 @@ public class ContextMenuTree {
public void openContextMenuOnItem(FileModel targetFileModel, int posX, int posY) { public void openContextMenuOnItem(FileModel targetFileModel, int posX, int posY) {
// this.contextMenuPosX = posX;
// this.contextMenuPosY = posY;
clearListSelectedItems(); clearListSelectedItems();
listSelectedItems.add(0, targetFileModel); listSelectedItems.add(0, targetFileModel);

View File

@ -1229,6 +1229,13 @@ public class GWTWorkspaceBuilder {
return fileModel; return fileModel;
} }
/**
*
* @param wsFolder
* @param parent
* @return
* @throws InternalErrorException
*/
public FolderModel buildGXTFolderModelItem(WorkspaceFolder wsFolder, FileModel parent) throws InternalErrorException { public FolderModel buildGXTFolderModelItem(WorkspaceFolder wsFolder, FileModel parent) throws InternalErrorException {
return new FolderModel(wsFolder.getId(),wsFolder.getName(), parent, true, wsFolder.isShared()); return new FolderModel(wsFolder.getId(),wsFolder.getName(), parent, true, wsFolder.isShared());
@ -1431,11 +1438,11 @@ public class GWTWorkspaceBuilder {
} }
//THIS IS A TEST //THIS IS A TEST
listContactsModel.add(new InfoContactModel("1", "Federico.Test", "Federico de Faveri")); listContactsModel.add(new InfoContactModel("Federico.Test", "Federico.Test", "Federico de Faveri"));
listContactsModel.add(new InfoContactModel("2", "Antonio.Test", "Antonio Gioia")); listContactsModel.add(new InfoContactModel("Antonio.Test", "Antonio.Test", "Antonio Gioia"));
listContactsModel.add(new InfoContactModel("3", "Fabio.Test", "Fabio Sinibaldi")); listContactsModel.add(new InfoContactModel("Fabio.Test", "Fabio.Test", "Fabio Sinibaldi"));
listContactsModel.add(new InfoContactModel("4", Util.TEST_USER, Util.TEST_USER)); listContactsModel.add(new InfoContactModel(Util.TEST_USER, Util.TEST_USER, Util.TEST_USER));
listContactsModel.add(new InfoContactModel("5", "Massimiliano.Assante", "Massimiliano Assante")); listContactsModel.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante"));
return listContactsModel; return listContactsModel;
} }

View File

@ -38,6 +38,7 @@ import org.gcube.portlets.user.workspace.client.model.SmartFolderModel;
import org.gcube.portlets.user.workspace.client.model.SubTree; import org.gcube.portlets.user.workspace.client.model.SubTree;
import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService; import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem; import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer;
import org.gcube.portlets.user.workspace.server.util.AllScope; import org.gcube.portlets.user.workspace.server.util.AllScope;
import org.gcube.portlets.user.workspace.server.util.Util; import org.gcube.portlets.user.workspace.server.util.Util;
@ -55,7 +56,8 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
public static final String LAST_OPEN_FOLDER_ATTRIBUTE = "WORKSPACE.LAST_OPEN_FOLDER"; public static final String LAST_OPEN_FOLDER_ATTRIBUTE = "WORKSPACE.LAST_OPEN_FOLDER";
public static final String SELECTION_STATE_ATTRIBUTE = "WORKSPACE.SELECTION_STATE"; public static final String SELECTION_STATE_ATTRIBUTE = "WORKSPACE.SELECTION_STATE";
protected GCUBELog workspaceLogger = new GCUBELog("GWTWorkspaceServiceImpl"); protected GCUBEClientLog workspaceLogger = new GCUBEClientLog("GWTWorkspaceServiceImpl");
protected GWTWorkspaceBuilder getGWTWorkspaceBuilder() protected GWTWorkspaceBuilder getGWTWorkspaceBuilder()
{ {
@ -67,6 +69,15 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
return Util.getWorkspace(this.getThreadLocalRequest().getSession()); return Util.getWorkspace(this.getThreadLocalRequest().getSession());
} }
protected NotificationsProducer getNotificationProducer(){
return Util.getNotificationProducer(Util.getAslSession(this.getThreadLocalRequest().getSession()));
}
protected String getUserId(){
return Util.getUserId(this.getThreadLocalRequest().getSession());
}
@Override @Override
public FolderModel getRootForTree() throws Exception { public FolderModel getRootForTree() throws Exception {
@ -638,7 +649,6 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
return builder.buildGWTWorkspaceImage(item, isInteralImage, fullDetails); return builder.buildGWTWorkspaceImage(item, isInteralImage, fullDetails);
// workspaceLogger.trace(" children "+wsFolder.getChildren().size()); // workspaceLogger.trace(" children "+wsFolder.getChildren().size());
// return builder.buildGWTWorkspaceItemsForGrid(wsFolder.getChildren(), null); // return builder.buildGWTWorkspaceItemsForGrid(wsFolder.getChildren(), null);
} catch (Exception e) { } catch (Exception e) {
@ -710,11 +720,11 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
GCUBEClientLog logger = new GCUBEClientLog(GWTWorkspaceServiceImpl.class); GCUBEClientLog logger = new GCUBEClientLog(GWTWorkspaceServiceImpl.class);
logger.info("create url in parent id: "+parentFileModel.getIdentifier()); logger.info("create url in parent id: "+parentFileModel.getIdentifier());
//DEBUG
// workspaceLogger.trace("Name " + name); // workspaceLogger.trace("Name " + name);
// workspaceLogger.trace("description " + description); // workspaceLogger.trace("description " + description);
// workspaceLogger.trace("url " + url); // workspaceLogger.trace("url " + url);
// workspaceLogger.trace("parentFileModel " + parentFileModel.getIdentifier() + " " + parentFileModel.getName()); // workspaceLogger.trace("parentFileModel " + parentFileModel.getIdentifier() + " " + parentFileModel.getName());
// if(description == null) // if(description == null)
// description = ""; // description = "";
@ -1313,6 +1323,13 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
} }
boolean created = sharedFolder==null?false:true; boolean created = sharedFolder==null?false:true;
if(created){
NotificationsProducer np = getNotificationProducer();
np.notifyFolderSharing(listContacts, sharedFolder);
}
return created; return created;
} catch (Exception e) { } catch (Exception e) {
@ -1344,9 +1361,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
return builder.buildGxtInfoContactFromPortalLogin(listUser); return builder.buildGxtInfoContactFromPortalLogin(listUser);
} }
else else{
workspaceLogger.trace("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER); workspaceLogger.trace("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER);
System.out.println("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER);
}
return new ArrayList<InfoContactModel>(); return new ArrayList<InfoContactModel>();
} catch (Exception e) { } catch (Exception e) {
@ -1364,7 +1382,6 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
try { try {
Workspace workspace = getWorkspace(); Workspace workspace = getWorkspace();
WorkspaceItem wsItem = workspace.getItem(folderSharedId); WorkspaceItem wsItem = workspace.getItem(folderSharedId);
if(wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ if(wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
@ -1374,15 +1391,72 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
WorkspaceFolder unSharedFolder = wsFolder.unShare(); WorkspaceFolder unSharedFolder = wsFolder.unShare();
unShared = unSharedFolder==null?false:true; unShared = unSharedFolder==null?false:true;
System.out.println("unShared is "+unShared);
if(unShared){
NotificationsProducer np = getNotificationProducer();
List<InfoContactModel> contacts = getListUserSharedByFolderSharedId(folderSharedId);
// //TODO REMOVE THIS
contacts = new ArrayList<InfoContactModel>();
contacts.add(new InfoContactModel("francesco.mangiacrapa", "francesco.mangiacrapa", "Francesco Mangiacrapa"));
np.notifyFolderUnSharing(contacts, wsFolder);
}
} }
else else
workspaceLogger.trace("the item with id: "+folderSharedId+ "is not "+WorkspaceItemType.SHARED_FOLDER); workspaceLogger.trace("the item with id: "+folderSharedId+ "is not "+WorkspaceItemType.SHARED_FOLDER);
} catch (Exception e) { } catch (Exception e) {
workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e); workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e);
e.printStackTrace();
throw new Exception(e.getMessage()); throw new Exception(e.getMessage());
} }
return unShared; return unShared;
} }
@Override
public List<FileModel> getListParentsByItemIdentifier(String itemIdentifier) throws Exception {
List<FileModel> listParents = new ArrayList<FileModel>();
workspaceLogger.trace("get List Parents By Item Identifier "+ itemIdentifier);
try {
Workspace workspace = getWorkspace();
WorkspaceItem wsItem = workspace.getItem(itemIdentifier);
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
while(wsItem!=null && wsItem.getParent()!=null){
WorkspaceFolder wsFolder = wsItem.getParent();
listParents.add(builder.buildGXTFolderModelItem(wsFolder, null));
wsItem = wsFolder;
}
Collections.reverse(listParents);
//SET PARENTS
for(int i=0; i<listParents.size()-1; i++){
FileModel parent = listParents.get(i);
FileModel fileModel = listParents.get(i+1);
fileModel.setParentFileModel(parent);
}
workspaceLogger.trace("list parents return size: "+listParents.size());
} catch (Exception e) {
workspaceLogger.error("Error in unSharedFolderByFolderSharedId ", e);
e.printStackTrace();
throw new Exception(e.getMessage());
}
return listParents;
}
} }

View File

@ -0,0 +1,143 @@
/**
*
*/
package org.gcube.portlets.user.workspace.server.notifications;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import org.apache.log4j.Logger;
import org.gcube.common.core.contexts.GHNContext;
import org.gcube.common.core.informationsystem.client.AtomicCondition;
import org.gcube.common.core.informationsystem.client.ISClient;
import org.gcube.common.core.informationsystem.client.queries.GCUBERIQuery;
import org.gcube.common.core.scope.GCUBEScope;
import com.liferay.portal.model.Organization;
import com.liferay.portal.service.OrganizationLocalServiceUtil;
/**
* @author "Federico De Faveri defaveri@isti.cnr.it"
*
*/
public class FeedScheduler {
protected Timer scheduler;
protected Map<GCUBEScope, NotificationsProducer> scheduledScopes;
protected Logger logger = Logger.getLogger(FeedScheduler.class);
public FeedScheduler(long refreshTime)
{
scheduledScopes = new HashMap<GCUBEScope, NotificationsProducer>();
scheduler = new Timer(true);
scheduler.schedule(new TimerTask() {
@Override
public void run() {
checkScopes();
}
}, 0, refreshTime);
}
public void schedule() throws Exception
{
List<GCUBEScope> scopes = getAvailableScopes();
for (GCUBEScope scope:scopes) {
logger.trace("checking scope: "+scope);
if (isServicePresentInScope(scope)) {
logger.trace("service present");
schedule(scope);
} else logger.trace("service not present");
}
checkScopes();
}
protected void schedule(GCUBEScope scope)
{
// if (!scheduledScopes.containsKey(scope)) {
// NotificationsProducer feeder = new NotificationsProducer(scope);
// scheduledScopes.put(scope, feeder);
// }
}
protected void checkScopes()
{
for (NotificationsProducer feeder:scheduledScopes.values()) {
try {
// feeder.checkOperatorsForFeed();
} catch (Exception e) {
}
}
}
protected boolean isServicePresentInScope(GCUBEScope scope) throws Exception
{
ISClient isClient = GHNContext.getImplementation(ISClient.class);
GCUBERIQuery query = isClient.getQuery(GCUBERIQuery.class);
query.addAtomicConditions(new AtomicCondition("/Profile/ServiceName", "statistical-manager-gcubews"));
query.addAtomicConditions(new AtomicCondition("/Profile/ServiceClass", "DataAnalysis"));
return isClient.execute(query, scope).size()>0;
}
protected static List<GCUBEScope> getAvailableScopes() throws Exception
{
//FIXME for test only
//return Arrays.asList(GCUBEScope.getScope("/gcube/devsec/devVRE"));
GHNContext ctx = GHNContext.getContext();
String rootScopeName = (String) ctx.getProperty(GHNContext.INFRASTRUCTURE_NAME, true);
GCUBEScope rootScope = GCUBEScope.getScope("/"+rootScopeName);
List<GCUBEScope> scopes = findAvailableScopes(rootScope);
return scopes;
}
protected static List<GCUBEScope> findAvailableScopes(GCUBEScope infrastructure) throws Exception {
List<GCUBEScope> scopes = new ArrayList<GCUBEScope>();
//************* PORTAL MODE, Checking organizations
scopes.add(infrastructure);
///************* GET ROOT ORGANIZATION
List<Organization> organizations = OrganizationLocalServiceUtil.getOrganizations(0, OrganizationLocalServiceUtil.getOrganizationsCount());
Organization rootOrganization = null;
for (Organization organization : organizations) {
if (organization.getName().equals(infrastructure.getName()) ) {
rootOrganization = organization;
break;
}
}
if(rootOrganization==null) throw new Exception("Unable to find infrastructure scope "+infrastructure.getName()+" among organizations");
//************** GET VO
for (Organization vOrg : rootOrganization.getSuborganizations()){
String VOScopeString="/"+vOrg.getParentOrganization().getName()+"/"+vOrg.getName();
try{
scopes.add(GCUBEScope.getScope(VOScopeString));
for (Organization vre : vOrg.getSuborganizations()){
String VREScopeString=VOScopeString+"/"+vre.getName();
try{
scopes.add(GCUBEScope.getScope(VREScopeString));
}catch(Exception e){
}
}
}catch(Exception e){
}
//************* GET VRE
}
return scopes;
}
public static void main(String[] args) throws Exception
{
FeedScheduler scheduler = new FeedScheduler(1000);
scheduler.schedule();
}
}

View File

@ -0,0 +1,159 @@
/**
*
*/
package org.gcube.portlets.user.workspace.server.notifications;
import java.util.List;
import org.apache.log4j.Logger;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.applicationsupportlayer.social.NotificationsManager;
import org.gcube.common.core.scope.GCUBEScope;
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceFolder;
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
import org.gcube.portlets.user.workspace.server.util.Util;
/**
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*
*/
public class NotificationsProducer {
protected Logger logger = Logger.getLogger(NotificationsProducer.class);
protected GCUBEScope scope;
protected NotificationsManager notificationsMng;
protected ASLSession aslSession;
protected String userId;
/**
*
* @param aslSession
*/
public NotificationsProducer(ASLSession aslSession) {
this.notificationsMng = Util.getNotificationManager(aslSession);
this.aslSession = aslSession;
this.userId = aslSession.getUsername();
}
public NotificationsManager getNotificationsMng() {
return notificationsMng;
}
public void setNotificationMng(NotificationsManager notificationMng) {
this.notificationsMng = notificationMng;
}
public ASLSession getAslSession() {
return aslSession;
}
/**
* Runs a new thread to notify the contacts passed in input
* @param listContacts
* @param sharedFolder
*/
public void notifyFolderSharing(final List<InfoContactModel> listContacts, final WorkspaceFolder sharedFolder) {
new Thread(){
@Override
public void run() {
for (InfoContactModel infoContactModel : listContacts) {
try{
//NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER
if(infoContactModel.getId().compareTo(userId)!=0){
logger.trace("Send notify folder sharing for user "+infoContactModel.getId());
boolean notify = notificationsMng.notifyFolderSharing(infoContactModel.getId(), sharedFolder);
if(!notify)
logger.error("An error occured when notify user: "+infoContactModel.getId());
}
}catch (Exception e) {
logger.error("An error occured in notifyFolderSharing ", e);
e.printStackTrace();
}
}
logger.trace("share notifications is completed");
}
}.start();
}
/**
* Runs a new thread to notify the contacts passed in input
* @param listContacts
* @param sharedFolder
*/
public void notifyFolderUnSharing(final List<InfoContactModel> listContacts, final WorkspaceFolder sharedFolder) {
new Thread() {
@Override
public void run() {
printContacts(listContacts);
for (InfoContactModel infoContactModel : listContacts) {
try{
//NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER
if(infoContactModel.getId().compareTo(userId)!=0){
logger.trace("Send notify folder un share user "+infoContactModel.getId());
System.out.println("Send notify folder un share user "+infoContactModel.getId());
boolean notify = notificationsMng.notifyFolderRemovedUser(infoContactModel.getId(), sharedFolder, userId);
if(!notify)
logger.error("An error occured when notify user: "+infoContactModel.getId());
}
}catch (Exception e) {
logger.error("An error occured in notifyFolderSharing ", e);
e.printStackTrace();
}
}
logger.trace("un share notifications is completed");
System.out.println("un share folder completed");
}
}.start();
}
private void printContacts(List<InfoContactModel> listContacts){
System.out.println("Print contacts");
for (InfoContactModel infoContactModel : listContacts) {
System.out.println(infoContactModel);
}
System.out.println("End print contacts");
}
public static void main(String[] args) throws Exception
{
String sessionID = "1";
String user = "francesco.mangiacrapa";
String scopeString = "/gcube/devsec/devVRE";
String fullName = "Francesco Mangiacrapa";
GCUBEScope scope;
ASLSession session;
session = SessionManager.getInstance().getASLSession(sessionID, user);
scope = GCUBEScope.getScope(scopeString);
session.setScope(scope.toString());
session.setUserAvatarId(user + "Avatar");
session.setUserFullName(fullName);
NotificationsProducer feeder = new NotificationsProducer(session);
}
}

View File

@ -7,6 +7,8 @@ import javax.servlet.http.HttpSession;
import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.application.framework.core.session.SessionManager; import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.applicationsupportlayer.social.ApplicationNotificationsManager;
import org.gcube.applicationsupportlayer.social.NotificationsManager;
import org.gcube.common.core.utils.logging.GCUBEClientLog; import org.gcube.common.core.utils.logging.GCUBEClientLog;
import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.common.core.utils.logging.GCUBELog;
import org.gcube.portlets.user.homelibrary.home.HomeLibrary; import org.gcube.portlets.user.homelibrary.home.HomeLibrary;
@ -15,6 +17,7 @@ import org.gcube.portlets.user.homelibrary.home.exceptions.InternalErrorExceptio
import org.gcube.portlets.user.homelibrary.home.workspace.Workspace; import org.gcube.portlets.user.homelibrary.home.workspace.Workspace;
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException; import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder; import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer;
/** /**
@ -28,6 +31,10 @@ public class Util {
public static final String METADATACONVERTER_ATTRIBUTE = "METADATA_CONVERTER"; public static final String METADATACONVERTER_ATTRIBUTE = "METADATA_CONVERTER";
public static final String WORKSPACE_EVENT_COLLECTOR_ATTRIBUTE = "EVENT_COLLECTOR"; public static final String WORKSPACE_EVENT_COLLECTOR_ATTRIBUTE = "EVENT_COLLECTOR";
public static final String WORKSPACEBUILDER_ATTRIBUTE = "WORKSPACEBUILDER"; public static final String WORKSPACEBUILDER_ATTRIBUTE = "WORKSPACEBUILDER";
public static final String NOTIFICATION_MANAGER = "NOTIFICATIONMANAGER";
public static final String NOTIFICATION_PRODUCER = "NOTIFICATIONMANAGER";
public static final String NOTIFICATION_PORTLET_CLASS_ID = "org.gcube.portlets.user.wsmail.server.WsMailServiceImpl"; //IN DEV
// public static final String TEST_SCOPE = "/gcube/devsec"; // public static final String TEST_SCOPE = "/gcube/devsec";
// public static final String TEST_USER = "pasquale.pagano"; // public static final String TEST_USER = "pasquale.pagano";
@ -35,9 +42,9 @@ public class Util {
public static final String TEST_SCOPE = "/gcube/devsec/devVRE"; public static final String TEST_SCOPE = "/gcube/devsec/devVRE";
// public static final String TEST_USER = "federico.defaveri"; // public static final String TEST_USER = "federico.defaveri";
// public static final String TEST_USER = "massimiliano.assante"; // public static final String TEST_USER = "massimiliano.assante";
public static final String TEST_USER = "francesco.mangiacrapa";
// public static final String TEST_USER = "pasquale.pagano"; // public static final String TEST_USER = "pasquale.pagano";
public static final String TEST_USER = "francesco.mangiacrapa";
public static final String TEST_USER_FULL_NAME = "Francesco Mangiacrapa";
public static GCUBEClientLog defaultLogger = new GCUBEClientLog("WorkspacePortlet"); public static GCUBEClientLog defaultLogger = new GCUBEClientLog("WorkspacePortlet");
@ -54,7 +61,8 @@ public class Util {
httpSession.setAttribute(USERNAME_ATTRIBUTE, TEST_USER); httpSession.setAttribute(USERNAME_ATTRIBUTE, TEST_USER);
ASLSession session = SessionManager.getInstance().getASLSession(sessionID, TEST_USER); ASLSession session = SessionManager.getInstance().getASLSession(sessionID, TEST_USER);
session.setScope(TEST_SCOPE); session.setScope(TEST_SCOPE);
//session.setScope("/d4science.research-infrastructures.eu/Ecosystem/TryIt"); session.setUserAvatarId(TEST_USER + "Avatar");
session.setUserFullName(TEST_USER_FULL_NAME);
return session; return session;
} }
@ -157,4 +165,39 @@ public class Util {
return (GWTWorkspaceBuilder) session.getAttribute(Util.WORKSPACEBUILDER_ATTRIBUTE); return (GWTWorkspaceBuilder) session.getAttribute(Util.WORKSPACEBUILDER_ATTRIBUTE);
} }
public static NotificationsManager getNotificationManager(ASLSession session)
{
NotificationsManager notifMng = (NotificationsManager) session.getAttribute(NOTIFICATION_MANAGER);
if (notifMng == null) {
defaultLogger.trace("Create new NotificationsManager for user: "+session.getUsername());
notifMng = new ApplicationNotificationsManager(session, NOTIFICATION_PORTLET_CLASS_ID);
session.setAttribute(NOTIFICATION_MANAGER, notifMng);
}
return notifMng;
}
public static NotificationsProducer getNotificationProducer(ASLSession session)
{
NotificationsProducer notifProducer = (NotificationsProducer) session.getAttribute(NOTIFICATION_PRODUCER);
if (notifProducer == null) {
defaultLogger.trace("Create new Notification Producer for user: "+session.getUsername());
notifProducer = new NotificationsProducer(session);
session.setAttribute(NOTIFICATION_PRODUCER, notifProducer);
}
return notifProducer;
}
public static String getUserId(HttpSession httpSession) {
ASLSession session = getAslSession(httpSession);
return session.getUsername();
}
} }