merget with branch SocialISTI at version 93164

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@93182 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2014-03-17 13:43:06 +00:00
parent c3ea887532
commit d0ac39e546
15 changed files with 536 additions and 56 deletions

View File

@ -78,6 +78,8 @@ import org.gcube.portlets.user.workspace.client.event.SendMessageEvent;
import org.gcube.portlets.user.workspace.client.event.SendMessageEventHandler;
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEventHandler;
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEvent;
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEventHandler;
import org.gcube.portlets.user.workspace.client.event.SmartFolderSelectedEvent;
import org.gcube.portlets.user.workspace.client.event.SmartFolderSelectedEventHandler;
import org.gcube.portlets.user.workspace.client.event.SubTreeLoadedEvent;
@ -107,6 +109,7 @@ import org.gcube.portlets.user.workspace.client.util.RequestBuilderWorkspaceVali
import org.gcube.portlets.user.workspace.client.util.WindowOpenParameter;
import org.gcube.portlets.user.workspace.client.view.ExplorerPanel;
import org.gcube.portlets.user.workspace.client.view.sharing.DialogShareFolder;
import org.gcube.portlets.user.workspace.client.view.sharing.permissions.DialogPermission;
import org.gcube.portlets.user.workspace.client.view.tree.AsyncTreePanel;
import org.gcube.portlets.user.workspace.client.view.windows.BulkCreatorWindow;
import org.gcube.portlets.user.workspace.client.view.windows.DialogAddFolderAndSmart;
@ -265,7 +268,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
notifySubscriber(trashEvent);
}
});
eventBus.addHandler(GetInfoEvent.TYPE, new GetInfoEventHandler() {
@Override
@ -1673,6 +1676,19 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
});
}
});
eventBus.addHandler(SettingPermissionEvent.TYPE, new SettingPermissionEventHandler() {
@Override
public void onPermissionSetting(SettingPermissionEvent settingPermissionEvent) {
if(settingPermissionEvent.getSourceFile()!=null){
DialogPermission dialog = new DialogPermission(settingPermissionEvent.getSourceFile());
dialog.show();
}else
Info.display("Attention", "Select a VRE Folder to change permissions!");
}
});
@ -1918,6 +1934,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}else if(event instanceof TrashEvent){
TrashEvent trashEvent = (TrashEvent) event;
sub.trashEvent(trashEvent.getTrashOperation(), trashEvent.getTargetFileModel());
}
}

View File

@ -33,7 +33,8 @@ public enum WorkspaceOperation {
HISTORY("HST", "HST"), //HISTORY
ACCREAD("ACR", "ACR"), //ACCOUNTING READ
SHARE_LINK("SLK", "SLK"), //SHARE URL LINK
PUBLIC_LINK("PLK", "PLK"); //PUBLIC LINK
PUBLIC_LINK("PLK", "PLK"), //PUBLIC LINK
VRE_CHANGE_PERIMISSIONS("CHP", "CHP");
// //ID CONTEXT MENU

View File

@ -0,0 +1,36 @@
package org.gcube.portlets.user.workspace.client.event;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import com.google.gwt.event.shared.GwtEvent;
/**
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Mar 14, 2014
*
*/
public class SettingPermissionEvent extends GwtEvent<SettingPermissionEventHandler> {
public static Type<SettingPermissionEventHandler> TYPE = new Type<SettingPermissionEventHandler>();
private FileModel targetFile = null;
public SettingPermissionEvent(FileModel target) {
this.targetFile = target;
}
@Override
public Type<SettingPermissionEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(SettingPermissionEventHandler handler) {
handler.onPermissionSetting(this);
}
public FileModel getSourceFile() {
return targetFile;
}
}

View File

@ -0,0 +1,12 @@
package org.gcube.portlets.user.workspace.client.event;
import com.google.gwt.event.shared.EventHandler;
/**
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*
*/
public interface SettingPermissionEventHandler extends EventHandler {
void onPermissionSetting(SettingPermissionEvent settingPermissionEvent);
}

View File

@ -30,5 +30,6 @@ public enum EventsTypeEnum
SESSION_EXPIRED,
PASTED_EVENT,
COPY_EVENT,
TRASH_EVENT;
TRASH_EVENT,
VRE_CHANGE_PERMISSION;
}

View File

@ -60,4 +60,9 @@ public interface SubscriberInterface {
*/
void trashEvent(WorkspaceTrashOperation trashOperation, FileModel targetFileModel);
/**
* @param fileModel
*/
void changePermission(FileModel fileModel);
}

View File

@ -73,12 +73,20 @@ public class InfoContactModel extends BaseModelData implements Serializable {
}
public static Comparator<InfoContactModel> COMPARATOR = new Comparator<InfoContactModel>() {
public static Comparator<InfoContactModel> COMPARATORFULLNAME = new Comparator<InfoContactModel>() {
// This is where the sorting happens.
public int compare(InfoContactModel o1, InfoContactModel o2) {
return o1.getName().compareToIgnoreCase(o2.getName());
}
};
public static Comparator<InfoContactModel> COMPARATORLOGINS = new Comparator<InfoContactModel>() {
// This is where the sorting happens.
public int compare(InfoContactModel o1, InfoContactModel o2) {
return o1.getLogin().compareToIgnoreCase(o2.getLogin());
}
};
@Override
public String toString() {

View File

@ -204,7 +204,7 @@ public interface GWTWorkspaceService extends RemoteService{
String getMyLogin();
void updateACLForVREbyUsers(String folderId, String aclType) throws Exception;
void updateACLForVREbyMembers(String folderId, String aclType) throws Exception;
/**
* @param folderId
@ -235,4 +235,12 @@ public interface GWTWorkspaceService extends RemoteService{
*/
String getACLsDescriptionForSharedFolderId(String folderId) throws Exception;
/**
* @param folderId
* @return
* @throws Exception
*/
List<InfoContactModel> getUsersManagerToSharedFolder(String folderId)
throws Exception;
}

View File

@ -182,7 +182,7 @@ public interface GWTWorkspaceServiceAsync {
void getMyLogin(AsyncCallback<String> callback);
void updateACLForVREbyUsers(String folderId, String aclType,
void updateACLForVREbyMembers(String folderId, String aclType,
AsyncCallback<Void> callback);
void getUserACLForFolderId(String folderId,
@ -197,4 +197,7 @@ public interface GWTWorkspaceServiceAsync {
void getACLsDescriptionForSharedFolderId(String folderId,
AsyncCallback<String> callback);
void getUsersManagerToSharedFolder(String folderId,
AsyncCallback<List<InfoContactModel>> callback);
}

View File

@ -0,0 +1,224 @@
package org.gcube.portlets.user.workspace.client.view.sharing.permissions;
import java.util.List;
import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEvent;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
import org.gcube.portlets.user.workspace.client.resources.Resources;
import org.gcube.portlets.user.workspace.client.view.sharing.PanelTogglePermission;
import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplay;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
import org.gcube.portlets.user.workspace.shared.WorkspaceACL;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.Style.VerticalAlignment;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Label;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*
*/
public class DialogPermission extends Dialog {
private int widthDialog = 400;
private FileModel parentFolder = null;
private PanelTogglePermission permission;
private HorizontalPanel hpPermission = new HorizontalPanel();
private FileModel folder;
private DialogPermission INSTANCE = this;
public FileModel getParentFolder() {
return parentFolder;
}
public void initLayout(String folderParentName) {
FormLayout layout = new FormLayout();
layout.setLabelWidth(90);
layout.setDefaultWidth(380);
setLayout(layout);
setModal(true);
setScrollMode(Scroll.AUTOY);
setBodyStyle("padding: 9px; background: none");
setWidth(widthDialog);
setHeight(140);
setResizable(true);
setButtonAlign(HorizontalAlignment.CENTER);
setWidth(widthDialog);
setButtons(Dialog.OKCANCEL);
enableFormDialog(false);
}
/**
* Use to set permission to VRE Folder
*/
public DialogPermission(FileModel folder) {
this.folder = folder;
Label labelProperty = new Label("Permissions");
hpPermission.add(labelProperty);
hpPermission.setVerticalAlign(VerticalAlignment.MIDDLE);
hpPermission.mask("Checking authorization");
AsyncCallback<List<InfoContactModel>> callback = new AsyncCallback<List<InfoContactModel>>() {
@Override
public void onFailure(Throwable caught) {
new MessageBoxAlert("Alert", "Sorry, an error occurred on recovering ACLs",null);
hpPermission.unmask();
}
@Override
public void onSuccess(List<InfoContactModel> listManagers) {
permissionControl(listManagers, true);
hpPermission.unmask();
}
};
getUsersManagers(folder.getIdentifier(), callback);
//TODO GET ACL FOR USER
AppControllerExplorer.rpcWorkspaceService.getACLs(new AsyncCallback<List<WorkspaceACL>>() {
@Override
public void onSuccess(List<WorkspaceACL> result) {
permission = new PanelTogglePermission(result);
hpPermission.add(permission);
hpPermission.layout();
layout();
}
@Override
public void onFailure(Throwable caught) {
new MessageBoxAlert("Alert", "Sorry, an error occurred on recovering ACLs",null);
}
});
initLayout(folder.getName());
this.setIcon(Resources.getIconVREFolder());
setHeading("Change permissions to folder: " + folder.getName());
setWidth(widthDialog);
setButtons(Dialog.OKCANCEL);
add(hpPermission);
addListners();
getButtonById(Dialog.OK).setEnabled(false);
enableFormDialog(false);
}
public void addListners() {
this.getButtonById(Dialog.CANCEL).addSelectionListener(
new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
hide();
}
});
this.getButtonById(Dialog.OK).addSelectionListener(
new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
AppControllerExplorer.getEventBus().fireEvent(new SettingPermissionEvent(folder));
// hide();
INSTANCE.mask("Changing permissions");
if(folder!=null && getSelectedACL().getId()!=null){
AppControllerExplorer.rpcWorkspaceService.updateACLForVREbyMembers(folder.getIdentifier(), getSelectedACL().getId(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
INSTANCE.hide();
new MessageBoxAlert("Error", caught.getMessage(),null);
}
@Override
public void onSuccess(Void result) {
INSTANCE.unmask();
INSTANCE.hide();
new InfoDisplay("Permission updated", "The permissions have been changed correctly");
}
});
}
}
});
}
private void permissionControl(List<InfoContactModel> listManagers, boolean showAlert){
boolean permissionsOk = false;
for (InfoContactModel infoContactModel : listManagers) {
GWT.log("DialogPermission control compare between : "+infoContactModel.getLogin() +" and my login: "+AppControllerExplorer.myLogin);
if(AppControllerExplorer.myLogin.compareToIgnoreCase(infoContactModel.getLogin())==0){
permissionsOk = true;
break;
}
}
if(permissionsOk){
enableFormDialog(true);
}else{
enableFormDialog(false);
if(showAlert)
new MessageBoxAlert("Permission denied", "You have no permissions to change sharing. You are not owner or manger of \""+folder.getName()+"\"", null);
}
}
private void enableFormDialog(boolean bool){
getButtonById(Dialog.OK).setEnabled(bool);
if(permission!=null)
permission.setEnabled(bool);
}
public void getUsersManagers(final String sharedFolderId,final AsyncCallback<List<InfoContactModel>> callback) {
AppControllerExplorer.rpcWorkspaceService.getUsersManagerToSharedFolder(sharedFolderId, new AsyncCallback<List<InfoContactModel>>() {
@Override
public void onFailure(Throwable arg0) {
GWT.log("an error occured in getting user managers by Id "+sharedFolderId + " "+arg0.getMessage());
new MessageBoxAlert("Alert", "Sorry, an error occurred on getting users managers, try again later",null);
}
@Override
public void onSuccess(List<InfoContactModel> listManagers) {
callback.onSuccess(listManagers);
}
});
}
public WorkspaceACL getSelectedACL(){
if(permission!=null)
return permission.getSelectedACL();
return null;
}
}

View File

@ -30,13 +30,12 @@ public class SmartFolderPanel extends LayoutContainer {
private ContentPanel cp;
//TODO TEMPORARY SOLUTION TO FIX SMART FOLDER
// private SmartButton buttDocuments = new SmartButton(GXTCategoryItemInterface.SMF_DOCUMENTS, Resources.getIconDocuments(), this);
private SmartButton buttDocuments = new SmartButton(GXTCategoryItemInterface.SMF_DOCUMENTS, Resources.getIconDocuments(), this);
private SmartButton buttImages = new SmartButton(GXTCategoryItemInterface.SMF_IMAGES, Resources.getIconImages(), this);
private SmartButton buttLinks = new SmartButton(GXTCategoryItemInterface.SMF_LINKS, Resources.getIconLinks(), this);
private SmartButton buttReports = new SmartButton(GXTCategoryItemInterface.SMF_REPORTS, Resources.getIconReport(), this);
private SmartButton buttTimeSeries = new SmartButton(GXTCategoryItemInterface.SMF_TIMESERIES, Resources.getIconTimeSeries(), this);
// private SmartButton buttReports = new SmartButton(GXTCategoryItemInterface.SMF_REPORTS, Resources.getIconReport(), this);
// private SmartButton buttTimeSeries = new SmartButton(GXTCategoryItemInterface.SMF_TIMESERIES, Resources.getIconTimeSeries(), this);
private HashMap<String, SmartFolderModel> hashSmartFolderModel = new HashMap<String, SmartFolderModel>();
private HashMap<String, HorizontalPanel> hashMapPanelSmartFolder = new HashMap<String, HorizontalPanel>();
@ -52,13 +51,13 @@ public class SmartFolderPanel extends LayoutContainer {
public void reloadPanelSmartFolder(){
cp.removeAll();
//TODO TEMPORARY SOLUTION TO FIX SMART FOLDER
// cp.add(buttDocuments);
cp.add(buttDocuments);
cp.add(buttImages);
cp.add(buttLinks);
cp.add(buttReports);
cp.add(buttTimeSeries);
// cp.add(buttReports);
// cp.add(buttTimeSeries);
cp.layout();
addUserSmartFolder();
@ -104,27 +103,27 @@ public class SmartFolderPanel extends LayoutContainer {
}
});
//TODO TEMPORARY SOLUTION TO FIX SMART FOLDER
// buttDocuments.setCommand(new Command() {
buttDocuments.setCommand(new Command() {
@Override
public void execute() {
AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_DOCUMENTS, GXTCategoryItemInterface.SMF_DOCUMENTS));
}
});
// buttReports.setCommand(new Command() {
// @Override
// public void execute() {
// AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_DOCUMENTS, GXTCategoryItemInterface.SMF_DOCUMENTS));
// AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_REPORTS, GXTCategoryItemInterface.SMF_REPORTS));
// }
// });
//
// buttTimeSeries.setCommand(new Command() {
// @Override
// public void execute() {
// AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_TIMESERIES, GXTCategoryItemInterface.SMF_TIMESERIES));
// }
// });
buttReports.setCommand(new Command() {
@Override
public void execute() {
AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_REPORTS, GXTCategoryItemInterface.SMF_REPORTS));
}
});
buttTimeSeries.setCommand(new Command() {
@Override
public void execute() {
AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_TIMESERIES, GXTCategoryItemInterface.SMF_TIMESERIES));
}
});
}
/**

View File

@ -27,6 +27,7 @@ import org.gcube.portlets.user.workspace.client.event.PasteItemEvent;
import org.gcube.portlets.user.workspace.client.event.RefreshFolderEvent;
import org.gcube.portlets.user.workspace.client.event.RenameItemEvent;
import org.gcube.portlets.user.workspace.client.event.SendMessageEvent;
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEvent;
import org.gcube.portlets.user.workspace.client.event.UnShareFolderEvent;
import org.gcube.portlets.user.workspace.client.event.WebDavUrlEvent;
import org.gcube.portlets.user.workspace.client.model.FileModel;
@ -382,6 +383,8 @@ public class ContextMenuTree {
}
});
contextMenu.add(share);
MenuItem unShare = new MenuItem();
unShare.setId(WorkspaceOperation.UNSHARE.getId());
@ -400,12 +403,8 @@ public class ContextMenuTree {
}
});
contextMenu.add(share);
contextMenu.add(unShare);
MenuItem rename = new MenuItem();
rename.setId(WorkspaceOperation.RENAME.getId());
rename.setText("Rename Item");
@ -562,6 +561,27 @@ public class ContextMenuTree {
contextMenu.add(downloadArchive);
contextMenu.add(new SeparatorMenuItem());
MenuItem changePermission = new MenuItem();
changePermission.setId(WorkspaceOperation.VRE_CHANGE_PERIMISSIONS.getId());
changePermission.setText("Change Permission");
changePermission.setIcon(Resources.getIconWriteAll());
changePermission.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) {
for (FileModel target : listSelectedItems) {
if(target.getIdentifier()!=null){
eventBus.fireEvent(new SettingPermissionEvent(target));
}
}
}
});
contextMenu.add(changePermission);
contextMenu.add(new SeparatorMenuItem());
MenuItem refreshItem = new MenuItem();
refreshItem.setId(WorkspaceOperation.REFRESH_FOLDER.getId());
@ -579,7 +599,7 @@ public class ContextMenuTree {
contextMenu.add(refreshItem);
contextMenu.add(new SeparatorMenuItem());
}
public void clearListSelectedItems() {
@ -693,6 +713,8 @@ public class ContextMenuTree {
contextMenu.getItemByItemId(WorkspaceOperation.UNSHARE.getId()).setVisible(false); //UNSHARE
contextMenu.getItemByItemId(WorkspaceOperation.SHARE_LINK.getId()).setVisible(false); //SHARE
contextMenu.getItemByItemId(WorkspaceOperation.VRE_CHANGE_PERIMISSIONS.getId()).setVisible(false); //VRE CHANGE PERMISSIONS
//COMMENTED AT 29/08/2013
/*
@ -722,8 +744,15 @@ public class ContextMenuTree {
contextMenu.getItemByItemId(WorkspaceOperation.REMOVE.getId()).setVisible(false); //REMOVE
contextMenu.getItemByItemId(WorkspaceOperation.REFRESH_FOLDER.getId()).setVisible(true); //REFRESH_FOLDER
if(selectedItem.isVreFolder() && CutCopyAndPaste.getCopiedIdsFilesModel()!=null)
contextMenu.getItemByItemId(WorkspaceOperation.PASTE.getId()).setEnabled(true); //enable paste button
//ADDED 14/03/2014
if(selectedItem.isVreFolder()){
contextMenu.getItemByItemId(WorkspaceOperation.VRE_CHANGE_PERIMISSIONS.getId()).setVisible(true); //REFRESH_FOLDER
if(CutCopyAndPaste.getCopiedIdsFilesModel()!=null)
contextMenu.getItemByItemId(WorkspaceOperation.PASTE.getId()).setEnabled(true); //enable paste button
}
// if(selectedItem.isVreFolder() && CutCopyAndPaste.getCopiedIdsFilesModel()!=null)
// contextMenu.getItemByItemId(WorkspaceOperation.PASTE.getId()).setEnabled(true); //enable paste button
else if(selectedItem.isSpecialFolder()){
contextMenu.getItemByItemId(WorkspaceOperation.COPY.getId()).setEnabled(false);
contextMenu.getItemByItemId(WorkspaceOperation.PASTE.getId()).setEnabled(false);

View File

@ -1434,12 +1434,63 @@ public class GWTWorkspaceBuilder {
String name = "";
//MANAGEMENT SHARED FOLDER NAME
if(wsFolder.isShared() && wsFolder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
}else
name = wsFolder.getName();
//MANAGEMENT SPECIAL FOLDER
// if(wsFolder.getName().compareTo("MySpecialFolders")==0 && wsFolder.getParent()!=null && wsFolder.getParent().isRoot()){
// WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
// name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
// }else
// name = wsFolder.getName();
FolderModel folder = new FolderModel(wsFolder.getId(), name, parent, true, wsFolder.isShared(), false);
folder.setShareable(true);
folder.setDescription(wsFolder.getDescription());
// folder.setOwner(wsFolder.getOwner());
if(parent != null && parent.isShared()){
folder.setShared(true);
folder.setShareable(false);
}
return folder;
}
/**
* TODO ********TEMPORARY SOLUTION HL MUST MANAGE SPECIAL FOLDER AS WORKSPACESPECIALFOLDER****
* REMOVE THIS METHOD AND ADDING INSTANCE OF AT buildGXTFolderModelItem
* @param wsFolder
* @param parent
* @return
* @throws InternalErrorException
*/
public FolderModel buildGXTFolderModelItemHandleSpecialFolder(WorkspaceFolder wsFolder, FileModel parent, String specialFolderName) throws InternalErrorException {
String name = "";
//MANAGEMENT SHARED FOLDER NAME
if(wsFolder.isShared() && wsFolder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
//MANAGEMENT SPECIAL FOLDER
}else if(wsFolder.getName().compareTo("MySpecialFolders")==0 && wsFolder.getParent()!=null && wsFolder.getParent().isRoot()){
//MANAGEMENT SPECIAL FOLDER
logger.info("MANAGEMENT SPECIAL FOLDER NAME REWRITING AS: "+specialFolderName);
if(specialFolderName!=null && !specialFolderName.isEmpty())
name = specialFolderName;
else
name = wsFolder.getName();
}else
name = wsFolder.getName();
FolderModel folder = new FolderModel(wsFolder.getId(), name, parent, true, wsFolder.isShared(), false);
folder.setShareable(true);
folder.setDescription(wsFolder.getDescription());
@ -2000,12 +2051,12 @@ public class GWTWorkspaceBuilder {
AccountingEntryShare acc = (AccountingEntryShare) accountingEntry;
List<String> listContacts = new ArrayList<String>();
// List<String> listContacts = new ArrayList<String>();
if(acc.getMembers()!=null && acc.getMembers().size()>0){
listContacts = acc.getMembers();
}
// if(acc.getMembers()!=null && acc.getMembers().size()>0){
//
// listContacts = acc.getMembers();
// }
String msg = "";
@ -2017,7 +2068,7 @@ public class GWTWorkspaceBuilder {
// msg = acc.getItemName() +" "+GxtAccountingEntryType.SHARE.getName()+" by "+user.getName();
if(listContacts.size()>0){
if(acc.getMembers()!=null && acc.getMembers().size()>0){
msg+=" with "+UserUtil.separateFullNameToCommaForPortalLogin(acc.getMembers());
}

View File

@ -7,6 +7,7 @@ import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.servlet.ServletContext;
@ -140,7 +141,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
/**
*
* @param type the type to look for
* @return the Category if there is correspodance, null otherwise
* @return the Category if there is correspondance, null otherwise
*/
private String getSpecialFolderPath() {
ServletContext servletContext = getServletContext();
@ -1947,9 +1948,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
Workspace workspace = getWorkspace();
workspaceLogger.trace("shareFolder "+ folder.getIdentifier()
//TODO TRACE
workspaceLogger.info("shareFolder "+ folder.getIdentifier()
+ " name: "+ folder.getName()
// + " parent name: " + folder.getParentFileModel().getName()
+ " parent is: " + folder.getParentFileModel()
+ " listContacts size: " + listContacts.size());
// //DEBUG
@ -1979,8 +1981,17 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
sharedFolder = workspace.shareFolder(listLogin, folder.getIdentifier());
sharedFolder.setDescription(folder.getDescription()); //SET NEW DESCRIPTION
}
else
sharedFolder = workspace.createSharedFolder(folder.getName(), folder.getDescription(), listLogin, folder.getParentFileModel().getIdentifier());
else{
FileModel parent = folder.getParentFileModel();
String parentId = "";
if(parent!=null){
parentId = parent.getIdentifier();
}else{
workspaceLogger.info("Parent is null, reading root ID from workspace");
parentId = getWorkspace().getRoot().getId();
}
sharedFolder = workspace.createSharedFolder(folder.getName(), folder.getDescription(), listLogin, parentId);
}
}
boolean created = sharedFolder==null?false:true;
@ -2194,14 +2205,18 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
String nameSpecialFolder = getNameForSpecialFolder();
if(includeItemAsParent==true && wsItem.getType().equals(WorkspaceItemType.FOLDER)){
listParents.add(builder.buildGXTFolderModelItem((WorkspaceFolder) wsItem, null));
listParents.add(builder.buildGXTFolderModelItemHandleSpecialFolder((WorkspaceFolder) wsItem, null, nameSpecialFolder));
}
while(wsItem!=null && wsItem.getParent()!=null){
WorkspaceFolder wsFolder = wsItem.getParent();
listParents.add(builder.buildGXTFolderModelItem(wsFolder, null));
listParents.add(builder.buildGXTFolderModelItemHandleSpecialFolder(wsFolder, null, nameSpecialFolder));
wsItem = wsFolder;
}
@ -2246,6 +2261,62 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
throw new Exception(e.getMessage());
}
}
@Override
public List<InfoContactModel> getUsersManagerToSharedFolder(String folderId) throws Exception{
try{
workspaceLogger.info("Get User Manager to shared folder id: "+folderId);
Workspace workspace = getWorkspace();
List<InfoContactModel> listManagers = new ArrayList<InfoContactModel>();
workspaceLogger.info("Adding owner..");
InfoContactModel owner = getOwnerByItemId(folderId); //GET OWNER
workspaceLogger.info("Added owner: "+owner);
listManagers.add(owner);
WorkspaceItem wsItem = workspace.getItem(folderId);
if(wsItem.isShared() && (wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER))){
WorkspaceSharedFolder ite = (WorkspaceSharedFolder) workspace.getItemByPath(wsItem.getPath());
workspaceLogger.info("Retrieving administrators...");
Map<ACLType, List<String>> aclOwner = ite.getACLOwner();
if(aclOwner!=null){
List<String> listLogins = new ArrayList<String>();
workspaceLogger.info("Adding administrators...");
for (ACLType type : aclOwner.keySet()) {
switch (type) {
case ADMINISTRATOR:
listLogins.addAll(aclOwner.get(type)); //ADD ALL ADMINISTRATORS
break;
}
}
workspaceLogger.info("Added " +listLogins.size() +"administrators, converting into InfoContactModel");
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
List<InfoContactModel> adms = builder.buildGxtInfoContactsFromPortalLogins(listLogins);
listManagers.addAll(adms);
workspaceLogger.info("Returing" +listManagers.size() +"users managers");
return listManagers;
}
}else
throw new Exception("Source item is not shared or shared folder");
}catch (Exception e) {
String error = "Sorry an error occurred on get managers ";
workspaceLogger.error(error, e);
throw new Exception(e.getMessage());
}
return null;
}
@Override
public String itemExistsInWorkpaceFolder(String parentId, String itemName) throws Exception {
@ -2663,7 +2734,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
* @throws Exception
*/
@Override
public void updateACLForVREbyUsers(String folderId, String aclType) throws Exception{
public void updateACLForVREbyMembers(String folderId, String aclType) throws Exception{
try {
if(folderId == null)
@ -2677,7 +2748,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
if(wsItem.isShared() && (wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER))){
WorkspaceSharedFolder ite = (WorkspaceSharedFolder) workspace.getItemByPath(wsItem.getPath());
ite.setACL(ite.getUsers(), ACLType.valueOf(aclType));
ite.setACL(ite.getMembers(), ACLType.valueOf(aclType));
}else
throw new Exception("Source item is not shared or shared folder");
@ -2847,6 +2918,5 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
throw new Exception(error);
}
}
}

View File

@ -102,14 +102,30 @@ public class UserUtil {
String users = "";
logger.trace("SeparateFullNameToCommaForPortalLogin converting: "+listLogin);
//N-1 MEMBERS
for (int i = 0; i < listLogin.size()-1; i++) {
// logger.trace("Converting: "+i+") "+listLogin.get(i));
users+= getUserFullName(listLogin.get(i)) + ", ";
}
if(listLogin.size()>1)
//LAST MEMBER
if(listLogin.size()>=1){
// logger.trace("Converting: "+(listLogin.size()-1)+") " +listLogin.get(listLogin.size()-1));
users += getUserFullName(listLogin.get(listLogin.size()-1));
}
logger.trace("SeparateFullNameToCommaForPortalLogin returning: "+users);
return users;
}
public static void main(String[] args) {
List<String> login = new ArrayList<String>();
// login.add("ale");
// login.add("pepe");
System.out.println(separateFullNameToCommaForPortalLogin(login));
}
}