BeanContextHolder.java 1.29 KB
package fi.insomnia.bortal.utilities;

import java.util.HashMap;
import java.util.Map;

import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.model.RoleRight;

public class BeanContextHolder {

	private Map<Permission, Map<RolePermission, Boolean>> rightcache = new HashMap<Permission, Map<RolePermission, Boolean>>();

	public Boolean hasPermission(Permission target, RolePermission permission) {
		Map<RolePermission, Boolean> permmap = rightcache.get(target);
		if (permmap == null) {
			permmap = new HashMap<RolePermission, Boolean>();
			rightcache.put(target, permmap);
		}
		return permmap.get(permission);
	}

	public  void setPermission(Permission target, RolePermission permission, Boolean ret) {
		Map<RolePermission, Boolean> permmap = rightcache.get(target);
		if (permmap == null) {
			permmap = new HashMap<RolePermission, Boolean>();
			rightcache.put(target, permmap);
		}
		permmap.put(permission, ret);
	}

	public void setPermission(RoleRight rr) {
		if (rr.isExecute()) {
			setPermission(rr.getPermission(), RolePermission.EXECUTE, true);
		}
		if (rr.isWrite()) {
			setPermission(rr.getPermission(), RolePermission.WRITE, true);
		}
		if (rr.isRead()) {
			setPermission(rr.getPermission(), RolePermission.READ, true);
		}
	}

}