2015-03-05 18:47:07 +01:00
/ * *
*
* /
package org.gcube.portlets.user.workspace ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.Map ;
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.exceptions.UserNotFoundException ;
import org.gcube.common.homelibrary.home.workspace.Workspace ;
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder ;
import org.gcube.common.homelibrary.home.workspace.accessmanager.ACLType ;
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException ;
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException ;
import org.gcube.common.scope.api.ScopeProvider ;
import org.gcube.common.scope.impl.ScopeBean ;
import org.gcube.portlets.user.workspace.server.util.AclTypeComparator ;
/ * *
*
* @author Francesco Mangiacrapa francesco . mangiacrapa @isti.cnr.it
* @Jan 29 , 2014
*
* /
public class EditPermissionsTest {
// public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; //PRODUCTION
public static String DEFAULT_SCOPE = " /gcube/devsec " ; //DEV
public static String TEST_USER = " francesco.mangiacrapa " ;
// public static String ITEMID = "63832213-098d-42d1-8774-89b6349764c0"; //Activity T3.4 working drafts/T2-EC-IMAR-HO-14-015 iMarine Sustainability WP - Business Model tools.pdf
// public static String ITEMID = "42fa2601-39d0-4951-aabf-27d2a2f1dca7";
// protected static Logger logger = Logger.getLogger(EditPermissionsTest.class);
public static void main ( String [ ] args ) {
ScopeBean scope = new ScopeBean ( DEFAULT_SCOPE ) ;
ScopeProvider . instance . set ( scope . toString ( ) ) ;
System . out . println ( " init HL " ) ;
try {
Workspace ws = HomeLibrary
. getHomeManagerFactory ( )
. getHomeManager ( )
. getHome ( TEST_USER )
. getWorkspace ( ) ;
2015-03-05 19:00:56 +01:00
WorkspaceFolder sharedFolder = ( WorkspaceFolder ) ws . getItem ( " bd5fa899-225d-4547-a3c5-79b5333cde20 " ) ;
2015-03-05 18:47:07 +01:00
System . out . println ( sharedFolder . getACLOwner ( ) ) ;
ArrayList < String > list = new ArrayList < String > ( ) ;
list . add ( " francesco.mangiacrapa " ) ;
list . add ( " massimiliano.assante " ) ;
list . add ( " pasquale.pagano " ) ;
validateACLToUser ( sharedFolder , list , ACLType . WRITE_ALL . toString ( ) ) ;
} catch ( WorkspaceFolderNotFoundException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
} catch ( InternalErrorException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
} catch ( HomeNotFoundException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
} catch ( UserNotFoundException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
} catch ( ItemNotFoundException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
}
}
private static void validateACLToUser ( WorkspaceFolder folder , List < String > listLogins , String aclType ) {
try {
Map < ACLType , List < String > > mapACL = folder . getACLOwner ( ) ;
ACLType settingACL = ACLType . valueOf ( aclType ) ;
System . out . println ( " Tentative setting: " + settingACL ) ;
AclTypeComparator comparator = new AclTypeComparator ( ) ;
List < String > admins = mapACL . get ( ACLType . ADMINISTRATOR ) ;
for ( String admin : admins ) {
listLogins . remove ( admin ) ;
System . out . println ( " Reject username: " + admin + " as " + ACLType . ADMINISTRATOR ) ;
}
for ( String username : listLogins ) {
2015-03-05 19:00:56 +01:00
System . out . println ( " \ nChecking username: " + username ) ;
2015-03-05 18:47:07 +01:00
for ( ACLType aclHL : mapACL . keySet ( ) ) {
2015-03-05 19:00:56 +01:00
List < String > loginsHL = mapACL . get ( aclHL ) ;
System . out . println ( " to ACLType: " + aclHL + " , logins found: " + loginsHL ) ;
if ( loginsHL . contains ( username ) ) {
int cmp = comparator . compare ( settingACL , aclHL ) ;
System . out . println ( " Compare result between " + aclHL + " and " + settingACL + " : " + cmp ) ;
if ( cmp = = - 1 ) {
System . out . println ( " Reject ACL: " + settingACL + " to " + username ) ;
//CHANGE ACL IS NOT VALID
} else if ( cmp = = 1 ) {
2015-03-05 18:47:07 +01:00
//CHANGE ACL IS VALID
2015-03-05 19:00:56 +01:00
System . out . println ( " Set ACL: " + settingACL + " to " + username ) ;
} else if ( cmp = = 0 ) {
//SAME ACL
System . out . println ( " Skipping ACL: " + settingACL + " to " + username ) ;
2015-03-05 18:47:07 +01:00
}
2015-03-05 19:00:56 +01:00
} else {
//CHANGE ACL IS VALID
System . out . println ( " [Login not found], Set ACL: " + settingACL + " to " + username ) ;
2015-03-05 18:47:07 +01:00
}
2015-03-05 19:00:56 +01:00
}
2015-03-05 18:47:07 +01:00
}
} catch ( InternalErrorException e ) {
// TODO Auto-generated catch block
e . printStackTrace ( ) ;
}
}
}