Subversion Repositories SmartDukaan

Rev

Rev 1050 | Rev 1121 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.content.security;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RoleManager {
        
        private static RoleManager roleManager;
        private Map<Role, List<Action>> permissions;
        
        static{
                synchronized(RoleManager.class){
                        roleManager = new RoleManager();
                }
        }
        
        private RoleManager(){
                //TODO get the object from bdb
                permissions = new HashMap<Role, List<Action>>();
                List<Action> developerActions = new ArrayList<Action>();
                developerActions.add(Action.EDIT);
                developerActions.add(Action.VIEW);
                developerActions.add(Action.COMPLETE);
                permissions.put(Role.DEVELOPER, developerActions);
                
                List<Action> editorActions = new ArrayList<Action>();
                editorActions.add(Action.EDIT);
                editorActions.add(Action.VIEW);
                editorActions.add(Action.COMPLETE);
                editorActions.add(Action.CREATE);
                editorActions.add(Action.ASSIGN);
                editorActions.add(Action.READY);
                editorActions.add(Action.DELETE);
                permissions.put(Role.EDITOR, editorActions);
                
                permissions.put(Role.ADMIN, editorActions);
        }
        
        public static RoleManager getRoleManager(){
                return roleManager;
        }
        
        public void createRole(Role role){
                if(!permissions.containsKey(role)){
                        permissions.put(role, null);
                }
        }
        
        public void dropRole(Role role){
                if(permissions.containsKey(role)){
                        permissions.remove(role);
                }       
        }
        
        public void grantPermission(Role type, Action action){
                List<Action> actions = permissions.get(type);
                if(actions == null){
                        actions = new ArrayList<Action>();
                }
                if(!actions.contains(action)){
                        actions.add(action);
                }
        }

        public void revokePermission(Role type, Action action){
                List<Action> actions = permissions.get(type);
                if(actions != null){
                        actions.remove(action);
                }
        }

        public boolean hasPermission(Role role, Action action){
                return permissions.get(role).contains(action);
        }
}