2013-02-06 15:40:17 +01:00
package org.gcube.portlets.user.workspace.server ;
2014-03-05 18:28:49 +01:00
import java.io.File ;
2013-02-06 15:40:17 +01:00
import java.util.ArrayList ;
2014-02-17 15:56:42 +01:00
import java.util.Arrays ;
2013-03-25 12:35:05 +01:00
import java.util.Calendar ;
2013-02-06 15:40:17 +01:00
import java.util.Collections ;
2013-03-25 12:35:05 +01:00
import java.util.Date ;
2014-05-09 17:48:30 +02:00
import java.util.HashMap ;
2013-02-06 15:40:17 +01:00
import java.util.List ;
2014-03-17 14:43:06 +01:00
import java.util.Map ;
2013-02-06 15:40:17 +01:00
import java.util.concurrent.TimeUnit ;
2014-03-05 18:28:49 +01:00
import javax.servlet.ServletContext ;
2013-03-11 19:06:56 +01:00
import org.apache.log4j.Logger ;
2013-02-06 15:40:17 +01:00
import org.gcube.application.framework.core.session.ASLSession ;
2013-09-27 17:39:28 +02:00
import org.gcube.common.homelibrary.home.Home ;
import org.gcube.common.homelibrary.home.HomeLibrary ;
import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException ;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException ;
import org.gcube.common.homelibrary.home.workspace.Workspace ;
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder ;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem ;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItemType ;
import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder ;
import org.gcube.common.homelibrary.home.workspace.WorkspaceSmartFolder ;
2014-02-11 12:53:10 +01:00
import org.gcube.common.homelibrary.home.workspace.accessmanager.ACLType ;
2013-09-27 17:39:28 +02:00
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntry ;
import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException ;
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException ;
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException ;
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException ;
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongDestinationException ;
import org.gcube.common.homelibrary.home.workspace.folder.FolderItem ;
import org.gcube.common.homelibrary.home.workspace.folder.FolderItemType ;
import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalUrl ;
import org.gcube.common.homelibrary.home.workspace.folder.items.ts.TimeSeries ;
import org.gcube.common.homelibrary.home.workspace.search.SearchItem ;
import org.gcube.common.homelibrary.home.workspace.sharing.WorkspaceMessage ;
2014-02-17 15:56:42 +01:00
import org.gcube.common.homelibrary.home.workspace.trash.WorkspaceTrashFolder ;
2014-05-13 11:10:54 +02:00
import org.gcube.common.homelibrary.home.workspace.trash.WorkspaceTrashItem ;
2013-09-27 17:39:28 +02:00
import org.gcube.common.scope.api.ScopeProvider ;
2014-10-28 17:12:40 +01:00
import org.gcube.portal.custom.communitymanager.OrganizationsUtil ;
2013-02-20 14:51:36 +01:00
import org.gcube.portlets.user.workspace.client.ConstantsExplorer ;
2013-02-06 15:40:17 +01:00
import org.gcube.portlets.user.workspace.client.interfaces.GXTCategoryItemInterface ;
import org.gcube.portlets.user.workspace.client.model.BulkCreatorModel ;
import org.gcube.portlets.user.workspace.client.model.FileDetailsModel ;
import org.gcube.portlets.user.workspace.client.model.FileGridModel ;
import org.gcube.portlets.user.workspace.client.model.FileModel ;
2014-02-17 15:56:42 +01:00
import org.gcube.portlets.user.workspace.client.model.FileTrashedModel ;
2013-02-06 15:40:17 +01:00
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.ScopeModel ;
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.rpc.GWTWorkspaceService ;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem ;
2015-02-16 14:46:38 +01:00
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.WorkspaceHandledException ;
2013-02-13 18:39:33 +01:00
import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer ;
2013-06-13 18:44:46 +02:00
import org.gcube.portlets.user.workspace.server.notifications.NotificationsUtil ;
2013-07-08 17:42:08 +02:00
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameter ;
2013-07-02 10:30:40 +02:00
import org.gcube.portlets.user.workspace.server.shortener.UrlShortener ;
2014-09-30 12:13:26 +02:00
import org.gcube.portlets.user.workspace.server.util.DiffereceBeetweenInfoContactModel ;
2013-07-11 11:55:56 +02:00
import org.gcube.portlets.user.workspace.server.util.HttpRequestUtil ;
2013-07-09 14:48:34 +02:00
import org.gcube.portlets.user.workspace.server.util.StringUtil ;
2013-03-25 17:35:27 +01:00
import org.gcube.portlets.user.workspace.server.util.UserUtil ;
2013-06-13 18:44:46 +02:00
import org.gcube.portlets.user.workspace.server.util.WsUtil ;
2014-03-05 17:45:33 +01:00
import org.gcube.portlets.user.workspace.server.util.resource.PropertySpecialFolderReader ;
2013-03-27 17:30:37 +01:00
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter ;
2014-07-14 15:59:32 +02:00
import org.gcube.portlets.user.workspace.shared.ExtendedWorkspaceACL ;
2013-09-04 15:30:17 +02:00
import org.gcube.portlets.user.workspace.shared.SessionExpiredException ;
2014-05-13 11:10:54 +02:00
import org.gcube.portlets.user.workspace.shared.TrashContent ;
import org.gcube.portlets.user.workspace.shared.TrashOperationContent ;
2014-10-28 17:12:40 +01:00
import org.gcube.portlets.user.workspace.shared.UserBean ;
2014-02-11 12:53:10 +01:00
import org.gcube.portlets.user.workspace.shared.WorkspaceACL ;
2014-02-17 15:56:42 +01:00
import org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation ;
2014-10-31 17:27:52 +01:00
import org.gcube.portlets.user.workspace.shared.WorkspaceUserQuote ;
2013-05-23 19:03:43 +02:00
import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingEntryType ;
import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingField ;
2013-02-28 12:32:45 +01:00
import org.gcube.portlets.user.workspaceapplicationhandler.ApplicationReaderFromGenericResource ;
2013-10-03 14:45:25 +02:00
import org.gcube.vomanagement.usermanagement.GroupManager ;
2013-10-02 15:39:39 +02:00
import org.gcube.vomanagement.usermanagement.UserManager ;
2013-10-03 14:45:25 +02:00
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager ;
2013-10-02 15:39:39 +02:00
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayUserManager ;
2013-02-06 15:40:17 +01:00
import com.google.gwt.user.server.rpc.RemoteServiceServlet ;
2014-10-28 17:12:40 +01:00
import com.liferay.portal.kernel.exception.PortalException ;
import com.liferay.portal.kernel.exception.SystemException ;
import com.liferay.portal.service.UserLocalServiceUtil ;
2013-02-06 15:40:17 +01:00
/ * *
* @author Francesco Mangiacrapa francesco . mangiacrapa @isti.cnr.it
*
* /
public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWTWorkspaceService {
2013-06-25 15:33:03 +02:00
2013-10-04 13:58:07 +02:00
/ * *
*
* /
protected static final String IDENTIFIER_IS_NULL = " Identifier is null " ;
2013-07-08 17:42:08 +02:00
protected static final String RETRIEVING_ITEM_EITHER_ITEM_DOESN_T_EXIST = " retrieving item. Either the item doesn't exist anymore or you do not have the permission to access it " ;
2013-02-06 15:40:17 +01:00
private static final long serialVersionUID = 2828885661214875589L ;
public static final String LAST_OPEN_FOLDER_ATTRIBUTE = " WORKSPACE.LAST_OPEN_FOLDER " ;
public static final String SELECTION_STATE_ATTRIBUTE = " WORKSPACE.SELECTION_STATE " ;
2013-03-11 19:06:56 +01:00
// protected GCUBELog workspaceLogger = new GCUBELog(GWTWorkspaceServiceImpl.class);
protected Logger workspaceLogger = Logger . getLogger ( GWTWorkspaceServiceImpl . class ) ;
2013-02-13 18:39:33 +01:00
2013-02-06 15:40:17 +01:00
protected GWTWorkspaceBuilder getGWTWorkspaceBuilder ( )
{
2013-06-13 18:44:46 +02:00
return WsUtil . getGWTWorkspaceBuilder ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2013-02-06 15:40:17 +01:00
}
protected Workspace getWorkspace ( ) throws InternalErrorException , HomeNotFoundException , WorkspaceFolderNotFoundException
{
2013-06-13 18:44:46 +02:00
return WsUtil . getWorkspace ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2013-02-06 15:40:17 +01:00
}
2013-02-13 18:39:33 +01:00
protected NotificationsProducer getNotificationProducer ( ) {
2013-06-13 18:44:46 +02:00
return WsUtil . getNotificationProducer ( WsUtil . getAslSession ( this . getThreadLocalRequest ( ) . getSession ( ) ) ) ;
2013-02-13 18:39:33 +01:00
}
2013-03-27 17:30:37 +01:00
protected ScopeUtilFilter getScopeUtilFilter ( ) {
2013-06-13 18:44:46 +02:00
return WsUtil . getScopeUtilFilter ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2013-03-27 17:30:37 +01:00
}
2013-02-14 15:06:34 +01:00
protected boolean isTestMode ( ) {
2015-01-28 15:02:18 +01:00
return ! WsUtil . isWithinPortal ( ) ;
2013-02-13 18:39:33 +01:00
}
2013-07-01 15:54:54 +02:00
protected UrlShortener getUrlShortener ( ) {
return WsUtil . getUrlShortener ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
}
2013-02-06 15:40:17 +01:00
2013-07-08 17:42:08 +02:00
protected UriResolverReaderParameter getUriResolver ( ) {
return WsUtil . getUriResolver ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
}
2014-03-05 17:45:33 +01:00
protected PropertySpecialFolderReader getPropertySpecialFolderReader ( ) {
2014-03-05 18:28:49 +01:00
String absolutePathProperty = getSpecialFolderPath ( ) ;
return WsUtil . getPropertySpecialFolderReader ( this . getThreadLocalRequest ( ) . getSession ( ) , absolutePathProperty ) ;
}
/ * *
*
* @param type the type to look for
2014-03-17 14:43:06 +01:00
* @return the Category if there is correspondance , null otherwise
2014-03-05 18:28:49 +01:00
* /
private String getSpecialFolderPath ( ) {
ServletContext servletContext = getServletContext ( ) ;
String contextPath = servletContext . getRealPath ( File . separator ) ;
return contextPath + File . separator + " conf " + File . separator + ConstantsExplorer . SPECIALFOLDERNAMEPROPERTIESFILE ;
2014-03-05 17:45:33 +01:00
}
2013-02-06 15:40:17 +01:00
@Override
public FolderModel getRootForTree ( ) throws Exception {
2013-02-27 19:17:22 +01:00
workspaceLogger . trace ( " getRoot " ) ;
2013-02-06 15:40:17 +01:00
try {
workspaceLogger . trace ( " getting workspace " ) ;
Workspace workspace = getWorkspace ( ) ;
WorkspaceFolder root = workspace . getRoot ( ) ;
if ( root = = null ) {
2013-10-04 13:58:07 +02:00
workspaceLogger . error ( " The root is null " ) ;
2013-02-06 15:40:17 +01:00
throw new Exception ( " The root is null " ) ;
}
workspaceLogger . trace ( " Root loaded, gxt conversion " ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
FolderModel gwtroot = builder . buildWorkspaceFileModelRoot ( root ) ;
workspaceLogger . trace ( " Root converted, returnig... " ) ;
return gwtroot ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server during root retrieving " , e ) ;
// workspaceLogger.trace("Error in server During root retrieving " + e);
//GWT can't serialize all exceptions
throw new Exception ( " Error during workspace loading, please contact the support. Exception: " + e ) ;
}
}
@Override
public FolderModel getRootForTree ( String scopeId ) throws Exception {
workspaceLogger . info ( " getRoot for scope " + scopeId ) ;
workspaceLogger . trace ( " getting workspace " ) ;
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
workspaceLogger . trace ( " on server getRoot for scope: " + scopeId ) ;
2013-10-04 13:58:07 +02:00
// GCUBEScope gcubeScope = null;
//
// if(scopeId.compareTo(ScopeUtilFilter.IDALLSCOPE)!=0){
// gcubeScope = GCUBEScope.getScope(scopeId);
// }
2013-09-27 17:39:28 +02:00
WorkspaceFolder root = workspace . getRoot ( ) ;
2013-02-06 15:40:17 +01:00
if ( root = = null ) {
2013-10-04 13:58:07 +02:00
workspaceLogger . error ( " The root is null " ) ;
2013-02-06 15:40:17 +01:00
throw new Exception ( " The root is null " ) ;
}
workspaceLogger . trace ( " Root loaded, gxt conversion " ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
workspaceLogger . trace ( " Root converted, returnig... " ) ;
return builder . buildWorkspaceFileModelRoot ( root ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server during root retrieving " , e ) ;
// workspaceLogger.trace("Error in server During root retrieving " + e);
//GWT can't serialize all exceptions
throw new Exception ( " Error during workspace loading, please contact the support. Exception: " + e ) ;
}
}
@Override
public List < FileGridModel > getItemsBySearchName ( String text ) throws Exception {
2014-05-12 14:29:29 +02:00
workspaceLogger . info ( " searching by name: " + text ) ;
2013-02-06 15:40:17 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
2014-05-12 14:29:29 +02:00
workspaceLogger . info ( " Calling search HL.. " ) ;
2013-02-06 15:40:17 +01:00
List < SearchItem > listSearchItems = workspace . searchByName ( text ) ;
2014-05-12 14:29:29 +02:00
workspaceLogger . info ( " HL search returning " + listSearchItems . size ( ) + " items " ) ;
workspaceLogger . info ( " Converting " + listSearchItems . size ( ) + " items " ) ;
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
List < FileGridModel > listFileGridModels = new ArrayList < FileGridModel > ( ) ;
2014-05-12 14:29:29 +02:00
2013-11-15 12:12:17 +01:00
listFileGridModels = builder . buildGXTListFileGridModelItemForSearch ( listSearchItems ) ;
2014-05-12 14:29:29 +02:00
workspaceLogger . info ( " Search objects converted, returning " ) ;
2013-02-06 15:40:17 +01:00
return listFileGridModels ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server During search retrieving " , e ) ;
// workspaceLogger.trace("Error in server During search retrieving " + e);
//GWT can't serialize all exceptions
throw new Exception ( " Error during searching, please contact the support. " ) ;
}
}
@Override
2013-09-04 15:30:17 +02:00
public List < FileModel > getFolderChildren ( FolderModel folder ) throws Exception , SessionExpiredException {
2013-02-06 15:40:17 +01:00
Workspace workspace ;
2013-10-04 13:58:07 +02:00
2013-09-04 15:30:17 +02:00
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
2013-02-06 15:40:17 +01:00
try {
2013-10-04 13:58:07 +02:00
if ( folder = = null )
throw new Exception ( " Folder is null " ) ;
2013-09-04 15:30:17 +02:00
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get folder children for: " + folder . getIdentifier ( ) ) ;
2013-02-06 15:40:17 +01:00
workspace = getWorkspace ( ) ;
List < FileModel > listFileModels = new ArrayList < FileModel > ( ) ;
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
WorkspaceItem wsItem = workspace . getItem ( folder . getIdentifier ( ) ) ;
2013-05-23 19:03:43 +02:00
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2013-07-08 17:42:08 +02:00
2013-02-06 15:40:17 +01:00
listFileModels = builder . buildGXTListFileModelItem ( wsItem , folder ) ;
2014-03-05 17:45:33 +01:00
//ADDING SPECIAL FOLDER?
if ( wsItem . isRoot ( ) ) {
//ADD SPECIAL FOLDER
try {
workspaceLogger . info ( " Folder is root, loading special folders.. " ) ;
WorkspaceFolder specialFolder = workspace . getMySpecialFolders ( ) ;
FileModel specialFolderModel = builder . buildGXTFileModelItem ( specialFolder , folder ) ;
specialFolderModel . setSpecialFolder ( true ) ;
String newName = getNameForSpecialFolder ( ) ;
if ( ! newName . isEmpty ( ) ) {
workspaceLogger . info ( " Special folder name updated as: " + newName ) ;
specialFolderModel . setName ( newName ) ;
} else
workspaceLogger . info ( " Special folder name is empty, skipping " ) ;
listFileModels . add ( specialFolderModel ) ;
} catch ( Exception e ) {
workspaceLogger . warn ( " An error occurred on retrieving special folders for folder id: " + folder . getIdentifier ( ) , e ) ;
}
}
2013-02-06 15:40:17 +01:00
return listFileModels ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server During item retrieving " , e ) ;
// workspaceLogger.trace("Error in server During item retrieving " + e);
2013-07-08 17:42:08 +02:00
String error = ConstantsExplorer . SERVER_ERROR + RETRIEVING_ITEM_EITHER_ITEM_DOESN_T_EXIST ;
2013-02-06 15:40:17 +01:00
//GWT can't serialize all exceptions
2013-06-14 15:04:43 +02:00
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
}
2014-03-05 17:45:33 +01:00
private String getNameForSpecialFolder ( ) {
PropertySpecialFolderReader sfReader = getPropertySpecialFolderReader ( ) ;
if ( sfReader = = null ) {
workspaceLogger . warn ( " Reader is null, skypping set to special folder name " ) ;
return " " ;
}
workspaceLogger . info ( " Read special folder name: ' " + sfReader . getSpecialFolderName ( ) + " ', from property file.. " ) ;
return sfReader . getSpecialFolderName ( ) ;
}
2014-03-05 18:28:49 +01:00
2013-02-06 15:40:17 +01:00
@Override
2013-09-04 15:30:17 +02:00
public List < FileGridModel > getFolderChildrenForFileGrid ( FileModel folder ) throws Exception , SessionExpiredException {
2013-02-06 15:40:17 +01:00
2013-09-04 15:30:17 +02:00
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
2013-02-06 15:40:17 +01:00
try {
2013-10-04 13:58:07 +02:00
if ( folder = = null )
throw new Exception ( " Folder is null " ) ;
2013-02-06 15:40:17 +01:00
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get children for Grid for folder: " + folder . getIdentifier ( ) ) ;
2013-02-06 15:40:17 +01:00
2013-10-04 13:58:07 +02:00
Workspace workspace = getWorkspace ( ) ;
List < FileGridModel > listFileGridModels = new ArrayList < FileGridModel > ( ) ;
2013-02-06 15:40:17 +01:00
WorkspaceFolder wsFolder = ( WorkspaceFolder ) workspace . getItem ( folder . getIdentifier ( ) ) ;
2014-03-05 17:45:33 +01:00
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2014-03-05 17:45:33 +01:00
// Long startTime = System.currentTimeMillis();
2013-02-06 15:40:17 +01:00
List < WorkspaceItem > listItems = ( List < WorkspaceItem > ) wsFolder . getChildren ( ) ;
2014-03-05 17:45:33 +01:00
// Long endTime = System.currentTimeMillis() - startTime;
// String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime));
// workspaceLogger.debug("##HL FILLING: grid getChildren() returning "+listItems.size()+" elements in " + time);
2013-09-04 11:26:10 +02:00
2013-02-06 15:40:17 +01:00
listFileGridModels = builder . buildGXTListFileGridModelItem ( listItems , folder ) ;
2013-09-04 11:26:10 +02:00
2014-03-05 17:45:33 +01:00
//ADDING SPECIAL FOLDER?
if ( wsFolder . isRoot ( ) ) {
//ADD SPECIAL FOLDER
try {
workspaceLogger . info ( " Folder is root, loading special folders.. " ) ;
WorkspaceFolder specialFolder = workspace . getMySpecialFolders ( ) ;
FileGridModel specialFolderModel = builder . buildGXTFileGridModelItem ( specialFolder , folder ) ;
specialFolderModel . setSpecialFolder ( true ) ;
String newName = getNameForSpecialFolder ( ) ;
if ( ! newName . isEmpty ( ) ) {
workspaceLogger . info ( " Special folder name updated as: " + newName ) ;
specialFolderModel . setName ( newName ) ;
} else
workspaceLogger . info ( " Special folder name is empty, skipping " ) ;
listFileGridModels . add ( specialFolderModel ) ;
} catch ( Exception e ) {
workspaceLogger . warn ( " An error occurred on retrieving special folders for folder id: " + folder . getIdentifier ( ) , e ) ;
}
}
2013-02-06 15:40:17 +01:00
return listFileGridModels ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server During items retrieving " , e ) ;
// workspaceLogger.trace("Error in server During items retrieving " + e);
2013-06-14 15:04:43 +02:00
// e.printStackTrace();
2013-07-08 17:42:08 +02:00
String error = ConstantsExplorer . SERVER_ERROR + RETRIEVING_ITEM_EITHER_ITEM_DOESN_T_EXIST ;
2013-06-14 15:04:43 +02:00
//GWT can't serialize all exceptions
throw new Exception ( error ) ;
}
}
@Override
2013-09-04 16:34:31 +02:00
public List < FileGridModel > getFolderChildrenForFileGridById ( String folderId ) throws Exception , SessionExpiredException {
2013-06-14 15:04:43 +02:00
2013-10-04 13:58:07 +02:00
2013-09-04 15:30:17 +02:00
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
2013-06-14 15:04:43 +02:00
try {
2013-10-04 13:58:07 +02:00
if ( folderId = = null )
throw new Exception ( " Folder id is null " ) ;
2013-06-14 15:04:43 +02:00
2013-10-04 13:58:07 +02:00
Workspace workspace = getWorkspace ( ) ;
2013-06-14 15:04:43 +02:00
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get children for Grid by id: " + folderId ) ;
2013-06-14 15:04:43 +02:00
List < FileGridModel > listFileGridModels = new ArrayList < FileGridModel > ( ) ;
if ( folderId = = null | | folderId . isEmpty ( ) ) {
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " id is null or empty, return " ) ;
2013-06-14 15:04:43 +02:00
return listFileGridModels ;
}
workspaceLogger . trace ( " get children for Grid by id: " + folderId ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
//BUILD PARENT
WorkspaceItem wsItem = workspace . getItem ( folderId ) ;
WorkspaceFolder parent ;
2013-09-24 15:51:02 +02:00
2013-06-14 15:04:43 +02:00
if ( wsItem . getType ( ) . equals ( WorkspaceItemType . SHARED_FOLDER ) | | wsItem . getType ( ) . equals ( WorkspaceItemType . FOLDER ) ) {
workspaceLogger . trace ( " item id: " + folderId + " is of type: " + wsItem . getType ( ) ) ;
2013-09-24 15:51:02 +02:00
parent = ( WorkspaceFolder ) wsItem ;
2013-06-14 15:04:43 +02:00
} else {
workspaceLogger . trace ( " item id: " + folderId + " is not a folder but of type: " + wsItem . getType ( ) + " , get parent " ) ;
parent = wsItem . getParent ( ) ;
}
if ( parent = = null )
return listFileGridModels ;
2013-09-24 15:51:02 +02:00
2013-06-14 15:04:43 +02:00
FileGridModel wsParent = builder . buildGXTFileGridModelItem ( parent , null ) ;
2013-09-24 15:51:02 +02:00
//PARENT BUILDED IS SHARED?
if ( parent . isShared ( ) ) {
wsParent . setShared ( true ) ;
wsParent . setShareable ( false ) ;
}
2013-06-14 15:04:43 +02:00
Long startTime = System . currentTimeMillis ( ) ;
//GET CHILDREN
List < WorkspaceItem > listItems = ( List < WorkspaceItem > ) parent . getChildren ( ) ;
Long endTime = System . currentTimeMillis ( ) - startTime ;
String time = String . format ( " %d msc %d sec " , endTime , TimeUnit . MILLISECONDS . toSeconds ( endTime ) ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . debug ( " grid getChildren() returning " + listItems . size ( ) + " elements in " + time ) ;
2013-06-14 15:04:43 +02:00
listFileGridModels = builder . buildGXTListFileGridModelItem ( listItems , wsParent ) ;
return listFileGridModels ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server During items retrieving " , e ) ;
// workspaceLogger.trace("Error in server During items retrieving " + e);
2013-07-08 17:42:08 +02:00
String error = ConstantsExplorer . SERVER_ERROR + RETRIEVING_ITEM_EITHER_ITEM_DOESN_T_EXIST ;
2013-06-06 18:04:06 +02:00
// e.printStackTrace();
//GWT can't serialize all exceptions
2013-06-14 15:04:43 +02:00
throw new Exception ( error ) ;
2013-06-06 18:04:06 +02:00
}
}
@Override
public FileGridModel getItemForFileGrid ( String itemId ) throws Exception {
2013-10-04 13:58:07 +02:00
2013-06-06 18:04:06 +02:00
try {
2013-10-04 13:58:07 +02:00
if ( itemId = = null )
throw new Exception ( IDENTIFIER_IS_NULL ) ;
2013-06-06 18:04:06 +02:00
2013-10-04 13:58:07 +02:00
Workspace workspace = getWorkspace ( ) ;
workspaceLogger . trace ( " get child for Grid by id: " + itemId ) ;
2013-06-06 18:04:06 +02:00
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
2013-06-10 11:42:36 +02:00
2013-06-06 18:04:06 +02:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
Long startTime = System . currentTimeMillis ( ) ;
Long endTime = System . currentTimeMillis ( ) - startTime ;
String time = String . format ( " %d msc %d sec " , endTime , TimeUnit . MILLISECONDS . toSeconds ( endTime ) ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . debug ( " get child for Grid by id returning element in " + time ) ;
2013-06-06 18:04:06 +02:00
2013-06-10 11:42:36 +02:00
//BUILD PARENT
WorkspaceFolder folder = wsItem . getParent ( ) ; //get parent
FileGridModel wsFolder = builder . buildGXTFileGridModelItem ( folder , null ) ;
//BUILD ITEM
return builder . buildGXTFileGridModelItem ( wsItem , wsFolder ) ;
2013-06-06 18:04:06 +02:00
2013-06-10 11:42:36 +02:00
2013-06-06 18:04:06 +02:00
} catch ( Exception e ) {
2013-06-10 11:42:36 +02:00
workspaceLogger . error ( " Error in server during item retrieving, getItemForFileGrid " , e ) ;
2013-07-08 17:42:08 +02:00
String error = ConstantsExplorer . SERVER_ERROR + RETRIEVING_ITEM_EITHER_ITEM_DOESN_T_EXIST ;
2013-06-10 11:42:36 +02:00
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
}
@Override
public Boolean moveItem ( String itemId , String destinationId ) throws Exception {
2013-02-27 19:17:22 +01:00
workspaceLogger . trace ( " moveItem itemId: " + itemId + " destination: " + destinationId ) ;
2013-02-06 15:40:17 +01:00
2014-01-14 14:41:03 +01:00
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
2013-02-06 15:40:17 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
if ( itemId = = null )
throw new Exception ( IDENTIFIER_IS_NULL ) ;
workspaceLogger . trace ( " moveItem item: " + itemId + " destination: " + destinationId ) ;
2013-02-27 19:17:22 +01:00
WorkspaceItem sourceItem = workspace . getItem ( itemId ) ; //GET SOURCE ITEM BEFORE OF MOVE
if ( sourceItem = = null )
return Boolean . FALSE ;
String sourceSharedId = null ;
boolean sourceItemIsShared = sourceItem . isShared ( ) ;
if ( sourceItemIsShared )
sourceSharedId = sourceItem . getIdSharedFolder ( ) ; //GET SHARED ID BEFORE OF MOVE
2014-07-14 17:21:43 +02:00
workspaceLogger . trace ( " moveItem item: " + itemId + " sourceItem name " + sourceItem . getName ( ) + " shared: " + sourceItemIsShared + " destination: " + destinationId ) ;
2013-02-27 19:17:22 +01:00
2014-07-14 17:21:43 +02:00
WorkspaceItem destinationItem = workspace . moveItem ( itemId , destinationId ) ; //move item
2013-02-27 19:17:22 +01:00
WorkspaceItem folderDestinationItem = workspace . getItem ( destinationId ) ; //retrieve folder destination
2014-07-14 17:21:43 +02:00
workspaceLogger . trace ( " sourceItem.isShared() " + sourceItemIsShared ) ;
workspaceLogger . trace ( " folderDestinationItem item: " + destinationId + " folderDestinationItem name " + folderDestinationItem . getName ( ) + " folderDestinationItem shared: " + folderDestinationItem . isShared ( ) ) ;
2013-02-27 19:17:22 +01:00
if ( folderDestinationItem ! = null ) {
try {
2014-07-14 17:21:43 +02:00
checkNotifyAddItemToShare ( destinationItem , sourceSharedId , folderDestinationItem ) ;
2013-06-13 18:44:46 +02:00
checkNotifyMoveItemFromShare ( sourceItemIsShared , sourceItem , sourceSharedId , folderDestinationItem ) ;
2013-02-27 19:17:22 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " An error occurred in checkNotify " , e ) ;
}
}
2013-02-06 15:40:17 +01:00
return Boolean . TRUE ;
2013-02-20 14:51:36 +01:00
} catch ( InsufficientPrivilegesException e ) {
workspaceLogger . error ( " Error in server Item move " , e ) ;
String error = " An error occurred on moving item. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server Item move " , e ) ;
2013-02-20 14:51:36 +01:00
String error = ConstantsExplorer . SERVER_ERROR + " moving item. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
}
2013-02-27 19:17:22 +01:00
2014-01-24 16:01:15 +01:00
@Override
public Boolean moveItems ( List < String > ids , String destinationId ) throws Exception {
workspaceLogger . trace ( " moveItems " + ids . size ( ) + " , destination: " + destinationId ) ;
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
boolean error = false ;
try {
Workspace workspace = getWorkspace ( ) ;
for ( String itemId : ids ) {
if ( itemId = = null )
throw new Exception ( IDENTIFIER_IS_NULL ) ;
workspaceLogger . trace ( " moveItem item: " + itemId + " destination: " + destinationId ) ;
WorkspaceItem sourceItem = workspace . getItem ( itemId ) ; //GET SOURCE ITEM BEFORE OF MOVE
if ( sourceItem = = null ) {
error = true ;
break ;
}
String sourceSharedId = null ;
boolean sourceItemIsShared = sourceItem . isShared ( ) ;
if ( sourceItemIsShared )
sourceSharedId = sourceItem . getIdSharedFolder ( ) ; //GET SHARED ID BEFORE OF MOVE
2014-07-14 17:23:07 +02:00
workspaceLogger . trace ( " moveItem item: " + itemId + " sourceItem name " + sourceItem . getName ( ) + " shared: " + sourceItemIsShared + " destination: " + destinationId ) ;
2014-01-24 16:01:15 +01:00
2014-07-14 17:23:07 +02:00
WorkspaceItem destinationItem = workspace . moveItem ( itemId , destinationId ) ; //move item
2014-01-24 16:01:15 +01:00
WorkspaceItem folderDestinationItem = workspace . getItem ( destinationId ) ; //retrieve folder destination
2014-07-14 17:23:07 +02:00
workspaceLogger . trace ( " sourceItem.isShared() " + sourceItemIsShared ) ;
workspaceLogger . trace ( " folderDestinationItem item: " + destinationId + " folderDestinationItem name " + folderDestinationItem . getName ( ) + " folderDestinationItem shared: " + folderDestinationItem . isShared ( ) ) ;
2014-01-24 16:01:15 +01:00
if ( folderDestinationItem ! = null ) {
try {
2014-07-14 17:23:07 +02:00
checkNotifyAddItemToShare ( destinationItem , sourceSharedId , folderDestinationItem ) ;
2014-01-24 16:01:15 +01:00
checkNotifyMoveItemFromShare ( sourceItemIsShared , sourceItem , sourceSharedId , folderDestinationItem ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " An error occurred in checkNotify " , e ) ;
}
}
}
if ( error )
return Boolean . FALSE ;
return Boolean . TRUE ;
} catch ( InsufficientPrivilegesException e ) {
workspaceLogger . error ( " Error in server Item move " , e ) ;
String error1 = " An error occurred on moving item. " + e . getMessage ( ) ;
throw new Exception ( error1 ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server Item move " , e ) ;
String error2 = ConstantsExplorer . SERVER_ERROR + " moving item. " + e . getMessage ( ) ;
throw new Exception ( error2 ) ;
}
}
2014-07-14 17:21:43 +02:00
private void checkNotifyAddItemToShare ( final WorkspaceItem destinationItem , final String sourceSharedId , final WorkspaceItem folderDestinationItem ) {
2013-02-28 12:32:45 +01:00
workspaceLogger . trace ( " checkNotifyAddItemToShare " ) ;
2013-02-27 19:17:22 +01:00
if ( folderDestinationItem ! = null ) {
2013-02-28 12:32:45 +01:00
try {
//if folder destination is shared folder
if ( folderDestinationItem . isShared ( ) ) { //Notify Added Item To Sharing?
2013-02-27 19:17:22 +01:00
2014-07-14 17:21:43 +02:00
workspaceLogger . trace ( " checkNotifyAddItemToShare destination item: " + destinationItem . getName ( ) + " sourceSharedId: " + sourceSharedId + " folder destination: " + folderDestinationItem . getName ( ) ) ;
2013-02-27 19:17:22 +01:00
2013-02-28 12:32:45 +01:00
//share condition is true if source shared folder is null or not equal to destination shared folder
boolean shareChangeCondition = ( sourceSharedId = = null ) | | ( sourceSharedId . compareTo ( folderDestinationItem . getIdSharedFolder ( ) ) ! = 0 ) ;
//System.out.println("shareChangeCondition add item: "+ shareChangeCondition);
workspaceLogger . trace ( " shareChangeCondition add item: " + shareChangeCondition ) ;
2013-02-27 19:17:22 +01:00
2013-02-28 12:32:45 +01:00
//if shareChangeCondition is true.. notifies added item to sharing
if ( shareChangeCondition ) {
List < InfoContactModel > listContacts = getListUserSharedByFolderSharedId ( folderDestinationItem . getIdSharedFolder ( ) ) ;
//DEBUG
printContacts ( listContacts ) ;
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem destinationSharedFolder = workspace . getItem ( folderDestinationItem . getIdSharedFolder ( ) ) ;
NotificationsProducer np = getNotificationProducer ( ) ;
2014-05-14 15:47:17 +02:00
if ( destinationSharedFolder instanceof WorkspaceSharedFolder ) {
2014-07-14 17:21:43 +02:00
np . notifyAddedItemToSharing ( listContacts , destinationItem , ( WorkspaceSharedFolder ) destinationSharedFolder ) ;
2014-05-14 15:47:17 +02:00
workspaceLogger . trace ( " The notifies sent correctly " ) ;
}
else
2014-07-14 17:21:43 +02:00
workspaceLogger . warn ( " Notifies added item: " + destinationItem + " to share doesn't sent because " + destinationSharedFolder + " is not istance of WorkspaceSharedFolder " ) ;
2013-02-28 12:32:45 +01:00
// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem);
}
}
else
workspaceLogger . trace ( " folder destination is not shared " ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " An error occurred in verifyNotifyAddItemToShare " , e ) ;
2013-02-27 19:17:22 +01:00
}
} else
2013-02-28 12:32:45 +01:00
workspaceLogger . warn ( " The notifies is failure in verifyNotifyAddItemToShare because folder destination item is null " ) ;
2013-02-27 19:17:22 +01:00
}
2013-06-13 18:44:46 +02:00
private void checkNotifyMoveItemFromShare ( final boolean sourceItemIsShared , final WorkspaceItem sourceItem , final String sourceSharedId , final WorkspaceItem folderDestinationItem ) {
2013-02-28 12:32:45 +01:00
2013-06-13 18:44:46 +02:00
workspaceLogger . trace ( " checkNotifyMoveItemFromShare: " ) ;
2013-02-28 12:32:45 +01:00
try {
2013-02-27 19:17:22 +01:00
2013-02-28 12:32:45 +01:00
if ( folderDestinationItem ! = null ) {
String idSharedFolder = folderDestinationItem . getIdSharedFolder ( ) ! = null ? folderDestinationItem . getIdSharedFolder ( ) : " " ;
//share condition is true if source shared folder is not equal to destination shared folder
boolean shareChangeCondition = sourceSharedId = = null ? false : ( sourceSharedId . compareTo ( idSharedFolder ) ! = 0 ) ;
2013-06-13 18:44:46 +02:00
workspaceLogger . trace ( " checkNotifyMoveItemFromShare source item: " + sourceItem . getName ( ) + " sourceSharedId: " + sourceSharedId + " folder destination: " + folderDestinationItem . getName ( ) + " sourceItemIsShared: " + sourceItemIsShared ) ;
2013-02-28 12:32:45 +01:00
// System.out.println("shareChangeCondition remove item: "+ shareChangeCondition);
workspaceLogger . trace ( " shareChangeCondition remove item: " + shareChangeCondition ) ;
//Notify Removed Item To Sharing?
//if source Item is shared and folder destination is not shared or shareChangeCondition is true.. notifies removed item to sharing
if ( sourceItemIsShared & & ( ! folderDestinationItem . isShared ( ) | | shareChangeCondition ) ) {
//get contacts
List < InfoContactModel > listContacts = getListUserSharedByFolderSharedId ( sourceSharedId ) ;
//DEBUG
printContacts ( listContacts ) ;
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem sourceSharedFolder = workspace . getItem ( sourceSharedId ) ;
//System.out.println(" name sourceSharedFolder: "+ sourceSharedFolder.getName());
NotificationsProducer np = getNotificationProducer ( ) ;
2014-05-14 15:47:17 +02:00
if ( sourceSharedFolder instanceof WorkspaceSharedFolder ) {
np . notifyMovedItemToSharing ( listContacts , sourceItem , ( WorkspaceSharedFolder ) sourceSharedFolder ) ;
workspaceLogger . trace ( " The notifies was sent correctly " ) ;
} else
workspaceLogger . warn ( " Notifies moved item: " + sourceItem + " from share doesn't sent because " + sourceSharedFolder + " is not istance of WorkspaceSharedFolder " ) ;
2013-02-28 12:32:45 +01:00
}
} else
2013-06-13 18:44:46 +02:00
workspaceLogger . warn ( " The notifies is failure in checkNotifyMoveItemFromShare because folder destination item is null " ) ;
2013-02-27 19:17:22 +01:00
2013-02-28 12:32:45 +01:00
} catch ( Exception e ) {
2013-06-13 18:44:46 +02:00
workspaceLogger . error ( " An error occurred in checkNotifyMoveItemFromShare " , e ) ;
2013-02-28 12:32:45 +01:00
}
2013-02-27 19:17:22 +01:00
}
//DEBUG
private void printContacts ( List < InfoContactModel > listContacts ) {
2013-02-28 12:32:45 +01:00
boolean testMode = isTestMode ( ) ;
if ( testMode )
System . out . println ( " Contacts: " ) ;
else
workspaceLogger . trace ( " Contacts: " ) ;
2013-02-27 19:17:22 +01:00
for ( InfoContactModel infoContactModel : listContacts ) {
2013-02-28 12:32:45 +01:00
if ( testMode )
System . out . println ( " User: " + infoContactModel ) ;
else
workspaceLogger . trace ( " User: " + infoContactModel ) ;
2013-02-27 19:17:22 +01:00
}
}
2014-09-24 16:51:42 +02:00
//DEBUG
private void printList ( List < String > list ) {
for ( String string : list ) {
workspaceLogger . trace ( string ) ;
}
}
2013-02-06 15:40:17 +01:00
@Override
public Boolean removeItem ( String itemId ) throws Exception {
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
try {
2013-10-04 13:58:07 +02:00
if ( itemId = = null )
throw new Exception ( IDENTIFIER_IS_NULL ) ;
2013-02-06 15:40:17 +01:00
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " removeItem item for id: " + itemId ) ;
2013-06-13 18:44:46 +02:00
//NOTIFICATION
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
//SAVING ATTRIBUTE FOR NOTIFICATION
boolean sourceItemIsShared = wsItem . isShared ( ) ;
String itemName = wsItem . getName ( ) ;
String sourceFolderSharedId = null ;
2013-10-04 13:58:07 +02:00
2013-06-13 18:44:46 +02:00
if ( sourceItemIsShared ) {
sourceFolderSharedId = wsItem . getIdSharedFolder ( ) ;
}
//REMOVE ITEM
2013-02-06 15:40:17 +01:00
workspace . removeItem ( itemId ) ;
2013-03-25 11:14:26 +01:00
2013-06-13 18:44:46 +02:00
//IF SOURCE SHARED FOLDER IS NOT NULL
if ( sourceFolderSharedId ! = null )
NotificationsUtil . checkSendNotifyRemoveItemToShare ( this . getThreadLocalRequest ( ) . getSession ( ) , sourceItemIsShared , itemName , itemId , sourceFolderSharedId ) ;
2013-02-06 15:40:17 +01:00
return Boolean . TRUE ;
2013-02-20 14:51:36 +01:00
} catch ( InsufficientPrivilegesException e ) {
workspaceLogger . error ( " Error in server Item remove " , e ) ;
2014-02-19 17:13:49 +01:00
String error = " Insufficient Privileges to remove the item " ;
2013-02-20 14:51:36 +01:00
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
2013-06-25 15:33:03 +02:00
} catch ( ItemNotFoundException e ) {
String error = " An error occurred on deleting item. " + ConstantsExplorer . ERROR_ITEM_DOES_NOT_EXIST ;
workspaceLogger . error ( error , e ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server Item remove " , e ) ;
2013-02-20 14:51:36 +01:00
String error = ConstantsExplorer . SERVER_ERROR + " deleting item. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
}
@Override
2013-03-25 17:35:27 +01:00
public Boolean renameItem ( String itemId , String newName , String previousName ) throws Exception {
2013-10-04 13:58:07 +02:00
2014-01-14 14:41:03 +01:00
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
2013-02-06 15:40:17 +01:00
try {
2013-10-04 13:58:07 +02:00
if ( itemId = = null )
throw new Exception ( IDENTIFIER_IS_NULL ) ;
2013-02-06 15:40:17 +01:00
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " rename item itemId: " + itemId + " old name " + previousName + " , new name: " + newName ) ;
2013-02-06 15:40:17 +01:00
workspace . renameItem ( itemId , newName ) ;
2013-03-25 11:14:26 +01:00
//NOTIFIER
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
if ( wsItem . isShared ( ) ) {
try {
List < InfoContactModel > listSharedContact = new ArrayList < InfoContactModel > ( ) ;
NotificationsProducer notification = getNotificationProducer ( ) ;
listSharedContact = getListUserSharedByFolderSharedId ( wsItem . getIdSharedFolder ( ) ) ;
2013-06-13 18:44:46 +02:00
if ( NotificationsUtil . isASharedFolder ( wsItem ) ) {
notification . notifyFolderRenamed ( listSharedContact , wsItem , previousName , newName , wsItem . getIdSharedFolder ( ) ) ;
2013-03-25 11:14:26 +01:00
} else {
2014-05-14 15:47:17 +02:00
//TWO CASES: EITHER ROOT FOLDER AS WorkspaceSharedFolder OR DOESN'T.
WorkspaceItem sharedFolder = workspace . getItem ( wsItem . getIdSharedFolder ( ) ) ;
if ( sharedFolder instanceof WorkspaceSharedFolder )
notification . notifyItemRenamed ( listSharedContact , previousName , wsItem , ( WorkspaceSharedFolder ) sharedFolder ) ;
else
workspaceLogger . trace ( " Notifies for rename item itemId: " + itemId + " doesn't sent because: " + sharedFolder + " is not an instance of WorkspaceSharedFolder " ) ;
// notification.notifyItemRenamed(listSharedContact, previousName, wsItem, sharedFolder);
2013-03-25 11:14:26 +01:00
}
} catch ( Exception e ) {
workspaceLogger . error ( " An error occurred in checkNotify " , e ) ;
return true ;
}
}
2013-02-06 15:40:17 +01:00
return true ;
2014-02-12 19:46:39 +01:00
} catch ( InsufficientPrivilegesException e ) {
2014-02-13 18:40:59 +01:00
String error = " Insufficient Privileges to rename the item " ;
2014-02-12 19:46:39 +01:00
workspaceLogger . error ( error , e ) ;
throw new Exception ( error ) ;
2013-03-26 17:31:13 +01:00
} catch ( ItemAlreadyExistException e ) {
2013-06-25 15:33:03 +02:00
String error = " An error occurred on renaming item, " + e . getMessage ( ) ;
workspaceLogger . error ( error , e ) ;
throw new Exception ( error ) ;
} catch ( ItemNotFoundException e2 ) {
String error = " An error occurred on renaming item. " + ConstantsExplorer . ERROR_ITEM_DOES_NOT_EXIST ;
workspaceLogger . error ( error , e2 ) ;
2013-03-26 17:31:13 +01:00
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
2013-06-25 15:33:03 +02:00
String error = ConstantsExplorer . SERVER_ERROR + " renaming item. " + ConstantsExplorer . TRY_AGAIN ;
workspaceLogger . error ( error , e ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
}
@Override
public FolderModel createFolder ( String nameFolder , String description , FileModel parent ) throws Exception {
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " create folder: " + nameFolder + " parent is null " + parent = = null ) ;
2013-02-06 15:40:17 +01:00
try {
2013-10-04 13:58:07 +02:00
if ( nameFolder = = null )
throw new Exception ( " Folder name is null " ) ;
Workspace workspace = getWorkspace ( ) ;
2013-02-06 15:40:17 +01:00
WorkspaceFolder wsFolder = workspace . createFolder ( nameFolder , description , parent . getIdentifier ( ) ) ;
2013-02-27 19:17:22 +01:00
WorkspaceItem folderDestinationItem = workspace . getItem ( parent . getIdentifier ( ) ) ;
checkNotifyAddItemToShare ( wsFolder , null , folderDestinationItem ) ;
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGXTFolderModelItem ( wsFolder , parent ) ;
2014-02-13 18:40:59 +01:00
} catch ( InsufficientPrivilegesException e ) {
String error = " Insufficient Privileges to create the folder " ;
workspaceLogger . error ( error , e ) ;
throw new Exception ( error ) ;
} catch ( ItemAlreadyExistException e ) {
String error = " An error occurred on creating folder, " + e . getMessage ( ) ;
workspaceLogger . error ( error , e ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
2014-02-13 18:40:59 +01:00
String error = ConstantsExplorer . SERVER_ERROR + " creating folder. " + ConstantsExplorer . TRY_AGAIN ;
workspaceLogger . error ( error , e ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
}
@Override
public FileDetailsModel getDetailsFile ( FileModel folder ) throws Exception {
try {
2013-10-04 13:58:07 +02:00
if ( folder = = null )
throw new Exception ( " Folder is null " ) ;
workspaceLogger . trace ( " load file details: " + folder . getName ( ) ) ;
Workspace workspace = getWorkspace ( ) ;
2013-02-06 15:40:17 +01:00
WorkspaceItem wsItem = workspace . getItem ( folder . getIdentifier ( ) ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGWTWorkspaceFileDetails ( wsItem , folder ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in load server file details " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public ArrayList < SubTree > getChildrenSubTreeToRootByIdentifier ( String itemIdentifier ) throws Exception {
ArrayList < SubTree > listSubTree = new ArrayList < SubTree > ( ) ;
try {
2013-10-04 13:58:07 +02:00
if ( itemIdentifier = = null )
throw new Exception ( IDENTIFIER_IS_NULL ) ;
2013-02-06 15:40:17 +01:00
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " search itemId: " + itemIdentifier ) ;
2013-02-06 15:40:17 +01:00
WorkspaceItem item = workspace . getItem ( itemIdentifier ) ; //get item from workspace
getListsChildrenByParents ( listSubTree , item ) ;
Collections . reverse ( listSubTree ) ; //reverse order of array
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server find Item " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
return listSubTree ;
}
@Override
public List < FileGridModel > getSmartFolderResultsByCategory ( String category ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get smart folder by category: " + category ) ;
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
List < SearchItem > listWorkspaceItems = new ArrayList < SearchItem > ( ) ;
//Category IMAGES
if ( category . equals ( GXTCategoryItemInterface . SMF_IMAGES . toString ( ) ) ) {
listWorkspaceItems = workspace . getFolderItems ( FolderItemType . IMAGE_DOCUMENT , FolderItemType . EXTERNAL_IMAGE ) ;
//Category BIODIVERSITY
} else if ( category . equals ( GXTCategoryItemInterface . SMF_BIODIVERSITY . toString ( ) ) ) {
listWorkspaceItems = workspace . getFolderItems ( FolderItemType . AQUAMAPS_ITEM ) ;
//Category DOCUMENTS
} else if ( category . equals ( GXTCategoryItemInterface . SMF_DOCUMENTS . toString ( ) ) ) {
listWorkspaceItems = workspace . getFolderItems (
FolderItemType . EXTERNAL_FILE ,
FolderItemType . EXTERNAL_PDF_FILE ,
FolderItemType . QUERY ,
FolderItemType . PDF_DOCUMENT ,
FolderItemType . METADATA ,
FolderItemType . WORKFLOW_REPORT ,
FolderItemType . WORKFLOW_TEMPLATE ,
// FolderItemType.URL_DOCUMENT,
FolderItemType . DOCUMENT
) ;
//Category LINKS
} else if ( category . equals ( GXTCategoryItemInterface . SMF_LINKS . toString ( ) ) ) {
listWorkspaceItems = workspace . getFolderItems ( FolderItemType . EXTERNAL_URL , FolderItemType . URL_DOCUMENT , FolderItemType . EXTERNAL_RESOURCE_LINK ) ;
//Category REPORTS
} else if ( category . equals ( GXTCategoryItemInterface . SMF_REPORTS . toString ( ) ) ) {
listWorkspaceItems = workspace . getFolderItems ( FolderItemType . REPORT_TEMPLATE , FolderItemType . REPORT ) ;
//Category TIME SERIES
} else if ( category . equals ( GXTCategoryItemInterface . SMF_TIMESERIES . toString ( ) ) ) {
listWorkspaceItems = workspace . getFolderItems ( FolderItemType . TIME_SERIES ) ;
}
else
new Exception ( " Smart folder category unknown " ) ;
return builder . filterListFileGridModelItemByCategory ( listWorkspaceItems , category ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get smart folder by category " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
private void getListsChildrenByParents ( ArrayList < SubTree > listSubTree , WorkspaceItem item ) throws Exception {
if ( item = = null | | item . getParent ( ) = = null ) {
// listParents.add(item);
return ;
}
2014-02-13 15:19:42 +01:00
FolderModel parentModel = new FolderModel ( item . getParent ( ) . getId ( ) , item . getParent ( ) . getName ( ) , null , true , item . getParent ( ) . isShared ( ) , false ) ; //Create parent model
2013-02-06 15:40:17 +01:00
List < FileModel > childrenList = getFolderChildren ( parentModel ) ; //create children list
SubTree subTree = new SubTree ( parentModel , childrenList ) ;
listSubTree . add ( subTree ) ;
getListsChildrenByParents ( listSubTree , item . getParent ( ) ) ;
}
@Override
public SmartFolderModel createSmartFolder ( String name , String description , String query ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " create smart folder by name: " + name ) ;
workspaceLogger . trace ( " description " + description ) ;
2013-02-06 15:40:17 +01:00
workspaceLogger . trace ( " query " + query ) ;
WorkspaceSmartFolder wsSmartFolder = workspace . createSmartFolder ( name , description , query ) ; //create Smart Folder from workspace
workspaceLogger . trace ( " create : " + wsSmartFolder . getName ( ) + " id " + wsSmartFolder . getId ( ) ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGXTSmartFolderModel ( wsSmartFolder , query ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server create smart folder by name: " , e ) ;
// workspaceLogger.trace("Error in server create smart folder by id " + e);
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public Boolean removeSmartFolder ( String itemId , String name ) throws Exception {
2013-10-04 13:58:07 +02:00
if ( itemId = = null )
return null ;
2013-02-06 15:40:17 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " remove smart folder by id: " + itemId ) ;
2013-02-06 15:40:17 +01:00
workspace . removeItem ( itemId ) ; //remove Smart Folder from workspace
return true ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in remove smart folder by id: " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public List < SmartFolderModel > getAllSmartFolders ( ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get all smart folder " ) ;
2013-02-06 15:40:17 +01:00
List < WorkspaceSmartFolder > listWorkspaceFolder = new ArrayList < WorkspaceSmartFolder > ( ) ;
listWorkspaceFolder = workspace . getAllSmartFolders ( ) ; //create Smart Folder from workspace
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " list smart folders size " + listWorkspaceFolder . size ( ) ) ;
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGXTListSmartFolderModel ( listWorkspaceFolder ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get all smart folder: " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public List < FileGridModel > getSmartFolderResultsById ( String folderId ) throws Exception {
2013-10-04 13:58:07 +02:00
if ( folderId = = null )
return null ;
2013-02-06 15:40:17 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get smart folder by id: " + folderId ) ;
2013-02-06 15:40:17 +01:00
WorkspaceSmartFolder wsSmartFolder = workspace . getSmartFolder ( folderId ) ; //get Smart Folder from workspace
workspaceLogger . trace ( " wsFolder " + wsSmartFolder . getName ( ) ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
workspaceLogger . trace ( " children size " + wsSmartFolder . getSearchItems ( ) . size ( ) ) ;
2013-11-15 12:12:17 +01:00
return builder . buildGXTListFileGridModelItemForSearch ( ( List < SearchItem > ) wsSmartFolder . getSearchItems ( ) ) ;
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in get server smart folder by id " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public GWTWorkspaceItem getImageById ( String identifier , boolean isInteralImage , boolean fullDetails ) throws Exception {
2013-10-04 13:58:07 +02:00
if ( identifier = = null )
return null ;
2013-02-06 15:40:17 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get image by id: " + identifier ) ;
2013-02-06 15:40:17 +01:00
WorkspaceItem item = workspace . getItem ( identifier ) ; //get item from workspace
2013-07-24 16:44:26 +02:00
//ACCOUNTING READ
item . markAsRead ( true ) ;
2013-02-06 15:40:17 +01:00
workspaceLogger . trace ( " item name " + item . getName ( ) ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGWTWorkspaceImage ( item , isInteralImage , fullDetails ) ;
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get image by id " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public GWTWorkspaceItem getTimeSeriesById ( String identifier ) throws Exception {
2013-10-04 13:58:07 +02:00
if ( identifier = = null )
return null ;
2013-02-06 15:40:17 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get timeseries by id: " + identifier ) ;
2013-02-06 15:40:17 +01:00
WorkspaceItem item = workspace . getItem ( identifier ) ; //get item from workspace
workspaceLogger . trace ( " item name " + item . getName ( ) ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGWTTimeSeries ( ( TimeSeries ) item , null ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get timeseries by id " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public GWTWorkspaceItem getUrlById ( String identifier , boolean isInternalUrl , boolean fullDetails ) throws Exception {
try {
2013-10-04 13:58:07 +02:00
if ( identifier = = null )
throw new Exception ( IDENTIFIER_IS_NULL ) ;
2013-02-06 15:40:17 +01:00
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get url by id: " + identifier ) ;
2013-02-06 15:40:17 +01:00
WorkspaceItem item = workspace . getItem ( identifier ) ; //get item from workspace
workspaceLogger . trace ( " item name " + item . getName ( ) ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
// return builder.buildGXTImage(item, isInteralImage, fullDetails);
return builder . buildGWTWorspaceUrl ( item , isInternalUrl , fullDetails ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get image by id " , e ) ;
// workspaceLogger.trace("Error in server get image by id " + e);
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public FileModel createExternalUrl ( FileModel parentFileModel , String name , String description , String url ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
if ( parentFileModel = = null )
throw new Exception ( " Parent item is null " ) ;
workspaceLogger . trace ( " create url in parent id: " + parentFileModel . getIdentifier ( ) ) ;
2013-02-06 15:40:17 +01:00
2013-02-13 18:39:33 +01:00
//DEBUG
2013-02-06 15:40:17 +01:00
// workspaceLogger.trace("Name " + name);
// workspaceLogger.trace("description " + description);
// workspaceLogger.trace("url " + url);
2013-02-13 18:39:33 +01:00
// workspaceLogger.trace("parentFileModel " + parentFileModel.getIdentifier() + " " + parentFileModel.getName());
2013-02-06 15:40:17 +01:00
// if(description == null)
// description = "";
ExternalUrl ext = workspace . createExternalUrl ( name , description , url , parentFileModel . getIdentifier ( ) ) ;
WorkspaceItem parent = workspace . getItem ( parentFileModel . getIdentifier ( ) ) ; //get item from workspace
workspaceLogger . trace ( " parent name " + parent . getName ( ) ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGXTFileModelItem ( ext , parentFileModel ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server create url in parent id " , e ) ;
// workspaceLogger.trace("Error in server create url in parent id " + e);
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
2013-02-14 15:06:34 +01:00
@Override
2013-02-20 14:28:25 +01:00
public String getURLFromApplicationProfile ( String oid ) throws Exception {
2013-02-15 12:51:01 +01:00
String urlPortlet = " " ;
2013-02-20 14:28:25 +01:00
ApplicationReaderFromGenericResource app = new ApplicationReaderFromGenericResource ( ) ;
2013-02-14 15:06:34 +01:00
try {
2013-10-04 13:58:07 +02:00
if ( oid = = null )
throw new Exception ( IDENTIFIER_IS_NULL ) ;
2013-03-25 11:14:26 +01:00
2013-06-13 18:44:46 +02:00
ASLSession session = WsUtil . getAslSession ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2013-02-15 12:51:01 +01:00
2013-06-13 18:44:46 +02:00
if ( WsUtil . isVRE ( session ) ) {
2013-03-25 11:14:26 +01:00
2013-09-27 17:39:28 +02:00
ScopeProvider . instance . set ( session . getScope ( ) ) ;
2013-03-25 11:14:26 +01:00
// GET WORKSPACE
2013-09-27 17:39:28 +02:00
Workspace workspace = HomeLibrary . getUserWorkspace ( session . getUsername ( ) ) ;
2013-03-25 11:14:26 +01:00
// GET ITEM FROM WORKSPACE
WorkspaceItem item = workspace . getItem ( oid ) ;
// ITEM IS A WorkspaceItemType.FOLDER_ITEM?
if ( item . getType ( ) . equals ( WorkspaceItemType . FOLDER_ITEM ) ) {
FolderItem folderItem = ( FolderItem ) item ;
if ( folderItem . getFolderItemType ( ) . equals ( FolderItemType . REPORT ) ) {
setValueInSession ( " idreport " , oid ) ;
} else if ( folderItem . getFolderItemType ( ) . equals ( FolderItemType . REPORT_TEMPLATE ) ) {
setValueInSession ( " idtemplate " , oid ) ;
}
return " " ;
}
}
else
2013-06-13 18:44:46 +02:00
urlPortlet = app . getURLFromApplicationProfile ( oid , WsUtil . getAslSession ( this . getThreadLocalRequest ( ) . getSession ( ) ) , this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2013-02-20 14:28:25 +01:00
2013-02-14 15:06:34 +01:00
} catch ( Exception e ) {
2013-02-15 12:51:01 +01:00
workspaceLogger . error ( " getURLFromApplicationProfile " , e ) ;
throw new Exception ( " Sorry, an error occurred in retrieve application profile, try again " ) ;
2013-02-14 15:06:34 +01:00
}
2013-02-15 12:51:01 +01:00
return urlPortlet ;
2013-02-14 15:06:34 +01:00
}
2013-02-06 15:40:17 +01:00
@Override
public void setValueInSession ( String name , String value ) throws Exception {
try {
2013-06-13 18:44:46 +02:00
ASLSession session = WsUtil . getAslSession ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2013-02-06 15:40:17 +01:00
session . setAttribute ( name , value ) ;
workspaceLogger . trace ( " set value in session with name: " + name + " , value: " + value ) ;
2013-10-04 13:58:07 +02:00
// workspaceLogger.debug("WS Session Id = " + session.getExternalSessionID());
2013-02-06 15:40:17 +01:00
// System.out.println("set value in session with name: "+name+", value: "+value);
} catch ( Exception e ) {
workspaceLogger . error ( " setValueInSession " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public List < ScopeModel > getAllScope ( ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get all scope " ) ;
2013-03-27 17:30:37 +01:00
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2013-03-27 17:30:37 +01:00
ScopeUtilFilter scopeUtilFilter = getScopeUtilFilter ( ) ;
Home home = workspace . getHome ( ) ;
if ( home ! = null ) {
List < String > listIdFilterdScope = scopeUtilFilter . convertListScopeToPortlet ( home . listScopes ( ) ) ;
return builder . buildGXTListScopeModel ( listIdFilterdScope , scopeUtilFilter . getHashScopesFiltered ( ) ) ;
} else {
workspaceLogger . error ( " workspace.getHome() is null " ) ;
throw new Exception ( " Sorry, an error occurred on getting all scope. Please try later " ) ;
}
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get all scope " , e ) ;
e . printStackTrace ( ) ;
// workspaceLogger.trace("Error in server get all scope " + e.getMessage());
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public List < InfoContactModel > getAllContacts ( ) throws Exception {
try {
2014-03-10 17:33:33 +01:00
// Workspace workspace = getWorkspace();
2013-02-06 15:40:17 +01:00
2014-03-10 17:33:33 +01:00
workspaceLogger . trace ( " Get all contacts from server... " ) ;
2013-02-14 15:06:34 +01:00
2013-02-06 15:40:17 +01:00
// WorkspaceItem parent = workspace.getItem(parentFileModel.getIdentifier()); //get item from workspace
// workspace.getAllScope();
2013-02-14 15:06:34 +01:00
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2014-03-10 17:33:33 +01:00
org . gcube . common . homelibrary . home . workspace . usermanager . UserManager hlUserManager = HomeLibrary . getHomeManagerFactory ( ) . getUserManager ( ) ;
2013-02-14 15:06:34 +01:00
if ( isTestMode ( ) ) {
2013-03-11 19:06:56 +01:00
workspaceLogger . warn ( " WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS " ) ;
2013-02-14 15:06:34 +01:00
List < InfoContactModel > listContactsModel = new ArrayList < InfoContactModel > ( ) ;
2014-05-09 17:48:30 +02:00
HashMap < String , InfoContactModel > hashFakeUsers = GWTWorkspaceBuilder . getHashTestUsers ( ) ;
for ( String login : hashFakeUsers . keySet ( ) ) {
InfoContactModel contact = hashFakeUsers . get ( login ) ;
listContactsModel . add ( contact ) ;
}
// //TEST USERS
// listContactsModel.add(new InfoContactModel("antonio.gioia", "antonio.gioia", "Antonio Gioia",false));
// listContactsModel.add(new InfoContactModel("fabio.sinibaldi", "fabio.sinibaldi", "Fabio Sinibaldi",false));
// listContactsModel.add(new InfoContactModel("pasquale.pagano", "pasquale.pagano", "Pasquale Pagano",false));
// listContactsModel.add(new InfoContactModel(WsUtil.TEST_USER, WsUtil.TEST_USER, WsUtil.TEST_USER_FULL_NAME,false));
// listContactsModel.add(new InfoContactModel("francesco.mangiacrapa", "francesco.mangiacrapa", "Francesco Mangiacrapa",false));
// listContactsModel.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante",false));
2014-03-10 17:33:33 +01:00
workspaceLogger . trace ( " Home Library User Manager getting list Gcube Group " ) ;
listContactsModel . addAll ( builder . buildGXTListContactsModelFromGcubeGroup ( hlUserManager . getGroups ( ) ) ) ;
2013-02-14 15:06:34 +01:00
return listContactsModel ;
}
2013-10-02 15:39:39 +02:00
UserManager userManag = new LiferayUserManager ( ) ;
2013-10-03 14:45:25 +02:00
GroupManager gm = new LiferayGroupManager ( ) ;
String groupId = gm . getRootVO ( ) . getGroupId ( ) ;
2014-03-10 17:33:33 +01:00
workspaceLogger . trace ( " Liferay User Manager getting list users by group: " + groupId ) ;
List < InfoContactModel > listContactsModel = builder . buildGXTListContactsModelFromUserModel ( userManag . listUsersByGroup ( groupId ) ) ;
workspaceLogger . trace ( " Home Library User Manager getting list Gcube Group " ) ;
listContactsModel . addAll ( builder . buildGXTListContactsModelFromGcubeGroup ( hlUserManager . getGroups ( ) ) ) ;
return listContactsModel ;
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get all contacts " , e ) ;
2013-10-02 17:16:10 +02:00
// return new ArrayList<InfoContactModel>();
2013-02-06 15:40:17 +01:00
throw new Exception ( e . getMessage ( ) ) ;
}
}
// @Override
// public boolean sendTo(List<InfoContactModel> listContacts, List<FileModel> listAttachments, String subject, String text) throws Exception {
//
// try {
//
// Workspace workspace = getWorkspace();
//
// GCUBEClientLog logger = new GCUBEClientLog(GWTWorkspaceServiceImpl.class);
// logger.info("sendTo");
//
//// WorkspaceItem parent = workspace.getItem(parentFileModel.getIdentifier()); //get item from workspace
//// workspace.getAllScope();
//
// workspaceLogger.trace("######### SEND TO: ");
// workspaceLogger.trace("subject " + subject);
// workspaceLogger.trace("text " + text);
//
//
// GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
//
// return true;
//
// } catch (Exception e) {
// workspaceLogger.error("Error in server sendTo ", e);
// workspaceLogger.trace("Error in server get sendTo " + e.getMessage());
// //GWT can't serialize all exceptions
// throw new Exception(e.getMessage());
// }
// }
@Override
public boolean sendToById ( List < String > listContactsId , List < String > listAttachmentsId , String subject , String body ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
workspaceLogger . trace ( " ######### SEND TO: " ) ;
workspaceLogger . trace ( " subject " + subject ) ;
workspaceLogger . trace ( " body " + body ) ;
for ( String contactId : listContactsId )
workspaceLogger . trace ( " contactId " + contactId ) ;
for ( String id : listAttachmentsId )
workspaceLogger . trace ( " attachId " + id ) ;
workspace . getWorkspaceMessageManager ( ) . sendMessageToPortalLogins ( subject , body , listAttachmentsId , listContactsId ) ;
return true ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server sendTo " , e ) ;
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public List < MessageModel > getAllMessagesSent ( ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
workspaceLogger . trace ( " get All Messages Sent " ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
List < WorkspaceMessage > listMessages = workspace . getWorkspaceMessageManager ( ) . getSentMessages ( ) ;
return builder . buildGXTListMessageModelForGrid ( listMessages , GXTCategoryItemInterface . MS_SENT ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server getAllMessagesSent " , e ) ;
// workspaceLogger.trace("Error in server get getAllMessagesSent " + e.getMessage());
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public List < MessageModel > getAllMessagesReceived ( ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
workspaceLogger . trace ( " get All Messages Received " ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
List < WorkspaceMessage > listMessages = workspace . getWorkspaceMessageManager ( ) . getReceivedMessages ( ) ;
return builder . buildGXTListMessageModelForGrid ( listMessages , GXTCategoryItemInterface . MS_RECEIVED ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server getAllMessagesReceived " , e ) ;
// workspaceLogger.trace("Error in server get getAllMessagesReceived " + e.getMessage());
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public MessageModel getMessageById ( String messageIdentifier , String messageType ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " get Message by Id: " + messageIdentifier ) ;
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
WorkspaceMessage message = null ;
if ( messageType . equals ( GXTCategoryItemInterface . MS_RECEIVED ) )
message = workspace . getWorkspaceMessageManager ( ) . getReceivedMessage ( messageIdentifier ) ;
else
message = workspace . getWorkspaceMessageManager ( ) . getSentMessage ( messageIdentifier ) ;
List < WorkspaceItem > listWorkspaceItems = getListWorkspaceItemById ( workspace , message . getAttachmentsIds ( ) ) ;
return builder . buildGXTMessageModel ( message , listWorkspaceItems , messageType ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get Message by Id " , e ) ;
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
private List < WorkspaceItem > getListWorkspaceItemById ( Workspace workspace , List < String > listItemsId ) throws ItemNotFoundException , InternalErrorException {
List < WorkspaceItem > listWorkspaceItem = new ArrayList < WorkspaceItem > ( ) ;
for ( String itemId : listItemsId ) {
WorkspaceItem item = workspace . getItem ( itemId ) ;
workspaceLogger . trace ( " Attach name: " + item . getName ( ) ) ;
workspaceLogger . trace ( " Attach id: " + item . getId ( ) ) ;
listWorkspaceItem . add ( workspace . getItem ( itemId ) ) ; //get item from workspace
}
return listWorkspaceItem ;
}
@Override
public List < BulkCreatorModel > getListFolderBulkCreator ( ) throws Exception {
2013-12-03 14:21:46 +01:00
/ * try {
2013-02-06 15:40:17 +01:00
Workspace workspace = getWorkspace ( ) ;
List < FolderBulkCreator > listFBC = workspace . getFolderBulkCreatorManager ( ) . getActiveFolderBulkCreators ( ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGXTListBulkCreatorModel ( listFBC ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in getNewFolderBulkCreator " , e ) ;
// workspaceLogger.trace("Error in getNewFolderBulkCreator " + e.getMessage());
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
2013-12-03 14:21:46 +01:00
* /
return null ;
2013-02-06 15:40:17 +01:00
}
@Override
2014-03-05 17:45:33 +01:00
@Deprecated
/ * *
* use WsMailWidget
* /
2013-02-06 15:40:17 +01:00
public boolean sentToByMessageModel ( MessageModel message ) throws Exception {
return false ;
}
2014-03-05 17:45:33 +01:00
2013-02-06 15:40:17 +01:00
@Override
2014-03-05 17:45:33 +01:00
@Deprecated
/ * *
* use WsMailWidget
* /
2013-02-06 15:40:17 +01:00
public boolean saveAttachments ( String messageIdentifier , String messageType ) throws Exception {
2013-10-04 13:58:07 +02:00
try {
2013-02-06 15:40:17 +01:00
Workspace workspace = getWorkspace ( ) ;
workspaceLogger . trace ( " save attachments by messageIdentifier " + messageIdentifier ) ;
if ( messageType . equals ( GXTCategoryItemInterface . MS_SENT ) )
workspace . getWorkspaceMessageManager ( ) . getSentMessage ( messageIdentifier ) . saveAttachments ( workspace . getRoot ( ) . getId ( ) ) ;
else
workspace . getWorkspaceMessageManager ( ) . getReceivedMessage ( messageIdentifier ) . saveAttachments ( workspace . getRoot ( ) . getId ( ) ) ;
return true ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server save attachments by messageIdentifier " , e ) ;
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
2014-03-05 17:45:33 +01:00
@Deprecated
/ * *
* use WsMailWidget
* /
2013-02-06 15:40:17 +01:00
public boolean saveAttach ( String attachId ) throws Exception {
// TODO NOT USED
return false ;
}
@Override
public boolean markMessage ( String messageIdentifier , String messageType , boolean boolMark , String markType ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
workspaceLogger . trace ( " markMessageAsRead by messageIdentifier " + messageIdentifier + " boolMark " + boolMark + " messageType " + messageType ) ;
if ( messageType . equals ( GXTCategoryItemInterface . MS_RECEIVED ) ) {
// workspaceLogger.trace("#######################################Message identifier: "+messageIdentifier);
// workspaceLogger.trace("#######################################Message messageType: "+messageType);
if ( markType . equals ( " READ " ) ) {
workspace . getWorkspaceMessageManager ( ) . getReceivedMessage ( messageIdentifier ) . setStatus ( boolMark ) ;
} else if ( markType . equals ( " OPEN " ) ) {
workspace . getWorkspaceMessageManager ( ) . getReceivedMessage ( messageIdentifier ) . open ( ) ;
} else if ( markType . equals ( " BOTH " ) ) {
workspace . getWorkspaceMessageManager ( ) . getReceivedMessage ( messageIdentifier ) . setStatus ( boolMark ) ;
workspace . getWorkspaceMessageManager ( ) . getReceivedMessage ( messageIdentifier ) . open ( ) ;
}
}
else {
// workspaceLogger.trace("#######################################Message sent identifier: "+messageIdentifier);
// workspaceLogger.trace("#######################################Message sent messageType: "+messageType);
if ( markType . equals ( " READ " ) ) {
workspace . getWorkspaceMessageManager ( ) . getSentMessage ( messageIdentifier ) . setStatus ( boolMark ) ;
} else if ( markType . equals ( " OPEN " ) ) {
workspace . getWorkspaceMessageManager ( ) . getSentMessage ( messageIdentifier ) . open ( ) ;
} else if ( markType . equals ( " BOTH " ) ) {
workspace . getWorkspaceMessageManager ( ) . getSentMessage ( messageIdentifier ) . setStatus ( boolMark ) ;
workspace . getWorkspaceMessageManager ( ) . getSentMessage ( messageIdentifier ) . open ( ) ;
}
}
return true ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server markMessageAsRead by messageIdentifier " , e ) ;
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
2014-03-05 17:45:33 +01:00
@Deprecated
/ * *
* use WsMailWidget
* /
2013-02-06 15:40:17 +01:00
public boolean deleteMessage ( String messageIdentifier , String messageType ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
workspaceLogger . trace ( " deleteMessage by messageIdentifier " + messageIdentifier ) ;
if ( messageType . equals ( GXTCategoryItemInterface . MS_RECEIVED ) )
workspace . getWorkspaceMessageManager ( ) . deleteReceivedMessage ( messageIdentifier ) ;
else
workspace . getWorkspaceMessageManager ( ) . deleteSentMessage ( messageIdentifier ) ;
return true ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server deleteMessage by messageIdentifier " , e ) ;
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
2014-03-05 17:45:33 +01:00
@Override
@Deprecated
/ * *
* use WsMailWidget
* /
2013-02-06 15:40:17 +01:00
public List < MessageModel > getNewMessagesReceived ( ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
int count = workspace . getWorkspaceMessageManager ( ) . getMessagesNotOpened ( ) ;
List < MessageModel > listMessageModels = new ArrayList < MessageModel > ( ) ;
for ( int i = 0 ; i < count ; i + + )
listMessageModels . add ( new MessageModel ( ) ) ;
return listMessageModels ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server getNewMessagesReceived by messageIdentifier " , e ) ;
//GWT can't serialize all exceptions
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
2014-03-05 17:45:33 +01:00
@Deprecated
/ * *
* use WsMailWidget
* /
2013-02-06 15:40:17 +01:00
public List < MessageModel > searchInSentMessagesByText ( String text ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " searchInSentMessagesByText " + text ) ;
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
List < WorkspaceMessage > listMessages = workspace . getWorkspaceMessageManager ( ) . searchOutMessages ( text ) ;
return builder . buildGXTListMessageModelForGrid ( listMessages , GXTCategoryItemInterface . MS_SENT ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server searchInSentMessagesByText " , e ) ;
// workspaceLogger.trace("Error in server searchInSentMessagesByText " + e.getMessage());
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
2014-03-05 17:45:33 +01:00
@Deprecated
/ * *
* use WsMailWidget
* /
2013-02-06 15:40:17 +01:00
public List < MessageModel > searchInReceivedMessagesByText ( String text ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " searchInSentMessagesByText: " + text ) ;
2013-02-06 15:40:17 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
List < WorkspaceMessage > listMessages = workspace . getWorkspaceMessageManager ( ) . searchInMessages ( text ) ;
return builder . buildGXTListMessageModelForGrid ( listMessages , GXTCategoryItemInterface . MS_RECEIVED ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server searchInSentMessagesByText " , e ) ;
// workspaceLogger.trace("Error in server searchInSentMessagesByText " + e.getMessage());
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public boolean copyItem ( String itemId , String destinationFolderId ) throws Exception {
2014-01-14 14:41:03 +01:00
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
2013-02-06 15:40:17 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
2013-02-27 19:17:22 +01:00
WorkspaceItem sourceItem = workspace . getItem ( itemId ) ; //GET SOURCE ITEM BEFORE COPY
String sourceSharedId = sourceItem . getIdSharedFolder ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " copyItem by id: " + itemId ) ;
2013-02-06 15:40:17 +01:00
2014-07-14 17:21:43 +02:00
WorkspaceItem destinationItem = workspace . copy ( itemId , destinationFolderId ) ; //copy item
2013-02-27 19:17:22 +01:00
WorkspaceItem folderDestinationItem = workspace . getItem ( destinationFolderId ) ;
2014-07-14 17:21:43 +02:00
checkNotifyAddItemToShare ( destinationItem , sourceSharedId , folderDestinationItem ) ;
2013-02-06 15:40:17 +01:00
2014-07-14 17:21:43 +02:00
if ( destinationItem ! = null )
2013-02-06 15:40:17 +01:00
return true ;
return false ;
2013-02-20 14:51:36 +01:00
} catch ( InsufficientPrivilegesException e ) {
2013-03-26 17:31:13 +01:00
String error = " An error occurred on copying item, " + e . getMessage ( ) + " . " + ConstantsExplorer . TRY_AGAIN ;
2013-02-20 14:51:36 +01:00
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
2013-03-26 17:31:13 +01:00
} catch ( ItemAlreadyExistException e ) {
String error = " An error occurred on copying item, " + e . getMessage ( ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server copyItem by id " , e ) ;
2013-02-20 14:51:36 +01:00
String error = ConstantsExplorer . SERVER_ERROR + " copying item " + ConstantsExplorer . TRY_AGAIN ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
}
2014-01-23 17:20:38 +01:00
@Override
public boolean copyItems ( List < String > idsItem , String destinationFolderId ) throws Exception {
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
try {
Workspace workspace = getWorkspace ( ) ;
boolean error = false ;
for ( String itemId : idsItem ) {
WorkspaceItem sourceItem = workspace . getItem ( itemId ) ; //GET SOURCE ITEM BEFORE COPY
String sourceSharedId = sourceItem . getIdSharedFolder ( ) ;
workspaceLogger . trace ( " copyItem by id: " + itemId ) ;
2014-07-14 17:21:43 +02:00
WorkspaceItem destinationItem = workspace . copy ( itemId , destinationFolderId ) ; //copy item
2014-01-23 17:20:38 +01:00
WorkspaceItem folderDestinationItem = workspace . getItem ( destinationFolderId ) ;
2014-07-14 17:21:43 +02:00
checkNotifyAddItemToShare ( destinationItem , sourceSharedId , folderDestinationItem ) ;
2014-01-23 17:20:38 +01:00
2014-07-14 17:21:43 +02:00
if ( destinationItem = = null ) {
2014-01-23 17:20:38 +01:00
error = true ;
break ;
}
}
if ( error )
return false ; //Copied is false
return true ; //copied is true
} catch ( InsufficientPrivilegesException e ) {
String error = " An error occurred on copying item, " + e . getMessage ( ) + " . " + ConstantsExplorer . TRY_AGAIN ;
throw new Exception ( error ) ;
} catch ( ItemAlreadyExistException e ) {
String error = " An error occurred on copying item, " + e . getMessage ( ) ;
throw new Exception ( error ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server copyItem by id " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " copying item " + ConstantsExplorer . TRY_AGAIN ;
throw new Exception ( error ) ;
}
}
2013-02-06 15:40:17 +01:00
@Override
public boolean deleteBulk ( String bulkId ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
workspaceLogger . trace ( " delete bulk " + bulkId ) ;
2013-02-06 15:40:17 +01:00
workspace . getFolderBulkCreatorManager ( ) . getActiveFolderBulkCreator ( bulkId ) . remove ( ) ;
return true ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in getNewFolderBulkCreator " , e ) ;
// workspaceLogger.trace("Error in getNewFolderBulkCreator " + e.getMessage());
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public String getUrlWebDav ( String itemId ) throws Exception {
try {
Workspace workspace = getWorkspace ( ) ;
2013-10-04 13:58:07 +02:00
2013-02-06 15:40:17 +01:00
workspaceLogger . trace ( " getWebDavUrl " + itemId ) ;
return workspace . getUrlWebDav ( ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in getNewFolderBulkCreator " , e ) ;
// workspaceLogger.trace("Error in getNewFolderBulkCreator " + e.getMessage());
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
2014-02-11 16:41:56 +01:00
public boolean shareFolder ( FileModel folder , List < InfoContactModel > listContacts , boolean isNewFolder , WorkspaceACL acl ) throws Exception {
2013-02-06 15:40:17 +01:00
2014-01-14 14:41:03 +01:00
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
2013-02-06 15:40:17 +01:00
try {
2013-02-12 17:17:15 +01:00
2013-02-12 16:02:00 +01:00
Workspace workspace = getWorkspace ( ) ;
2013-02-06 15:40:17 +01:00
2014-03-17 14:43:06 +01:00
workspaceLogger . info ( " shareFolder " + folder . getIdentifier ( )
2013-02-12 17:17:15 +01:00
+ " name: " + folder . getName ( )
2014-03-17 14:43:06 +01:00
+ " parent is: " + folder . getParentFileModel ( )
2014-07-17 11:11:35 +02:00
+ " listContacts size: " + listContacts . size ( )
+ " ACL: " + acl ) ;
2013-07-11 15:37:35 +02:00
2013-02-12 16:02:00 +01:00
// //DEBUG
2013-02-28 12:32:45 +01:00
//System.out.println("shareFolder "+ folder.getIdentifier() + " name: "+ folder.getName() + " parent name: " + folder.getParentFileModel().getName() + " listContacts size: " + listContacts.size());
2013-02-12 17:17:15 +01:00
2013-02-28 12:32:45 +01:00
// for (InfoContactModel infoContactModel : listContacts) {
// System.out.println("share with "+ infoContactModel.getLogin());
// }
printContacts ( listContacts ) ;
2013-03-25 17:35:27 +01:00
List < String > listLogin = UserUtil . getListLoginByInfoContactModel ( listContacts ) ;
2013-02-06 15:40:17 +01:00
WorkspaceSharedFolder sharedFolder = null ;
2013-02-12 17:17:15 +01:00
2013-02-27 19:17:22 +01:00
List < InfoContactModel > listSharedContact = null ;
boolean sourceFolderIsShared = folder . isShared ( ) ;
if ( sourceFolderIsShared ) { //if source folder is already share... retrieve old list of sharing to notify
listSharedContact = getListUserSharedByFolderSharedId ( folder . getIdentifier ( ) ) ;
}
2013-02-12 17:17:15 +01:00
if ( listLogin . size ( ) > 0 ) {
2013-05-29 14:09:11 +02:00
if ( ! isNewFolder ) {
2013-02-12 17:17:15 +01:00
sharedFolder = workspace . shareFolder ( listLogin , folder . getIdentifier ( ) ) ;
2013-05-29 14:09:11 +02:00
sharedFolder . setDescription ( folder . getDescription ( ) ) ; //SET NEW DESCRIPTION
}
2014-03-17 14:43:06 +01:00
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 ) ;
}
2013-02-12 17:17:15 +01:00
}
2013-02-12 16:02:00 +01:00
boolean created = sharedFolder = = null ? false : true ;
2013-02-13 18:39:33 +01:00
2014-02-11 16:41:56 +01:00
if ( acl ! = null )
setACLs ( sharedFolder . getId ( ) , listLogin , acl . getId ( ) . toString ( ) ) ;
2013-02-13 18:39:33 +01:00
if ( created ) {
NotificationsProducer np = getNotificationProducer ( ) ;
2013-02-27 19:17:22 +01:00
if ( ! sourceFolderIsShared ) //if source folder is not already shared
np . notifyFolderSharing ( listContacts , sharedFolder ) ;
2013-03-25 17:35:27 +01:00
else {
2014-02-11 16:41:56 +01:00
/ * System . out . println ( " SHARED CONTACS: " ) ;
2013-03-25 17:35:27 +01:00
printContacts ( listSharedContact ) ;
System . out . println ( " NEW CONTACS: " ) ;
2014-02-11 16:41:56 +01:00
printContacts ( listContacts ) ; * /
2013-03-25 17:35:27 +01:00
np . notifyAddedUsersToSharing ( listSharedContact , listContacts , sharedFolder ) ;
}
2013-02-13 18:39:33 +01:00
}
2013-02-12 16:02:00 +01:00
return created ;
2013-02-06 15:40:17 +01:00
2013-02-20 14:51:36 +01:00
} catch ( InsufficientPrivilegesException e ) {
workspaceLogger . error ( " Error in shareFolder " , e ) ;
String error = " An error occurred on creating shared folder. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
} catch ( ItemAlreadyExistException e ) {
workspaceLogger . error ( " Error in shareFolder " , e ) ;
String error = " An error occurred on creating shared folder. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
} catch ( WrongDestinationException e ) {
workspaceLogger . error ( " Error in shareFolder " , e ) ;
String error = " An error occurred on creating shared folder. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in shareFolder " , e ) ;
2013-02-12 16:02:00 +01:00
e . printStackTrace ( ) ;
2013-02-27 19:17:22 +01:00
String error = ConstantsExplorer . SERVER_ERROR + " creating shared folder. " ;
2013-02-20 14:51:36 +01:00
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
}
@Override
public List < InfoContactModel > getListUserSharedByFolderSharedId ( String folderSharedId ) throws Exception {
workspaceLogger . trace ( " getListUserSharedByFolderSharedId " + folderSharedId ) ;
2013-03-11 19:06:56 +01:00
2013-02-06 15:40:17 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( folderSharedId ) ;
2013-06-13 18:44:46 +02:00
if ( NotificationsUtil . isASharedFolder ( wsItem ) ) {
2013-02-06 15:40:17 +01:00
WorkspaceSharedFolder wsFolder = ( WorkspaceSharedFolder ) wsItem ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2013-03-11 16:37:10 +01:00
List < String > listPortalLogin = wsFolder . getUsers ( ) ;
workspaceLogger . trace ( " getListUserSharedByFolderSharedId return " + listPortalLogin . size ( ) + " user " ) ;
2013-03-11 19:06:56 +01:00
if ( isTestMode ( ) )
return builder . buildGxtInfoContactFromPortalLoginTestMode ( listPortalLogin ) ;
2013-02-06 15:40:17 +01:00
2013-05-23 19:03:43 +02:00
return builder . buildGxtInfoContactsFromPortalLogins ( listPortalLogin ) ;
2013-02-06 15:40:17 +01:00
}
2015-02-16 14:46:38 +01:00
else
2013-02-13 18:39:33 +01:00
workspaceLogger . trace ( " the item with id: " + folderSharedId + " is not " + WorkspaceItemType . SHARED_FOLDER ) ;
2015-02-16 14:46:38 +01:00
2013-02-06 15:40:17 +01:00
return new ArrayList < InfoContactModel > ( ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in getListUserSharedByItemId " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
2013-03-25 11:14:26 +01:00
@Override
public List < InfoContactModel > getListUserSharedBySharedItem ( String sharedItemId ) throws Exception {
2015-02-16 14:46:38 +01:00
workspaceLogger . trace ( " Get ListUserSharedBySharedItem " + sharedItemId ) ;
2013-03-25 11:14:26 +01:00
try {
2015-02-16 14:46:38 +01:00
WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId ( sharedItemId ) ;
if ( wsFolder ! = null ) {
if ( isASharedFolder ( wsFolder , true ) ) {
2013-03-25 11:14:26 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2015-02-16 14:46:38 +01:00
WorkspaceSharedFolder wsSharedFolder = ( WorkspaceSharedFolder ) wsFolder ;
List < String > listPortalLogin = wsSharedFolder . getUsers ( ) ;
workspaceLogger . trace ( " getListUserSharedByFolderSharedId return " + listPortalLogin . size ( ) + " user/s " ) ;
2013-03-25 11:14:26 +01:00
if ( isTestMode ( ) )
return builder . buildGxtInfoContactFromPortalLoginTestMode ( listPortalLogin ) ;
2013-05-23 19:03:43 +02:00
return builder . buildGxtInfoContactsFromPortalLogins ( listPortalLogin ) ;
2015-02-16 14:46:38 +01:00
} else {
workspaceLogger . warn ( " wsFolder with id: " + sharedItemId + " is not a: " + WorkspaceItemType . SHARED_FOLDER + " , returning null " ) ;
return null ;
2013-03-25 11:14:26 +01:00
}
}
2015-02-16 14:46:38 +01:00
workspaceLogger . warn ( " wsFolder with id: " + sharedItemId + " is null, returning null " ) ;
return null ;
2013-03-25 11:14:26 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in getListUserSharedByItemId " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
2013-02-06 15:40:17 +01:00
@Override
public boolean unSharedFolderByFolderSharedId ( String folderSharedId ) throws Exception {
boolean unShared = false ;
2014-01-14 14:41:03 +01:00
if ( isSessionExpired ( ) )
throw new SessionExpiredException ( ) ;
2013-02-06 15:40:17 +01:00
workspaceLogger . trace ( " unSharedFolderByFolderSharedId " + folderSharedId ) ;
2014-09-29 18:11:33 +02:00
2013-02-06 15:40:17 +01:00
try {
2013-05-29 14:09:11 +02:00
2015-02-16 14:46:38 +01:00
if ( isASharedFolder ( folderSharedId , true ) ) {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( folderSharedId ) ;
workspaceLogger . trace ( " workspace return an item with name " + wsItem . getName ( ) ) ;
2013-02-06 15:40:17 +01:00
WorkspaceSharedFolder wsFolder = ( WorkspaceSharedFolder ) wsItem ;
2013-02-13 18:39:33 +01:00
2015-02-16 14:46:38 +01:00
List < InfoContactModel > contacts = getListUserSharedByFolderSharedId ( folderSharedId ) ;
2014-09-29 18:11:33 +02:00
String sharedFolderName = wsFolder . getName ( ) ;
2013-02-13 18:39:33 +01:00
2014-09-29 18:11:33 +02:00
//RETURN A NEW FOLDER
wsFolder . unShare ( ) ;
workspaceLogger . trace ( " no error incoming on unsharing " ) ;
unShared = true ;
2015-02-16 14:46:38 +01:00
2014-09-29 18:11:33 +02:00
NotificationsProducer np = getNotificationProducer ( ) ;
List < InfoContactModel > purgeMyContact = new ArrayList < InfoContactModel > ( contacts . size ( ) - 1 ) ;
2014-10-28 17:12:40 +01:00
String myLogin = getMyLogin ( ) . getUsername ( ) ;
2014-09-29 18:11:33 +02:00
workspaceLogger . trace ( " Preparing list of contacts to send un share notification " ) ;
for ( InfoContactModel infoContactModel : contacts ) {
2014-10-28 17:12:40 +01:00
if ( infoContactModel . getLogin ( ) . compareToIgnoreCase ( getMyLogin ( ) . getUsername ( ) ) = = 0 )
2014-09-29 18:11:33 +02:00
workspaceLogger . trace ( " skipping my login " + myLogin ) ;
else
purgeMyContact . add ( infoContactModel ) ;
2013-02-13 18:39:33 +01:00
}
2014-09-29 18:11:33 +02:00
workspaceLogger . trace ( " UNSHARE WITH: " ) ;
printContacts ( purgeMyContact ) ;
2013-05-29 14:09:11 +02:00
2014-09-29 18:11:33 +02:00
np . notifyFolderUnSharing ( purgeMyContact , folderSharedId , sharedFolderName ) ;
2013-02-06 15:40:17 +01:00
}
2015-02-16 14:46:38 +01:00
else {
String msg = " The item with id: " + folderSharedId + " is not a base shared folder " ;
workspaceLogger . warn ( " the item with id: " + folderSharedId + " is not " + WorkspaceItemType . SHARED_FOLDER + " or root shared folder " ) ;
throw new WorkspaceHandledException ( msg ) ;
}
2013-02-06 15:40:17 +01:00
2013-05-29 14:09:11 +02:00
} catch ( InternalErrorException e ) {
2013-02-20 14:51:36 +01:00
workspaceLogger . error ( " Error in unSharedFolderByFolderSharedId " , e ) ;
String error = " An error occerred on unsharing folder. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
2015-02-16 14:46:38 +01:00
} catch ( WorkspaceHandledException e ) {
String error = ConstantsExplorer . SERVER_ERROR + " unshare folder. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
2013-02-20 14:51:36 +01:00
2013-02-06 15:40:17 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in unSharedFolderByFolderSharedId " , e ) ;
2015-02-16 14:46:38 +01:00
String error = ConstantsExplorer . SERVER_ERROR + " unshare folder. Refresh folder and " + ConstantsExplorer . TRY_AGAIN ;
2013-02-20 14:51:36 +01:00
throw new Exception ( error ) ;
2013-02-06 15:40:17 +01:00
}
return unShared ;
}
2013-02-13 18:39:33 +01:00
2013-09-12 12:27:18 +02:00
/ * *
*
* @param itemIdentifier
* @param includeItemAsParent - if parameter is true and item passed in input is a folder , the folder is included in path returned as last parent
* @return
* @throws Exception
* /
2013-02-13 18:39:33 +01:00
@Override
2013-09-12 12:27:18 +02:00
public List < FileModel > getListParentsByItemIdentifier ( String itemIdentifier , boolean includeItemAsParent ) throws Exception {
2013-02-13 18:39:33 +01:00
List < FileModel > listParents = new ArrayList < FileModel > ( ) ;
workspaceLogger . trace ( " get List Parents By Item Identifier " + itemIdentifier ) ;
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( itemIdentifier ) ;
2013-03-26 17:31:13 +01:00
workspaceLogger . trace ( " workspace retrieve item name: " + wsItem . getName ( ) ) ;
2013-02-13 18:39:33 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2014-03-17 14:43:06 +01:00
String nameSpecialFolder = getNameForSpecialFolder ( ) ;
2013-09-12 12:27:18 +02:00
if ( includeItemAsParent = = true & & wsItem . getType ( ) . equals ( WorkspaceItemType . FOLDER ) ) {
2014-03-17 14:43:06 +01:00
listParents . add ( builder . buildGXTFolderModelItemHandleSpecialFolder ( ( WorkspaceFolder ) wsItem , null , nameSpecialFolder ) ) ;
2013-09-12 12:27:18 +02:00
}
2014-03-17 14:43:06 +01:00
2013-02-13 18:39:33 +01:00
while ( wsItem ! = null & & wsItem . getParent ( ) ! = null ) {
WorkspaceFolder wsFolder = wsItem . getParent ( ) ;
2014-03-17 14:43:06 +01:00
listParents . add ( builder . buildGXTFolderModelItemHandleSpecialFolder ( wsFolder , null , nameSpecialFolder ) ) ;
2013-02-13 18:39:33 +01:00
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 ) {
2013-03-27 17:30:37 +01:00
workspaceLogger . error ( " Error in get List Parents By Item Identifier " , e ) ;
2013-02-13 18:39:33 +01:00
e . printStackTrace ( ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
return listParents ;
}
2013-02-25 19:03:53 +01:00
@Override
public InfoContactModel getOwnerByItemId ( String itemId ) throws Exception {
workspaceLogger . trace ( " get Owner By ItemId " + itemId ) ;
try {
2015-01-28 12:42:48 +01:00
//TEST MODE
if ( ! isWithinPortal ( ) ) {
2015-01-29 11:55:28 +01:00
workspaceLogger . info ( " getOwnerByItemId is in test mode returning owner francesco.mangiacrapa " ) ;
2015-01-28 12:42:48 +01:00
return new InfoContactModel ( " francesco.mangiacrapa " , " francesco.mangiacrapa " , " Francesco Mangiacrapa " , false ) ;
}
2013-02-25 19:03:53 +01:00
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGXTInfoContactModel ( wsItem . getOwner ( ) ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in getOwnerByItemId " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
2014-03-17 14:43:06 +01:00
@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 ;
}
2013-03-25 11:14:26 +01:00
@Override
public String itemExistsInWorkpaceFolder ( String parentId , String itemName ) throws Exception {
workspaceLogger . trace ( " get itemExistsInWorkpace by parentId: " + parentId ) ;
System . out . println ( " get itemExistsInWorkpace by parentId: " + parentId ) ;
try {
2014-11-03 14:45:36 +01:00
2013-03-25 11:14:26 +01:00
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( parentId ) ; //GET PARENT
if ( wsItem . getType ( ) . equals ( WorkspaceItemType . FOLDER ) | | wsItem . getType ( ) . equals ( WorkspaceItemType . SHARED_FOLDER ) ) {
WorkspaceItem itemFound = workspace . find ( itemName , parentId ) ;
if ( itemFound = = null )
return null ;
return itemFound . getId ( ) ;
}
else
throw new Exception ( " Invalid Folder parent " ) ;
} catch ( InternalErrorException e ) {
return null ;
} catch ( ItemNotFoundException e ) {
return null ;
} catch ( Exception e ) {
String error = " an error occurred on search item in folder " ;
workspaceLogger . error ( error , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
2013-03-25 12:35:05 +01:00
@Override
public Date getItemCreationDateById ( String itemId ) throws Exception {
workspaceLogger . trace ( " get Item Creation Date By ItemId " + itemId ) ;
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
Calendar cl = wsItem . getCreationTime ( ) ;
if ( cl ! = null )
return cl . getTime ( ) ;
return null ;
} catch ( Exception e ) {
workspaceLogger . error ( " get Item Creation Date By ItemId " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
@Override
public Long loadSizeByItemId ( String itemId ) throws Exception {
2014-11-03 14:45:36 +01:00
workspaceLogger . info ( " get Size By ItemId " + itemId ) ;
2013-03-25 12:35:05 +01:00
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
Long size = new Long ( - 1 ) ;
2014-11-03 14:45:36 +01:00
if ( wsItem instanceof FolderItem ) { //ITEM
2013-03-25 12:35:05 +01:00
FolderItem folderItem = ( FolderItem ) wsItem ;
size = new Long ( folderItem . getLength ( ) ) ;
2014-11-03 14:45:36 +01:00
} else if ( wsItem instanceof WorkspaceFolder ) { //FOLDER
2014-10-28 17:12:40 +01:00
WorkspaceFolder theFolder = ( WorkspaceFolder ) wsItem ;
size = theFolder . getSize ( ) ;
2014-11-03 14:45:36 +01:00
} else if ( wsItem instanceof WorkspaceSharedFolder ) { //SHARED FOLDER
WorkspaceSharedFolder theFolder = ( WorkspaceSharedFolder ) wsItem ;
size = theFolder . getSize ( ) ;
2013-03-25 12:35:05 +01:00
}
2014-11-03 14:45:36 +01:00
workspaceLogger . info ( " returning size: " + size ) ;
2013-03-25 12:35:05 +01:00
return size ;
} catch ( Exception e ) {
workspaceLogger . error ( " get Size By ItemId " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
2013-03-26 12:35:58 +01:00
@Override
public Date loadLastModificationDateById ( String itemId ) throws Exception {
workspaceLogger . trace ( " get last modification date ItemId " + itemId ) ;
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
wsItem . getLastModificationTime ( ) . getTime ( ) ;
Date lastModification = null ;
if ( wsItem . getLastModificationTime ( ) ! = null ) {
lastModification = wsItem . getLastModificationTime ( ) . getTime ( ) ;
}
return lastModification ;
} catch ( Exception e ) {
workspaceLogger . error ( " get last modification date ItemId " , e ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
2013-03-27 17:30:37 +01:00
@Override
public FileModel getParentByItemId ( String identifier ) throws Exception {
workspaceLogger . trace ( " get Parent By Item Identifier " + identifier ) ;
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( identifier ) ;
workspaceLogger . trace ( " workspace retrieve item name: " + wsItem . getName ( ) ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
while ( wsItem ! = null & & wsItem . getParent ( ) ! = null ) {
WorkspaceFolder wsFolder = wsItem . getParent ( ) ;
workspaceLogger . trace ( " parent was found " + wsFolder . getName ( ) + " retuning " ) ;
return builder . buildGXTFolderModelItem ( wsFolder , null ) ;
}
workspaceLogger . trace ( " parent not found - retuning " ) ;
return null ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in get Parent By Item Identifier " , e ) ;
e . printStackTrace ( ) ;
throw new Exception ( e . getMessage ( ) ) ;
}
}
2013-05-23 19:03:43 +02:00
@Override
public List < GxtAccountingField > getAccountingReaders ( String identifier ) throws Exception {
workspaceLogger . trace ( " get accounting readers " + identifier ) ;
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( identifier ) ;
2013-08-28 14:36:38 +02:00
// List<AccountingEntry> accoutings = wsItem.getAccounting();
2013-05-23 19:03:43 +02:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
List < GxtAccountingField > listReaders = builder . buildGXTAccountingItemFromReaders ( wsItem . getReaders ( ) ) ;
workspaceLogger . trace ( " get accounting readers - returning size " + listReaders . size ( ) ) ;
return listReaders ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error get accounting readers " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " getting account. " + ConstantsExplorer . TRY_AGAIN ;
throw new Exception ( error ) ;
}
}
@Override
public List < GxtAccountingField > getAccountingHistory ( String identifier ) throws Exception {
workspaceLogger . trace ( " get accounting history " + identifier ) ;
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( identifier ) ;
List < AccountingEntry > accoutings = wsItem . getAccounting ( ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2013-08-28 14:36:38 +02:00
List < GxtAccountingField > listReaders = builder . buildGXTAccountingItem ( accoutings , GxtAccountingEntryType . ALL ) ;
2013-05-23 19:03:43 +02:00
workspaceLogger . trace ( " get accounting readers - returning size " + listReaders . size ( ) ) ;
return listReaders ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error get accounting readers " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " getting account. " + ConstantsExplorer . TRY_AGAIN ;
throw new Exception ( error ) ;
}
}
2013-06-28 18:42:10 +02:00
/ * ( non - Javadoc )
* @see org . gcube . portlets . user . workspace . client . rpc . GWTWorkspaceService # getShortUrl ( java . lang . String )
* /
@Override
public String getShortUrl ( String longUrl ) throws Exception {
workspaceLogger . trace ( " get short url for " + longUrl ) ;
2013-07-01 15:54:54 +02:00
UrlShortener shortener = getUrlShortener ( ) ;
2013-06-28 18:42:10 +02:00
try {
2013-07-01 15:54:54 +02:00
if ( shortener ! = null & & shortener . isAvailable ( ) )
return shortener . shorten ( longUrl ) ;
return longUrl ;
2013-06-28 18:42:10 +02:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error get short url for " , e ) ;
return longUrl ;
}
}
2013-07-08 17:42:08 +02:00
/ * *
*
* @param itemId
* @param shortenUrl
* @return
* /
@Override
public String getPublicLinkForFolderItemId ( String itemId , boolean shortenUrl ) throws Exception {
workspaceLogger . trace ( " get Public Link For ItemId: " + itemId ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
if ( wsItem . getType ( ) . equals ( WorkspaceItemType . FOLDER_ITEM ) ) {
FolderItem folderItem = ( FolderItem ) wsItem ;
String smpUri = builder . getPubliLinkForFolderItem ( folderItem ) ;
if ( smpUri = = null | | smpUri . isEmpty ( ) )
throw new Exception ( " Sorry, public link on " + wsItem . getName ( ) + " is not available " ) ;
UriResolverReaderParameter uriResolver = getUriResolver ( ) ;
String uriRequest = " " ;
if ( uriResolver ! = null & & uriResolver . isAvailable ( ) ) {
2013-07-09 14:48:34 +02:00
String itemName = StringUtil . removeSpecialCharacters ( folderItem . getName ( ) ) ;
itemName = StringUtil . replaceAllWhiteSpace ( itemName , " _ " ) ;
uriRequest = uriResolver . resolveAsUriRequest ( smpUri , itemName , folderItem . getMimeType ( ) , true ) ;
2013-07-11 11:55:56 +02:00
2013-07-09 14:48:34 +02:00
2013-07-11 11:55:56 +02:00
//VALIDATE CONNECTION
2014-11-14 18:09:02 +01:00
if ( ! HttpRequestUtil . urlExists ( uriRequest + " &validation=true " ) )
2013-07-11 11:55:56 +02:00
throw new Exception ( " Sorry, The Public Link for selected file is unavailable " ) ;
2014-11-14 18:09:02 +01:00
2013-07-08 17:42:08 +02:00
if ( shortenUrl )
2013-07-11 11:55:56 +02:00
uriRequest = getShortUrl ( uriRequest ) ;
2013-07-08 17:42:08 +02:00
return uriRequest ;
2013-07-11 11:55:56 +02:00
2013-07-08 17:42:08 +02:00
}
else
throw new Exception ( " Sorry, The Uri resolver service is temporarily unavailable. Please try again later " ) ;
2013-07-11 15:37:35 +02:00
} else {
workspaceLogger . warn ( " ItemId: " + itemId + " is not a folder item, sent exception Public Link unavailable " ) ;
throw new Exception ( " Sorry, The Public Link for selected file is unavailable " ) ;
2013-07-08 17:42:08 +02:00
}
2013-07-11 15:37:35 +02:00
2013-07-08 17:42:08 +02:00
} catch ( Exception e ) {
2014-01-21 18:11:36 +01:00
workspaceLogger . error ( " Error getPublicLinkForFolderItemId for item: " + itemId , e ) ;
2013-07-11 11:55:56 +02:00
throw new Exception ( e . getMessage ( ) ) ;
2013-07-08 17:42:08 +02:00
}
}
2013-09-02 12:43:57 +02:00
/ * ( non - Javadoc )
* @see org . gcube . portlets . user . workspace . client . rpc . GWTWorkspaceService # isSessionExpired ( )
* /
@Override
public boolean isSessionExpired ( ) throws Exception {
2014-01-13 11:54:11 +01:00
return WsUtil . isSessionExpired ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2013-09-02 12:43:57 +02:00
}
2014-01-15 12:49:40 +01:00
/ * ( non - Javadoc )
* @see org . gcube . portlets . user . workspace . client . rpc . GWTWorkspaceService # deleteListItemsForIds ( java . util . List )
* /
@Override
public void deleteListItemsForIds ( List < String > ids ) throws Exception {
try {
if ( ids = = null )
throw new Exception ( " List identifiers is null " ) ;
Workspace workspace = getWorkspace ( ) ;
workspaceLogger . trace ( " removeItem item for list size: " + ids . size ( ) ) ;
for ( String itemId : ids ) {
//NOTIFICATION
WorkspaceItem wsItem = workspace . getItem ( itemId ) ;
//SAVING ATTRIBUTE FOR NOTIFICATION
boolean sourceItemIsShared = wsItem . isShared ( ) ;
String itemName = wsItem . getName ( ) ;
String sourceFolderSharedId = null ;
if ( sourceItemIsShared ) {
sourceFolderSharedId = wsItem . getIdSharedFolder ( ) ;
}
//REMOVE ITEM
workspace . removeItem ( itemId ) ;
//IF SOURCE SHARED FOLDER IS NOT NULL
if ( sourceFolderSharedId ! = null )
NotificationsUtil . checkSendNotifyRemoveItemToShare ( this . getThreadLocalRequest ( ) . getSession ( ) , sourceItemIsShared , itemName , itemId , sourceFolderSharedId ) ;
}
} catch ( InsufficientPrivilegesException e ) {
workspaceLogger . error ( " Error in server Item remove " , e ) ;
String error = " An error occurred on deleting item. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
} catch ( ItemNotFoundException e ) {
String error = " An error occurred on deleting item. " + ConstantsExplorer . ERROR_ITEM_DOES_NOT_EXIST ;
workspaceLogger . error ( error , e ) ;
throw new Exception ( error ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server Item remove " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " deleting item. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
}
}
2014-02-11 12:53:10 +01:00
/ * *
*
* @param folderId
* @param listUserIds
* @param aclType
* @throws Exception
* /
@Override
public void setACLs ( String folderId , List < String > listLogins , String aclType ) throws Exception {
try {
2014-02-11 16:41:56 +01:00
2014-02-11 12:53:10 +01:00
if ( folderId = = null )
throw new Exception ( " Folder id is null " ) ;
if ( listLogins = = null | | listLogins . size ( ) = = 0 )
throw new Exception ( " List Logins is null or empty " ) ;
2014-02-11 16:41:56 +01:00
workspaceLogger . trace ( " Setting ACL for folder id: " + folderId ) ;
workspaceLogger . trace ( " ACL type is: " + aclType ) ;
2014-02-11 12:53:10 +01:00
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( folderId ) ;
2015-01-28 12:42:48 +01:00
if ( wsItem ! = null & & wsItem . isFolder ( ) & & wsItem . isShared ( ) ) {
WorkspaceSharedFolder ite ;
if ( wsItem . getType ( ) . equals ( WorkspaceItemType . SHARED_FOLDER ) ) {
//IS ROOT SHARED FOLDER
ite = ( WorkspaceSharedFolder ) workspace . getItemByPath ( wsItem . getPath ( ) ) ;
} else {
// IS SUB FOLDER OF THE SHARING
ite = ( WorkspaceSharedFolder ) workspace . getItem ( wsItem . getIdSharedFolder ( ) ) ;
}
2014-02-11 12:53:10 +01:00
ite . setACL ( listLogins , ACLType . valueOf ( aclType ) ) ;
} else
throw new Exception ( " Source item is not shared or shared folder " ) ;
2014-02-11 16:41:56 +01:00
workspaceLogger . trace ( " Setting ACL completed, retuning " ) ;
2014-02-11 12:53:10 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in set ACLs " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " setting permissions. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
}
}
/ * *
*
* @return
* @throws Exception
* /
@Override
public List < WorkspaceACL > getACLs ( ) throws Exception {
try {
2014-02-17 15:56:42 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . getWorkspaceACLFromACLs ( Arrays . asList ( ACLType . values ( ) ) ) ;
2014-02-11 12:53:10 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get ACLs " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " get ACL rules. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
}
}
2014-02-12 12:49:07 +01:00
2014-10-28 17:12:40 +01:00
/ * *
*
* @return true if you ' re running into the portal , false if in development
* /
private boolean isWithinPortal ( ) {
try {
UserLocalServiceUtil . getService ( ) ;
return true ;
}
catch ( Exception ex ) {
workspaceLogger . trace ( " Development Mode ON " ) ;
return false ;
}
}
2014-02-12 12:49:07 +01:00
@Override
2014-10-28 17:12:40 +01:00
public UserBean getMyLogin ( ) {
2014-02-12 12:49:07 +01:00
ASLSession asl = WsUtil . getAslSession ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2014-10-28 17:12:40 +01:00
String username = asl . getUsername ( ) ;
String email = username + " @isti.cnr.it " ;
String firstName = " Testing " ;
String lastName = " User " ;
if ( isWithinPortal ( ) & & username . compareTo ( WsUtil . TEST_USER ) ! = 0 ) {
com . liferay . portal . model . UserModel user = null ;
try {
user = UserLocalServiceUtil . getUserByScreenName ( OrganizationsUtil . getCompany ( ) . getCompanyId ( ) , username ) ;
firstName = user . getFirstName ( ) ;
lastName = user . getLastName ( ) ;
email = user . getEmailAddress ( ) ;
} catch ( PortalException | SystemException e ) {
e . printStackTrace ( ) ;
}
}
return new UserBean ( username , firstName , lastName , email ) ;
2014-02-12 12:49:07 +01:00
}
2014-02-14 15:28:35 +01:00
/ * *
*
* @param folderId
* @param listUserIds
* @param aclType
* @throws Exception
* /
@Override
2014-03-18 11:13:34 +01:00
public void updateACLForVREbyGroupName ( String folderId , String aclType ) throws Exception {
2014-02-14 15:28:35 +01:00
try {
if ( folderId = = null )
throw new Exception ( " Folder id is null " ) ;
2014-03-06 15:31:04 +01:00
workspaceLogger . trace ( " Updating ACL to VRE FOLDER id: " + folderId ) ;
2014-02-14 15:28:35 +01:00
workspaceLogger . trace ( " ACL type is: " + aclType ) ;
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem wsItem = workspace . getItem ( folderId ) ;
if ( wsItem . isShared ( ) & & ( wsItem . getType ( ) . equals ( WorkspaceItemType . SHARED_FOLDER ) ) ) {
WorkspaceSharedFolder ite = ( WorkspaceSharedFolder ) workspace . getItemByPath ( wsItem . getPath ( ) ) ;
2014-03-17 18:22:59 +01:00
//PATCH TODO TEMPORARY SOLUTION
if ( ite . isVreFolder ( ) ) {
List < String > groupName = new ArrayList < String > ( ) ;
groupName . add ( wsItem . getName ( ) ) ;
ite . setACL ( groupName , ACLType . valueOf ( aclType ) ) ;
}
2014-02-14 15:28:35 +01:00
} else
throw new Exception ( " Source item is not shared or shared folder " ) ;
2014-03-06 15:31:04 +01:00
workspaceLogger . trace ( " Updating ACL completed, retuning " ) ;
2014-02-14 15:28:35 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in set ACLs " , e ) ;
2014-03-06 15:31:04 +01:00
String error = ConstantsExplorer . SERVER_ERROR + " updating permissions. " + e . getMessage ( ) ;
2014-02-14 15:28:35 +01:00
throw new Exception ( error ) ;
}
}
2014-02-17 15:56:42 +01:00
/ * *
*
* @return
* @throws Exception
* /
@Override
2014-07-14 15:59:32 +02:00
public List < ExtendedWorkspaceACL > getUserACLForFolderId ( String folderId ) throws Exception {
2014-02-17 15:56:42 +01:00
try {
2014-03-17 17:59:06 +01:00
workspaceLogger . info ( " Get user ACL to FOLDER id: " + folderId ) ;
2015-02-16 14:46:38 +01:00
WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId ( folderId ) ;
2014-02-19 16:11:28 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2014-07-14 15:59:32 +02:00
List < WorkspaceACL > listACL = builder . getWorkspaceACLFromACLs ( Arrays . asList ( wsFolder . getACLUser ( ) ) ) ;
List < ExtendedWorkspaceACL > listEACL = new ArrayList < ExtendedWorkspaceACL > ( listACL . size ( ) ) ;
for ( WorkspaceACL workspaceACL : listACL ) {
2014-07-17 17:07:58 +02:00
2015-02-16 14:46:38 +01:00
boolean isBaseSharedFolder = isASharedFolder ( wsFolder , true ) ? true : false ;
2014-07-17 17:07:58 +02:00
ExtendedWorkspaceACL eac = new ExtendedWorkspaceACL ( workspaceACL . getId ( ) , workspaceACL . getLabel ( ) , workspaceACL . getDefaultValue ( ) , workspaceACL . getUserType ( ) , workspaceACL . getDescription ( ) , wsFolder . getOwner ( ) . getPortalLogin ( ) , folderId , isBaseSharedFolder ) ;
workspaceLogger . trace ( " ACL " + workspaceACL + " converted in: " + eac ) ;
listEACL . add ( eac ) ;
2014-07-14 15:59:32 +02:00
}
return listEACL ;
2014-02-18 14:40:19 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get getACLForFolderId " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " get ACL rules for selected folder. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
}
}
/ * *
*
* @return Formatted HTML DIV containing ACLs description for folderId
* @throws Exception
* /
@Override
2014-02-19 16:11:28 +01:00
public String getACLsDescriptionForSharedFolderId ( String folderId ) throws Exception {
2014-02-18 14:40:19 +01:00
try {
2014-02-17 15:56:42 +01:00
2015-02-16 14:46:38 +01:00
WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId ( folderId ) ;
2014-02-19 16:11:28 +01:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . getFormattedHtmlACLFromACLs ( wsFolder . getACLOwner ( ) ) ;
2014-02-17 15:56:42 +01:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server get getACLForFolderId " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " get ACL rules for selected folder. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
}
}
2015-02-16 14:46:38 +01:00
/ * *
*
* @param folderId
* @return
* @throws Exception
* /
private WorkspaceFolder getSharedWorkspaceFolderForId ( String folderId ) throws Exception {
2014-02-19 16:11:28 +01:00
if ( folderId = = null )
throw new Exception ( " Folder id is null " ) ;
2015-02-16 14:46:38 +01:00
workspaceLogger . trace ( " Get SharedFolderForId: " + folderId ) ;
2014-02-19 16:11:28 +01:00
Workspace workspace = getWorkspace ( ) ;
2015-02-16 14:46:38 +01:00
WorkspaceItem wsItem = null ;
try {
wsItem = workspace . getItem ( folderId ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Get SharedFolderForId error on folder id: " + folderId , e ) ;
throw new Exception ( ConstantsExplorer . SERVER_ERROR + " retrieving item with id: " + folderId + " . Try again later! " ) ;
}
2014-02-19 16:11:28 +01:00
2015-01-28 17:42:12 +01:00
if ( isASharedFolder ( wsItem , false ) ) {
2014-02-19 16:11:28 +01:00
workspaceLogger . trace ( " Get SharedFolderForId: folder id " + folderId + " is shared " ) ;
2015-01-28 17:42:12 +01:00
//TODO REMOVE wsItem.getIdSharedFolder()
2015-02-16 14:46:38 +01:00
// WorkspaceSharedFolder wsFolder = (WorkspaceSharedFolder) workspace.getItem(wsItem.getIdSharedFolder());
2014-02-19 16:11:28 +01:00
2015-02-16 14:46:38 +01:00
WorkspaceFolder wsFolder = ( WorkspaceFolder ) wsItem ;
2014-02-19 16:11:28 +01:00
if ( wsFolder ! = null ) {
2015-02-16 14:46:38 +01:00
workspaceLogger . info ( " Get SharedFolderForId return name: " + wsFolder . getName ( ) ) ;
2014-02-19 16:11:28 +01:00
return wsFolder ;
} else {
2015-02-16 14:46:38 +01:00
workspaceLogger . warn ( " Source item is not a shared folder, throw exception " ) ;
2014-02-19 16:11:28 +01:00
throw new Exception ( " Source item is not a shared folder " ) ;
}
} else {
2015-02-16 14:46:38 +01:00
workspaceLogger . warn ( " Source item is null or not shared folder, throw exception " ) ;
throw new Exception ( " Source item is null or not shared folder for id: " + folderId ) ;
2014-02-19 16:11:28 +01:00
}
}
2015-01-28 17:42:12 +01:00
/ * *
*
* @param itemID
* @param asRoot true check if itemID is root , not otherwise
* @return
* /
public boolean isASharedFolder ( String itemID , boolean asRoot ) {
try {
if ( itemID = = null )
throw new Exception ( " ItemId is null " ) ;
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem item = workspace . getItem ( itemID ) ;
return isASharedFolder ( item , asRoot ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server isASharedFolder " , e ) ;
return false ;
}
}
/ * *
* @see # isASharedFolder ( String , boolean )
* @param item
* @param asRoot
* @return
* /
public boolean isASharedFolder ( WorkspaceItem item , boolean asRoot ) {
try {
if ( item ! = null & & item . isFolder ( ) & & item . isShared ( ) ) { //IS A SHARED SUB-FOLDER
if ( asRoot )
return item . getType ( ) . equals ( WorkspaceItemType . SHARED_FOLDER ) ; //IS ROOT?
return true ;
}
return false ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server isASharedFolder " , e ) ;
return false ;
}
}
2014-02-19 16:11:28 +01:00
2014-02-17 15:56:42 +01:00
/ * *
*
* @return
* @throws Exception
* /
@Override
public List < FileTrashedModel > getTrashContent ( ) throws Exception {
workspaceLogger . trace ( " Get TrashContent: " ) ;
Workspace workspace ;
try {
workspace = getWorkspace ( ) ;
WorkspaceTrashFolder trash = workspace . getTrash ( ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . buildGXTListTrashContent ( trash ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server TrashConten " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " get Trash content. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
}
}
/ * *
*
* @return
* @throws Exception
* /
2014-02-17 19:20:30 +01:00
@Override
2014-05-13 11:10:54 +02:00
public TrashContent updateTrashContent ( WorkspaceTrashOperation operation ) throws Exception {
2014-10-31 12:32:11 +01:00
workspaceLogger . info ( " Updating TrashContent with operation: " + operation ) ;
2014-02-17 15:56:42 +01:00
Workspace workspace ;
List < String > listErrors = null ;
try {
workspace = getWorkspace ( ) ;
WorkspaceTrashFolder trash = workspace . getTrash ( ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2014-05-13 11:10:54 +02:00
TrashContent result = new TrashContent ( ) ;
2014-02-17 15:56:42 +01:00
switch ( operation ) {
2014-05-13 11:10:54 +02:00
2014-02-17 15:56:42 +01:00
case EMPTY_TRASH :
listErrors = trash . emptyTrash ( ) ;
break ;
case RESTORE_ALL :
listErrors = trash . restoreAll ( ) ;
break ;
case REFRESH :
default :
result . setTrashContent ( builder . buildGXTListTrashContent ( trash ) ) ;
return result ;
}
trash = workspace . getTrash ( ) ;
result . setTrashContent ( builder . buildGXTListTrashContent ( trash ) ) ;
if ( listErrors ! = null ) {
List < FileTrashedModel > listContentError = new ArrayList < FileTrashedModel > ( listErrors . size ( ) ) ;
for ( String trashedItemId : listErrors ) {
listContentError . add ( builder . buildGXTTrashModelItemById ( trashedItemId , trash ) ) ;
}
result . setListErrors ( listContentError ) ;
}
return result ;
} catch ( Exception e ) {
2014-05-13 11:10:54 +02:00
workspaceLogger . error ( " Error in server TrashContent " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " update Trash content. " + e . getMessage ( ) ;
throw new Exception ( error ) ;
}
}
/ * *
*
* /
@Override
2014-05-13 11:26:57 +02:00
public TrashOperationContent executeOperationOnTrash ( List < String > listTrashItemIds , WorkspaceTrashOperation operation ) throws Exception {
2014-05-13 11:10:54 +02:00
workspaceLogger . info ( " Get TrashContent, operation: " + operation ) ;
if ( listTrashItemIds = = null | | listTrashItemIds . size ( ) = = 0 )
throw new Exception ( " List of Trash item ids is null or empty " ) ;
Workspace workspace ;
2014-05-13 11:26:57 +02:00
List < FileTrashedModel > listContentError = new ArrayList < FileTrashedModel > ( ) ;
2014-05-13 11:10:54 +02:00
try {
workspace = getWorkspace ( ) ;
WorkspaceTrashFolder trash = workspace . getTrash ( ) ;
TrashOperationContent result = new TrashOperationContent ( ) ;
2014-05-14 12:14:07 +02:00
result . setOperation ( operation ) ;
2014-05-13 11:10:54 +02:00
List < String > listUpdatedTrashIds = new ArrayList < String > ( ) ;
switch ( operation ) {
case DELETE_PERMANENTLY : {
boolean deleted = false ;
for ( String trashItemId : listTrashItemIds ) {
try {
WorkspaceTrashItem trashItem = trash . getTrashItemById ( trashItemId ) ;
if ( trashItem ! = null ) {
trashItem . deletePermanently ( ) ;
listUpdatedTrashIds . add ( trashItemId ) ;
deleted = true ;
}
} catch ( Exception e ) {
workspaceLogger . warn ( " Error on DELETE_PERMANENTLY the item : " + trashItemId , e ) ;
FileTrashedModel fakeFile = new FileTrashedModel ( ) ;
fakeFile . setIdentifier ( trashItemId ) ;
listContentError . add ( fakeFile ) ;
}
}
2014-10-31 12:32:11 +01:00
2014-05-13 11:10:54 +02:00
String label = listTrashItemIds . size ( ) > 1 ? " items " : " item " ;
if ( ! deleted )
throw new Exception ( " Sorry, an error occurred on deleting permanently the trash " + label + " , try again " ) ;
break ;
}
case RESTORE : {
boolean restored = false ;
for ( String trashItemId : listTrashItemIds ) {
try {
WorkspaceTrashItem trashItem = trash . getTrashItemById ( trashItemId ) ;
if ( trashItem ! = null ) {
trashItem . restore ( ) ;
listUpdatedTrashIds . add ( trashItemId ) ;
restored = true ;
}
} catch ( Exception e ) {
workspaceLogger . warn ( " Error on RESTORE the item : " + trashItemId , e ) ;
FileTrashedModel fakeFile = new FileTrashedModel ( ) ;
fakeFile . setIdentifier ( trashItemId ) ;
listContentError . add ( fakeFile ) ;
}
}
String label = listTrashItemIds . size ( ) > 1 ? " items " : " item " ;
if ( ! restored )
throw new Exception ( " Sorry, an error occurred on restoring the trash " + label + " , try again " ) ;
break ;
}
2014-10-31 12:32:11 +01:00
default :
break ;
2014-05-13 11:10:54 +02:00
}
// trash = workspace.getTrash();
// result.setTrashContent(builder.buildGXTListTrashContent(trash));
2014-05-13 11:26:57 +02:00
if ( ! listContentError . isEmpty ( ) ) {
2014-05-13 11:10:54 +02:00
result . setListErrors ( listContentError ) ;
}
result . setListTrashIds ( listUpdatedTrashIds ) ;
return result ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server executeOperationOnTrash " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " update Trash content. " + e . getMessage ( ) ;
2014-02-17 15:56:42 +01:00
throw new Exception ( error ) ;
}
}
2014-07-08 18:41:53 +02:00
/ * ( non - Javadoc )
* @see org . gcube . portlets . user . workspace . client . rpc . GWTWorkspaceService # addAdministratorsByFolderId ( java . lang . String , java . util . List )
*
* true if administrators have been added , false otherwise
* /
@Override
public boolean addAdministratorsByFolderId ( String folderId , List < String > listContactLogins ) throws Exception {
if ( folderId = = null | | listContactLogins = = null | | listContactLogins . size ( ) = = 0 )
return false ;
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem item = workspace . getItem ( folderId ) ;
workspaceLogger . info ( " Adding administator/s to folder: " + folderId ) ;
2014-07-10 17:27:21 +02:00
if ( item ! = null & & item . getType ( ) . equals ( WorkspaceItemType . SHARED_FOLDER ) ) {
2014-07-08 18:41:53 +02:00
WorkspaceSharedFolder sharedFolder = ( WorkspaceSharedFolder ) item ;
2014-09-30 12:13:26 +02:00
//retrieving old administrators list
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
workspaceLogger . info ( " Retrieving old administator/s.. " ) ;
List < InfoContactModel > oldAdmins = builder . buildGxtInfoContactsFromPortalLogins ( sharedFolder . getAdministrators ( ) ) ;
workspaceLogger . info ( " Retrieving old administator/s are/is: " + oldAdmins . size ( ) ) ;
2014-09-24 16:51:42 +02:00
workspaceLogger . info ( " Setting administators: " ) ;
printList ( listContactLogins ) ;
sharedFolder . setAdmins ( listContactLogins ) ;
2014-09-30 12:13:26 +02:00
workspaceLogger . info ( " Converting new administator/s.. " ) ;
List < InfoContactModel > newAdmins = builder . buildGxtInfoContactsFromPortalLogins ( listContactLogins ) ;
NotificationsProducer np = getNotificationProducer ( ) ;
workspaceLogger . info ( " Sending notifications downgrade/upgrade administator/s.. " ) ;
DiffereceBeetweenInfoContactModel diff1 = new DiffereceBeetweenInfoContactModel ( oldAdmins , newAdmins ) ;
List < InfoContactModel > contactsDowngrade = diff1 . getDifferentsContacts ( ) ;
for ( InfoContactModel infoContactModel : contactsDowngrade ) {
np . notifyAdministratorDowngrade ( infoContactModel , sharedFolder ) ;
}
DiffereceBeetweenInfoContactModel diff2 = new DiffereceBeetweenInfoContactModel ( newAdmins , oldAdmins ) ;
List < InfoContactModel > contactsUpgrade = diff2 . getDifferentsContacts ( ) ;
for ( InfoContactModel infoContactModel : contactsUpgrade ) {
np . notifyAdministratorUpgrade ( infoContactModel , sharedFolder ) ;
}
2014-07-08 18:41:53 +02:00
return true ;
} else
2014-07-10 17:27:21 +02:00
throw new Exception ( " The item is null or not instanceof " + WorkspaceItemType . SHARED_FOLDER ) ;
2014-07-08 18:41:53 +02:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server addAdministratorsByFolderId: " + e . getMessage ( ) ) ;
workspaceLogger . error ( e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " adding administrators, try again later " ;
throw new Exception ( error ) ;
}
}
2014-07-10 17:27:21 +02:00
/ * ( non - Javadoc )
* @see org . gcube . portlets . user . workspace . client . rpc . GWTWorkspaceService # getAdministratorsByFolderId ( java . lang . String )
* /
@Override
public List < InfoContactModel > getAdministratorsByFolderId ( String folderId ) throws Exception {
List < InfoContactModel > admins = new ArrayList < InfoContactModel > ( ) ;
if ( folderId = = null )
return admins ;
try {
2014-07-30 16:52:22 +02:00
workspaceLogger . info ( " Getting administator/s to folder: " + folderId ) ;
2015-02-16 14:46:38 +01:00
WorkspaceFolder wsFolder = getSharedWorkspaceFolderForId ( folderId ) ;
if ( isASharedFolder ( wsFolder , true ) ) {
2014-07-11 15:56:35 +02:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2015-02-16 14:46:38 +01:00
WorkspaceSharedFolder wsSharedFolder = ( WorkspaceSharedFolder ) wsFolder ;
return builder . buildGxtInfoContactsFromPortalLogins ( wsSharedFolder . getAdministrators ( ) ) ;
2014-07-10 17:27:21 +02:00
} else
2015-02-16 14:46:38 +01:00
throw new WorkspaceHandledException ( " the item with " + folderId + " is not a base shared folder! " ) ;
} catch ( WorkspaceHandledException e ) {
workspaceLogger . error ( " Error in server getAdministratorsByFolderId: " + e . getMessage ( ) ) ;
String error = ConstantsExplorer . SERVER_ERROR + " getting Administrators: " + e . getMessage ( ) ;
throw new Exception ( error ) ;
2014-07-10 17:27:21 +02:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server getAdministratorsByFolderId: " + e . getMessage ( ) ) ;
workspaceLogger . error ( e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " getting Administrators " ;
throw new Exception ( error ) ;
}
}
2014-11-04 18:20:06 +01:00
@Override
public String getItemDescriptionById ( String identifier ) throws Exception {
workspaceLogger . info ( " Getting ItemDescriptionById: " + identifier ) ;
if ( identifier = = null | | identifier . isEmpty ( ) ) {
workspaceLogger . warn ( " Getting ItemDescriptionById identifier is null or empty, returning null " ) ;
return null ;
}
try {
Workspace workspace = getWorkspace ( ) ;
WorkspaceItem item = workspace . getItem ( identifier ) ;
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
return builder . getItemDescriptionForTypeById ( item ) ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server ItemDescriptionById: " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " getting description for item id: " + identifier ;
throw new Exception ( error ) ;
}
}
2014-09-24 12:55:32 +02:00
/ * ( non - Javadoc )
* @see org . gcube . portlets . user . workspace . client . rpc . GWTWorkspaceService # getACLBySharedFolderId ( java . lang . String )
* /
@Override
public WorkspaceACL getACLBySharedFolderId ( String identifier ) throws Exception {
workspaceLogger . info ( " Getting ACLBySharedFolderId: " + identifier ) ;
if ( identifier = = null | | identifier . isEmpty ( ) ) {
workspaceLogger . warn ( " Getting ACLBySharedFolderId identifier is null or empty, returning null " ) ;
return null ;
}
try {
2015-02-16 14:46:38 +01:00
WorkspaceFolder sharedFolder = getSharedWorkspaceFolderForId ( identifier ) ;
2014-09-24 12:55:32 +02:00
2015-02-16 14:46:38 +01:00
//IS ROOT??
if ( isASharedFolder ( sharedFolder , true ) ) {
2014-09-24 12:55:32 +02:00
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder ( ) ;
2015-02-16 14:46:38 +01:00
//CASTING TO ROOT
WorkspaceSharedFolder wsSharedFolder = ( WorkspaceSharedFolder ) sharedFolder ;
workspaceLogger . info ( " Read getPrivilege from HL: " + wsSharedFolder . getACLUser ( ) ) ;
List < WorkspaceACL > wsAcls = builder . getWorkspaceACLFromACLs ( Arrays . asList ( wsSharedFolder . getPrivilege ( ) ) ) ;
2014-09-24 12:55:32 +02:00
if ( wsAcls = = null | | wsAcls . isEmpty ( ) ) {
workspaceLogger . info ( " Converted ACLBySharedFolderId is null or empty, returning null " ) ;
return null ;
}
2015-02-16 14:46:38 +01:00
2014-09-24 12:55:32 +02:00
workspaceLogger . info ( " Returning first acl with id: " + wsAcls . get ( 0 ) . getId ( ) ) ;
return wsAcls . get ( 0 ) ;
2015-02-16 14:46:38 +01:00
}
else {
workspaceLogger . warn ( " WorkspaceFolder " + sharedFolder + " is not type of " + WorkspaceItemType . SHARED_FOLDER + " , returning null " ) ;
return null ;
}
2014-09-24 12:55:32 +02:00
} catch ( Exception e ) {
workspaceLogger . error ( " Error in server ACLBySharedFolderId: " + e . getMessage ( ) ) ;
workspaceLogger . error ( e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " getting ACL of WorkspaceSharedFolder " ;
throw new Exception ( error ) ;
}
}
2014-10-28 17:12:40 +01:00
2014-10-31 17:27:52 +01:00
@Override
public WorkspaceUserQuote getUserWorkspaceQuote ( ) throws Exception {
try {
workspaceLogger . info ( " Getting UserWorkspaceQuote.. " ) ;
Workspace workspace = getWorkspace ( ) ;
long size = workspace . getDiskUsage ( ) ;
workspaceLogger . info ( " Root size is: " + size + " formatting.. " ) ;
String formatSize = GWTWorkspaceBuilder . formatFileSize ( size ) ;
long total = getUserWorkspaceTotalItems ( ) ;
WorkspaceUserQuote quote = new WorkspaceUserQuote ( ) ;
quote . setDiskSpace ( size ) ;
quote . setDiskSpaceFormatted ( formatSize ) ;
quote . setTotalItems ( total ) ;
workspaceLogger . info ( " returning user quote: " + quote ) ;
return quote ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error on UserWorkspaceQuote " , e ) ;
return null ;
}
}
2014-10-28 17:12:40 +01:00
@Override
public String getUserWorkspaceSize ( ) throws Exception {
2014-10-31 17:27:52 +01:00
try {
workspaceLogger . info ( " Getting workspace size.. " ) ;
Workspace workspace = getWorkspace ( ) ;
long size = workspace . getDiskUsage ( ) ;
// workspaceLogger.info("Root size is: "+size +" formatting..");
String formatSize = GWTWorkspaceBuilder . formatFileSize ( size ) ;
workspaceLogger . info ( " returning workspace size: " + formatSize ) ;
return formatSize ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error on UserWorkspaceSize " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " getting disk usage " ;
throw new Exception ( error ) ;
}
2014-10-28 17:12:40 +01:00
}
2014-10-31 17:27:52 +01:00
@Override
public long getUserWorkspaceTotalItems ( ) throws Exception {
try {
workspaceLogger . info ( " Getting total items.. " ) ;
Workspace workspace = getWorkspace ( ) ;
long size = workspace . getTotalItems ( ) ;
workspaceLogger . info ( " returning total items value: " + size ) ;
return size ;
} catch ( Exception e ) {
workspaceLogger . error ( " Error on UserWorkspaceSize " , e ) ;
String error = ConstantsExplorer . SERVER_ERROR + " getting total items " ;
throw new Exception ( error ) ;
}
2014-10-28 17:12:40 +01:00
}
2014-11-04 18:20:06 +01:00
2014-02-17 15:56:42 +01:00
2013-02-06 15:40:17 +01:00
}