2016-04-21 10:37:31 +02:00
package org.gcube.portlets.user.workspaceexplorerapp.server ;
2020-04-09 17:58:03 +02:00
import java.net.URL ;
2016-04-21 10:37:31 +02:00
import java.util.ArrayList ;
import java.util.Collections ;
import java.util.List ;
import java.util.concurrent.TimeUnit ;
2020-04-09 17:58:03 +02:00
import javax.servlet.http.HttpSession ;
2016-09-19 12:19:49 +02:00
import org.gcube.common.encryption.StringEncrypter ;
import org.gcube.common.scope.api.ScopeProvider ;
2020-04-08 18:17:48 +02:00
import org.gcube.common.storagehubwrapper.server.tohl.Workspace ;
2020-04-09 17:58:03 +02:00
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder ;
2020-04-09 15:33:21 +02:00
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem ;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItemType ;
import org.gcube.common.storagehubwrapper.shared.tohl.items.FileItem ;
2016-04-21 10:37:31 +02:00
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerAppConstants ;
import org.gcube.portlets.user.workspaceexplorerapp.client.rpc.WorkspaceExplorerAppService ;
2020-04-09 17:58:03 +02:00
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.ItemBuilder ;
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.WorkspaceInstance ;
2020-04-16 13:11:26 +02:00
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.WsInstanceUtil ;
2016-04-21 10:37:31 +02:00
import org.gcube.portlets.user.workspaceexplorerapp.shared.FilterCriteria ;
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item ;
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemType ;
import org.gcube.portlets.user.workspaceexplorerapp.shared.WorkspaceNavigatorServiceException ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
import com.google.gwt.user.server.rpc.RemoteServiceServlet ;
2017-07-03 17:25:05 +02:00
2020-04-09 15:33:21 +02:00
// TODO: Auto-generated Javadoc
2016-04-21 10:37:31 +02:00
/ * *
2017-07-03 17:25:05 +02:00
* The Class WorkspaceExplorerAppServiceImpl .
2016-04-21 10:37:31 +02:00
*
* @author Francesco Mangiacrapa francesco . mangiacrapa @isti.cnr.it
2017-07-03 17:25:05 +02:00
* Jul 3 , 2017
2016-04-21 10:37:31 +02:00
* /
@SuppressWarnings ( " serial " )
public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implements WorkspaceExplorerAppService {
2020-04-09 17:58:03 +02:00
public static final String THE_WORKSPACE_SHUB_INSTANCIED = " THE_WORKSPACE_SHUB_INSTANCIED " ;
2016-04-21 10:37:31 +02:00
/ * *
*
* /
public static final Logger logger = LoggerFactory . getLogger ( WorkspaceExplorerAppServiceImpl . class ) ;
2016-09-19 12:19:49 +02:00
public static final String UTF_8 = " UTF-8 " ;
2016-04-21 10:37:31 +02:00
2020-04-09 17:58:03 +02:00
/ * *
* Gets the workspace .
*
* @return the workspace
* @throws Exception
* /
private Workspace getWorkspace ( ) throws Exception {
HttpSession httpSession = this . getThreadLocalRequest ( ) . getSession ( ) ;
Workspace workspace = ( Workspace ) httpSession . getAttribute ( THE_WORKSPACE_SHUB_INSTANCIED ) ;
if ( workspace = = null ) {
WorkspaceInstance workspaceInstance = new WorkspaceInstance ( httpSession ) ;
workspace = workspaceInstance . get ( ) ;
httpSession . setAttribute ( THE_WORKSPACE_SHUB_INSTANCIED , workspace ) ;
}
return workspace ;
}
2016-04-21 10:37:31 +02:00
/ * *
* { @inheritDoc }
* /
@Override
public Item getRoot ( List < ItemType > showableTypes , boolean purgeEmpyFolders , FilterCriteria filterCriteria ) throws WorkspaceNavigatorServiceException {
2020-04-15 16:44:04 +02:00
logger . info ( " getRoot showableTypes: " + showableTypes + " purgeEmpyFolders: " + purgeEmpyFolders + " filterCriteria: " + filterCriteria ) ;
2016-04-21 10:37:31 +02:00
try {
2020-04-09 17:58:03 +02:00
Workspace workspace = getWorkspace ( ) ;
2016-04-21 10:37:31 +02:00
logger . trace ( " Start getRoot... " ) ;
2020-04-08 18:17:48 +02:00
org . gcube . common . storagehubwrapper . shared . tohl . WorkspaceFolder root = workspace . getRoot ( ) ;
2016-04-21 10:37:31 +02:00
logger . trace ( " GetRoot - Replyiing root " ) ;
long startTime = System . currentTimeMillis ( ) ;
logger . trace ( " start time - " + startTime ) ;
2020-04-09 17:58:03 +02:00
Item rootItem = ItemBuilder . getItem ( null , root , root . getPath ( ) , showableTypes , filterCriteria ) ;
//adding the children
List < ? extends WorkspaceItem > children = workspace . getChildren ( root . getId ( ) ) ;
rootItem = ItemBuilder . addChildren ( rootItem , " " , children , showableTypes , filterCriteria ) ;
2016-04-21 10:37:31 +02:00
rootItem . setName ( WorkspaceExplorerAppConstants . HOME_LABEL ) ;
rootItem . setIsRoot ( true ) ;
/ * SPECIAL FOLDERS
Item specialFolders = ItemBuilder . getItem ( null , specials , showableTypes , filterCriteria , 2 ) ;
specialFolders . setShared ( true ) ;
rootItem . addChild ( specialFolders ) ;
* /
if ( purgeEmpyFolders ) {
rootItem = ItemBuilder . purgeEmptyFolders ( rootItem ) ;
}
logger . trace ( " Returning: " ) ;
Long endTime = System . currentTimeMillis ( ) - startTime ;
String time = String . format ( " %d msc %d sec " , endTime , TimeUnit . MILLISECONDS . toSeconds ( endTime ) ) ;
2020-04-15 16:44:04 +02:00
logger . info ( " getRoot end time - " + time ) ;
2016-04-21 10:37:31 +02:00
Collections . sort ( rootItem . getChildren ( ) , new ItemComparator ( ) ) ;
logger . info ( " Returning children size: " + rootItem . getChildren ( ) . size ( ) ) ;
return rootItem ;
} catch ( Exception e ) {
logger . error ( " Error during root retrieving " , e ) ;
throw new WorkspaceNavigatorServiceException ( " Sorry, an error occurred when performing get root " ) ;
}
}
2020-04-09 15:33:21 +02:00
2016-04-21 10:37:31 +02:00
/ * *
2020-04-09 15:33:21 +02:00
* Gets the folder .
*
* @param item the item
* @param showableTypes the showable types
* @param purgeEmpyFolders the purge empy folders
* @param filterCriteria the filter criteria
* @return the folder
2020-04-09 17:58:03 +02:00
* @throws WorkspaceNavigatorServiceException the workspace navigator service exception
2016-04-21 10:37:31 +02:00
* /
@Override
public Item getFolder ( Item item , List < ItemType > showableTypes , boolean purgeEmpyFolders , FilterCriteria filterCriteria ) throws WorkspaceNavigatorServiceException {
2020-04-15 16:44:04 +02:00
logger . info ( " called getFolder item: " + item + " showableTypes: " + showableTypes + " purgeEmpyFolders: " + purgeEmpyFolders + " filterCriteria: " + filterCriteria ) ;
2016-04-21 10:37:31 +02:00
2020-04-09 15:33:21 +02:00
WorkspaceItem workspaceItem = null ;
2020-04-09 17:58:03 +02:00
Workspace workspace = null ;
2016-04-21 10:37:31 +02:00
try {
if ( item = = null | | item . getId ( ) = = null )
throw new Exception ( " Item id is null " ) ;
2020-04-09 17:58:03 +02:00
workspace = getWorkspace ( ) ;
2020-04-17 12:17:18 +02:00
workspaceItem = workspace . getItemForExplorer ( item . getId ( ) , false , false , false ) ;
2020-04-09 15:33:21 +02:00
} catch ( Exception e ) {
logger . error ( " Error during item retrieving " , e ) ;
2020-09-25 11:04:18 +02:00
if ( e . getMessage ( ) ! = null & & e . getMessage ( ) . startsWith ( " Insufficent Privileges " ) ) {
String erroMsg = item . getName ( ) ! = null ? " The folder ' " + item . getName ( ) + " ' " : " This folder " ;
erroMsg + = " is not accessible as an anonymous user! " ;
throw new WorkspaceNavigatorServiceException ( erroMsg ) ;
}
2020-04-09 15:33:21 +02:00
throw new WorkspaceNavigatorServiceException ( " Sorry, an error occurred when performing get folder. Does it still exist? " ) ;
}
if ( workspaceItem ! = null & & workspaceItem . isFolder ( ) ) {
try {
WorkspaceItem folder = workspaceItem ;
logger . trace ( " GetFolder - Replyiing folder " ) ;
long startTime = System . currentTimeMillis ( ) ;
logger . trace ( " start time - " + startTime ) ;
String path = item . getPath ( ) ! = null & & ! item . getPath ( ) . isEmpty ( ) ? item . getPath ( ) : folder . getPath ( ) ;
2020-04-09 17:58:03 +02:00
Item itemFolder = ItemBuilder . getItem ( null , folder , path , showableTypes , filterCriteria ) ;
//adding the children
List < ? extends WorkspaceItem > children = workspace . getChildren ( itemFolder . getId ( ) ) ;
itemFolder = ItemBuilder . addChildren ( itemFolder , path , children , showableTypes , filterCriteria ) ;
2020-04-09 15:33:21 +02:00
// _log.trace("Only showable types:");
if ( purgeEmpyFolders ) {
itemFolder = ItemBuilder . purgeEmptyFolders ( itemFolder ) ;
}
logger . trace ( " Returning: " ) ;
Long endTime = System . currentTimeMillis ( ) - startTime ;
String time = String . format ( " %d msc %d sec " , endTime , TimeUnit . MILLISECONDS . toSeconds ( endTime ) ) ;
2020-04-15 16:44:04 +02:00
logger . info ( " getFolder end time - " + time ) ;
2020-04-09 15:33:21 +02:00
Collections . sort ( itemFolder . getChildren ( ) , new ItemComparator ( ) ) ;
return itemFolder ;
} catch ( Exception e ) {
throw new WorkspaceNavigatorServiceException ( e . getMessage ( ) ) ;
2016-04-21 10:37:31 +02:00
}
2020-04-09 15:33:21 +02:00
} else {
logger . error ( " The item requested is not a folder " ) ;
throw new WorkspaceNavigatorServiceException ( " Error, the item requested is not a folder " ) ;
}
2016-04-21 10:37:31 +02:00
}
2020-04-15 14:37:24 +02:00
2016-04-21 10:37:31 +02:00
/ * *
* { @inheritDoc }
* /
@Override
public Item getMySpecialFolder ( List < ItemType > showableTypes , boolean purgeEmpyFolders , FilterCriteria filterCriteria ) throws WorkspaceNavigatorServiceException {
2020-04-15 16:44:04 +02:00
logger . info ( " called getMySpecialFolder showableTypes: " + showableTypes + " purgeEmpyFolders: " + purgeEmpyFolders + " filterCriteria: " + filterCriteria ) ;
2020-07-15 16:48:12 +02:00
throw new WorkspaceNavigatorServiceException ( " The method getMySpecialFolder is no longer maintained " ) ;
/ * try {
2016-04-21 10:37:31 +02:00
2020-07-15 16:48:12 +02:00
Workspace workspace = getWorkspace ( )
2016-04-21 10:37:31 +02:00
WorkspaceItem folder = workspace . getMySpecialFolders ( ) ;
long startTime = System . currentTimeMillis ( ) ;
2020-04-09 15:33:21 +02:00
2016-04-21 10:37:31 +02:00
logger . trace ( " start time - " + startTime ) ;
2020-04-09 17:58:03 +02:00
Item itemFolder = ItemBuilder . getItem ( null , folder , folder . getPath ( ) , showableTypes , filterCriteria ) ;
//adding the children
List < ? extends WorkspaceItem > children = workspace . getChildren ( itemFolder . getId ( ) ) ;
itemFolder = ItemBuilder . addChildren ( itemFolder , " " , children , showableTypes , filterCriteria ) ;
2016-04-21 10:37:31 +02:00
//OVERRIDING VRE FOLDERS NAME - SET SPECIAL FOLDER /Workspace/MySpecialFolders
itemFolder . setName ( WorkspaceExplorerAppConstants . VRE_FOLDERS_LABEL ) ;
itemFolder . setSpecialFolder ( true ) ;
2020-04-17 15:54:48 +02:00
logger . trace ( " Built MySpecialFolder: " + itemFolder ) ;
2016-04-21 10:37:31 +02:00
logger . trace ( " Only showable types: " ) ;
if ( purgeEmpyFolders ) {
itemFolder = ItemBuilder . purgeEmptyFolders ( itemFolder ) ;
}
2020-04-09 15:33:21 +02:00
2016-04-21 10:37:31 +02:00
logger . trace ( " Returning: " ) ;
Long endTime = System . currentTimeMillis ( ) - startTime ;
String time = String . format ( " %d msc %d sec " , endTime , TimeUnit . MILLISECONDS . toSeconds ( endTime ) ) ;
2020-04-15 16:44:04 +02:00
logger . info ( " getMySpecialFolder end time - " + time ) ;
2016-04-21 10:37:31 +02:00
Collections . sort ( itemFolder . getChildren ( ) , new ItemComparator ( ) ) ;
return itemFolder ;
} catch ( Exception e ) {
logger . error ( " Error during special folders retrieving " , e ) ;
throw new WorkspaceNavigatorServiceException ( " Sorry, an error occurred when performing get My Special Folder " ) ;
2020-07-15 16:48:12 +02:00
} * /
2016-04-21 10:37:31 +02:00
}
/ * *
* Gets the parents by item identifier to limit .
2016-09-14 16:46:22 +02:00
* when limit is reached parents are null
2016-04-21 10:37:31 +02:00
* @param itemIdentifier the item identifier
* @param parentLimit the parent limit
* @param includeItemAsParent the include item as parent
* @return the parents by item identifier to limit
* @throws Exception the exception
* /
@Override
public List < Item > getBreadcrumbsByItemIdentifierToParentLimit ( String itemIdentifier , String parentLimit , boolean includeItemAsParent ) throws Exception {
2020-04-15 16:44:04 +02:00
logger . info ( " called getBreadcrumbsByItemIdentifierToParentLimit by Item Identifier " + itemIdentifier + " and limit: " + parentLimit + " and includeItemAsParent: " + includeItemAsParent ) ;
2016-04-21 10:37:31 +02:00
try {
2020-04-09 17:58:03 +02:00
Workspace workspace = getWorkspace ( ) ;
2020-04-17 12:17:18 +02:00
WorkspaceItem wsItem = workspace . getItemForExplorer ( itemIdentifier , false , false , false ) ;
2020-04-17 15:54:48 +02:00
logger . info ( " workspace item returned has name: " + wsItem . getName ( ) ) ;
2020-04-09 15:33:21 +02:00
List < ? extends WorkspaceItem > parents = null ;
2016-09-20 11:39:53 +02:00
try {
2020-04-17 15:44:14 +02:00
parents = workspace . getParentsForExplorerById ( itemIdentifier ) ;
2016-09-20 11:39:53 +02:00
} catch ( Exception e ) {
2020-04-15 16:44:04 +02:00
logger . error ( " Error on getting list of parents from SHUB for id: " + itemIdentifier , e ) ;
2016-09-20 11:39:53 +02:00
parents = new ArrayList < WorkspaceItem > ( ) ;
}
if ( parents = = null ) //avoiding null
parents = new ArrayList < WorkspaceItem > ( ) ;
2020-04-14 17:43:25 +02:00
if ( logger . isDebugEnabled ( ) ) {
for ( WorkspaceItem workspaceItem : parents ) {
2020-04-17 15:54:48 +02:00
logger . debug ( " the parent is: " + workspaceItem . getName ( ) ) ;
2020-04-14 17:43:25 +02:00
}
}
List < Item > arrayParents = new ArrayList < Item > ( ) ;
2016-09-14 16:46:22 +02:00
parentLimit = parentLimit ! = null ? parentLimit : " " ;
2020-04-17 12:17:18 +02:00
logger . info ( " parent size returned by SHUB is: " + parents . size ( ) ) ;
2016-09-14 16:46:22 +02:00
switch ( parents . size ( ) ) {
2016-11-10 12:31:25 +01:00
case 0 : // itemIdentifier is ROOT
logger . trace ( " itemIdentifier isRoot... " ) ;
if ( includeItemAsParent ) { //ADDIND ROOT
WorkspaceFolder wsFolder = ( WorkspaceFolder ) wsItem ;
2016-09-14 16:46:22 +02:00
Item root = ItemBuilder . buildFolderForBreadcrumbs ( wsFolder , null ) ;
List < Item > listParents = new ArrayList < Item > ( 1 ) ;
listParents . add ( root ) ;
2016-11-10 12:31:25 +01:00
// workspaceLogger.trace("returning: "+listParents.toString());
2016-09-14 16:46:22 +02:00
return listParents ;
}
else {
2016-11-10 12:31:25 +01:00
logger . trace ( " returning empty list " ) ;
2016-09-14 16:46:22 +02:00
return new ArrayList < Item > ( ) ; // empty list
}
2016-04-21 10:37:31 +02:00
}
2020-04-14 17:43:25 +02:00
//Adding the item passed as last first parent
if ( includeItemAsParent & & wsItem . isFolder ( ) ) {
WorkspaceFolder wsItemAsFolder = ( WorkspaceFolder ) wsItem ;
Item theItem = ItemBuilder . buildFolderForBreadcrumbs ( wsItemAsFolder , null ) ;
arrayParents . add ( theItem ) ;
}
2016-04-21 10:37:31 +02:00
/ * * HANDLE MY_SPECIAL_FOLDER TO AVOID COMPLETE PATH WORKSPACE / MY_SPECIAL_FOLDER
* BUT RETURNING ONLY / MY_SPECIAL_FOLDER
* /
2020-04-14 17:43:25 +02:00
WorkspaceItem theFirstParent = parents . get ( 0 ) ;
2016-04-21 10:37:31 +02:00
if ( wsItem . isFolder ( ) ) {
2020-04-14 17:43:25 +02:00
if ( ItemBuilder . isSpecialFolder ( ( WorkspaceFolder ) wsItem , theFirstParent . isRoot ( ) ) ) {
2016-04-21 10:37:31 +02:00
logger . debug ( " item id is special folder, returning " ) ;
2020-04-14 17:43:25 +02:00
return new ArrayList < Item > ( arrayParents ) ;
2016-04-21 10:37:31 +02:00
}
if ( itemIdentifier . compareTo ( parentLimit ) = = 0 ) {
logger . debug ( " item and parent limit are identical element, returning " ) ;
2020-04-14 17:43:25 +02:00
return new ArrayList < Item > ( arrayParents ) ;
2016-04-21 10:37:31 +02:00
}
}
//CONVERTING PATH
2020-04-14 17:43:25 +02:00
logger . debug ( " converting parents... " ) ;
//for (int i = parents.size()-2; i >= 0; i--) {
for ( int i = 0 ; i < parents . size ( ) ; i + + ) {
logger . debug ( " converting index: " + i ) ;
2016-04-21 10:37:31 +02:00
WorkspaceFolder wsParentFolder = ( WorkspaceFolder ) parents . get ( i ) ;
2020-04-14 17:43:25 +02:00
logger . debug ( " the folder at index: " + i + " is " + wsParentFolder . getName ( ) ) ;
Item itemParent = ItemBuilder . buildFolderForBreadcrumbs ( wsParentFolder , null ) ;
arrayParents . add ( itemParent ) ;
if ( itemParent . isSpecialFolder ( ) ) { //SKIP HOME PARENT FOR MY_SPECIAL_FOLDER
2016-04-21 10:37:31 +02:00
logger . info ( " arrayParents index " + i + " is special folder, break " ) ;
break ;
2020-04-14 17:43:25 +02:00
} else if ( parentLimit . compareTo ( itemParent . getId ( ) ) = = 0 ) {
2016-04-21 10:37:31 +02:00
logger . info ( " reached parent limit " + parentLimit + " , break " ) ;
break ;
}
}
//SET PARENTS
2016-09-19 18:30:12 +02:00
logger . debug ( " setting parents.. " ) ;
2020-04-14 17:43:25 +02:00
for ( int i = 0 ; i < arrayParents . size ( ) - 1 ; i + + ) {
2016-04-21 10:37:31 +02:00
2020-04-14 17:43:25 +02:00
Item parent = arrayParents . get ( i + 1 ) ;
Item fileModel = arrayParents . get ( i ) ;
2016-04-21 10:37:31 +02:00
if ( fileModel ! = null ) {
fileModel . setParent ( parent ) ;
}
}
2020-04-14 17:43:25 +02:00
Collections . reverse ( arrayParents ) ;
2020-04-17 15:54:48 +02:00
logger . debug ( " Reversed the parent list " ) ;
2020-04-14 17:43:25 +02:00
if ( logger . isDebugEnabled ( ) ) {
for ( Item item : arrayParents ) {
2020-04-17 15:54:48 +02:00
logger . debug ( " Returning parent: " + item . getName ( ) ) ;
2016-04-21 10:37:31 +02:00
}
}
2020-04-14 17:43:25 +02:00
return arrayParents ;
2020-04-17 15:54:48 +02:00
2016-04-21 10:37:31 +02:00
} catch ( Exception e ) {
logger . error ( " Error in get List Parents By Item Identifier " , e ) ;
2020-09-25 11:04:18 +02:00
throw new Exception ( " Sorry, I'm not able to load the location of the folder. Does it still exist? " ) ;
2016-04-21 10:37:31 +02:00
}
}
/ * *
* Checks if is a shared folder .
*
* @param item the item
* @param asRoot the as root
* @return true , if is a shared folder
* /
2020-04-09 15:33:21 +02:00
private boolean isASharedFolder ( WorkspaceItem item , boolean asRoot ) {
2016-04-21 10:37:31 +02:00
try {
2020-04-09 15:33:21 +02:00
if ( item ! = null & & item . isFolder ( ) & & item . isShared ( ) ) { // IS A SHARED SUB-FOLDER
if ( asRoot ) {
return item . getType ( ) . equals ( WorkspaceItemType . SHARED_FOLDER ) ; // IS ROOT?
2016-04-21 10:37:31 +02:00
}
return true ;
}
return false ;
2020-04-09 15:33:21 +02:00
} catch ( Exception e ) {
2016-04-21 10:37:31 +02:00
logger . error ( " Error in server isASharedFolder " , e ) ;
return false ;
}
}
/ * *
* Gets the public link for item id .
*
* @param itemId the item id
* @return the public link for item id
* @throws Exception the exception
* /
@Override
public String getPublicLinkForItemId ( String itemId ) throws Exception {
2020-04-15 16:44:04 +02:00
logger . info ( " calle getPublicLinkForItemId: " + itemId ) ;
2016-04-21 10:37:31 +02:00
try {
if ( itemId = = null )
2020-04-09 17:58:03 +02:00
throw new Exception ( " Sorry, the itemId is null. The public link for empty item is unavailable " ) ;
2016-04-21 10:37:31 +02:00
2020-04-09 17:58:03 +02:00
Workspace workspace = getWorkspace ( ) ;
2020-04-17 12:17:18 +02:00
WorkspaceItem wsItem = workspace . getItemForExplorer ( itemId , false , false , false ) ;
2016-04-21 10:37:31 +02:00
if ( wsItem = = null )
2020-04-09 17:58:03 +02:00
throw new Exception ( " Sorry, the workspace item is null. The public link for empty item is unavailable " ) ;
2016-04-21 10:37:31 +02:00
2020-04-09 17:58:03 +02:00
if ( wsItem instanceof FileItem ) {
2016-04-21 10:37:31 +02:00
2020-04-09 17:58:03 +02:00
URL theURL = workspace . getPublicLinkForFile ( wsItem . getId ( ) ) ;
2016-04-21 10:37:31 +02:00
2020-04-09 17:58:03 +02:00
if ( theURL = = null )
throw new Exception ( " Sorry, the public link for " + wsItem . getName ( ) + " is not available " ) ;
return theURL . toString ( ) ;
2016-04-21 10:37:31 +02:00
} else {
logger . warn ( " ItemId: " + itemId + " is not available, sent exception Public Link unavailable " ) ;
2020-04-09 17:58:03 +02:00
throw new Exception ( " Sorry, the Public Link for selected item is unavailable " ) ;
2016-04-21 10:37:31 +02:00
}
} catch ( Exception e ) {
2020-04-09 17:58:03 +02:00
logger . error ( " Error on getting public link for item: " + itemId , e ) ;
2016-04-21 10:37:31 +02:00
throw new Exception ( e . getMessage ( ) ) ;
}
}
2016-09-19 12:19:49 +02:00
/ * *
* Gets the valid id from encrypted .
*
* @param encodedFolderId the encrypted folder id
* @return the valid id from encrypted
2017-07-03 17:25:05 +02:00
* @throws Exception the exception
2016-09-19 12:19:49 +02:00
* /
@Override
public String getFolderIdFromEncrypted ( String encodedFolderId ) throws Exception {
try {
2020-04-16 13:11:26 +02:00
String scope = WsInstanceUtil . getScope ( this . getThreadLocalRequest ( ) . getSession ( ) ) ;
2016-09-19 12:19:49 +02:00
ScopeProvider . instance . set ( scope ) ;
2020-04-14 17:43:25 +02:00
logger . info ( " Trying to decode encoded folder Id: " + encodedFolderId + " in the scope: " + scope ) ;
2016-09-19 12:19:49 +02:00
String base64DecodedId = StringUtil . base64DecodeString ( encodedFolderId ) ;
// String useThis = "P+IpJ6F6cTaGENfKMQWmStGUE79gbri5bVGRnzOvb8YUNIsJqFrdhceBrF+/u00j";
logger . info ( " Base 64 decoded folder Id: " + base64DecodedId + " , now decrypting... " ) ;
String decryptedFId = StringEncrypter . getEncrypter ( ) . decrypt ( base64DecodedId ) ;
logger . info ( " Decrypted folder Id: " + decryptedFId , " returning " ) ;
return decryptedFId ;
} catch ( Exception e ) {
logger . error ( " Error during decrypting folder Id: " + encodedFolderId , e ) ;
throw new Exception ( " Sorry, an error occurred when decrypting the folder id. Try again or contact the support " ) ;
}
}
2016-04-21 10:37:31 +02:00
}