/*
* $Id: PermissionCacher.java,v 1.32.2.1 2007/01/12 19:31:56 idegaweb Exp $ Created
* in 2001
*
* Copyright (C) 2001-2005 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf. Use is subject to
* license terms.
*/
package com.idega.core.accesscontrol.business;
import java.sql.SQLException;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.idega.core.accesscontrol.data.ICPermission;
import com.idega.core.component.data.ICObject;
import com.idega.data.EntityFinder;
import com.idega.idegaweb.IWApplicationContext;
import com.idega.presentation.Page;
import com.idega.presentation.PresentationObject;
import com.idega.user.data.Group;
/**
* <p>
* Class used for caching of permissions from the ICPermission table - used by
* AccessControl.
* </p>
*
* Last modified: $Date: 2007/01/12 19:31:56 $ by $Author: idegaweb $
*
* @author <a href="mailto:gummi@idega.is">Gu�mundur �g�st S�mundsson </a>,
* Eirikur Hrafnsson, Tryggvi Larusson
*
* @version $Revision: 1.32.2.1 $
*/
class PermissionCacher {
private final String PERMISSION_MAP_PREFIX = "ic_permission_map_";
private final String PERMISSION_MAP_OBJECT = this.PERMISSION_MAP_PREFIX + AccessController.CATEGORY_OBJECT;
private final String PERMISSION_MAP_OBJECT_INSTANCE = this.PERMISSION_MAP_PREFIX
+ AccessController.CATEGORY_OBJECT_INSTANCE;
private final String PERMISSION_MAP_BUNDLE = this.PERMISSION_MAP_PREFIX + AccessController.CATEGORY_BUNDLE;
private final String PERMISSION_MAP_PAGE_INSTANCE = this.PERMISSION_MAP_PREFIX + AccessController.CATEGORY_PAGE_INSTANCE;
private final String PERMISSION_MAP_JSP_PAGE = this.PERMISSION_MAP_PREFIX + AccessController.CATEGORY_JSP_PAGE;
private final String PERMISSION_MAP_FILE = this.PERMISSION_MAP_PREFIX + AccessController.CATEGORY_FILE_ID;
private final String PERMISSION_MAP_GROUP = this.PERMISSION_MAP_PREFIX + AccessController.CATEGORY_GROUP_ID;
private final String PERMISSION_MAP_ROLE = this.PERMISSION_MAP_PREFIX + AccessController.CATEGORY_ROLE;
//for performance Gummi
private final String _SOME_VIEW_PERMISSION_SET = "ic_viewpermission_set";
public PermissionCacher() {
}
// anyPermissionsDefined
public boolean anyInstancePermissionsDefinedForObject(PresentationObject obj, IWApplicationContext iwac,
String permissionKey) throws SQLException {
String[] maps = { this.PERMISSION_MAP_OBJECT_INSTANCE };
return anyPermissionsDefined(obj, iwac, permissionKey, maps);
}
public boolean anyPermissionsDefinedForObject(PresentationObject obj, IWApplicationContext iwac, String permissionKey)
throws SQLException {
String[] maps = { this.PERMISSION_MAP_OBJECT };
return anyPermissionsDefined(obj, iwac, permissionKey, maps);
}
public boolean anyPermissionsDefinedForPage(PresentationObject obj, IWApplicationContext iwac, String permissionKey)
throws SQLException {
return anyPermissionsDefinedForObject(obj, iwac, permissionKey);
}
public boolean anyInstancePermissionsDefinedForPage(Object pageObj, IWApplicationContext iwac, String permissionKey)
throws SQLException {
String[] maps = { this.PERMISSION_MAP_PAGE_INSTANCE };
return anyPermissionsDefined(pageObj, iwac, permissionKey, maps);
}
public boolean anyInstancePermissionsDefinedForObject(String identifier, IWApplicationContext iwac, String permissionKey)
throws SQLException {
return anyPermissionsDefined(identifier, iwac, permissionKey, this.PERMISSION_MAP_OBJECT_INSTANCE);
}
public boolean anyPermissionsDefinedForObject(String identifier, IWApplicationContext iwac, String permissionKey)
throws SQLException {
return anyPermissionsDefined(identifier, iwac, permissionKey, this.PERMISSION_MAP_OBJECT);
}
public boolean anyPermissionsDefinedForPage(String identifier, IWApplicationContext iwac, String permissionKey)
throws SQLException {
return anyPermissionsDefinedForObject(identifier, iwac, permissionKey);
}
public boolean anyInstancePermissionsDefinedForPage(String identifier, IWApplicationContext iwac, String permissionKey)
throws SQLException {
return anyPermissionsDefined(identifier, iwac, permissionKey, this.PERMISSION_MAP_PAGE_INSTANCE);
}
public boolean anyInstancePermissionsDefinedForFile(String identifier, IWApplicationContext iwac, String permissionKey)
throws SQLException {
return anyPermissionsDefined(identifier, iwac, permissionKey, this.PERMISSION_MAP_FILE);
}
private boolean anyPermissionsDefined(Object obj, IWApplicationContext iwac, String permissionKey, String[] maps)
throws SQLException {
String identifier = null;
Boolean set = null;
for (int i = 0; i < maps.length; i++) {
String permissionMapKey = maps[i];
if (permissionMapKey.equals(this.PERMISSION_MAP_OBJECT_INSTANCE)) {
PresentationObject pObject = (PresentationObject) obj;
identifier = Integer.toString(pObject.getICObjectInstanceID());
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_OBJECT)) {
PresentationObject pObject = (PresentationObject) obj;
identifier = Integer.toString(pObject.getICObjectID());
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_PAGE_INSTANCE)) {
if (obj instanceof Page) {
Page page = (Page) obj;
identifier = Integer.toString(page.getPageID());
}
else if (obj instanceof AccessControl.PagePermissionObject) {
AccessControl.PagePermissionObject pageObj = (AccessControl.PagePermissionObject) obj;
identifier = pageObj.getPageKey();
}
}
if (identifier != null) {
PermissionMap permissionMap = (PermissionMap) iwac.getApplicationAttribute(
permissionMapKey);
if (permissionMap == null) {
updatePermissions(permissionMapKey, identifier, permissionKey, iwac);
permissionMap = (PermissionMap) iwac.getApplicationAttribute(
permissionMapKey);
}
Map permissions = permissionMap.get(identifier, permissionKey);
if (permissions == null) {
updatePermissions(permissionMapKey, identifier, permissionKey, iwac);
permissions = permissionMap.get(identifier, permissionKey);
set = ((Boolean) permissions.get(this._SOME_VIEW_PERMISSION_SET));
}
else {
set = ((Boolean) permissions.get(this._SOME_VIEW_PERMISSION_SET));
}
}
else {
throw new RuntimeException("PermissionCacher: Cannot find identifier for " + permissionMapKey + " - "
+ obj);
}
if (set != null && set.equals(Boolean.TRUE)) {
return true;
}
}
if (set != null && set.equals(Boolean.FALSE)) {
return false;
}
else {
return true;
}
}
private boolean anyPermissionsDefined(String identifier, IWApplicationContext iwac, String permissionKey, String map)
throws SQLException {
Boolean set = null;
String permissionMapKey = map;
if (identifier != null) {
PermissionMap permissionMap = (PermissionMap) iwac.getApplicationAttribute(
permissionMapKey);
if (permissionMap == null) {
updatePermissions(permissionMapKey, identifier, permissionKey, iwac);
permissionMap = (PermissionMap) iwac.getApplicationAttribute(permissionMapKey);
}
Map permissions = permissionMap.get(identifier, permissionKey);
if (permissions == null) {
updatePermissions(permissionMapKey, identifier, permissionKey, iwac);
permissions = permissionMap.get(identifier, permissionKey);
set = ((Boolean) permissions.get(this._SOME_VIEW_PERMISSION_SET));
}
else {
set = ((Boolean) permissions.get(this._SOME_VIEW_PERMISSION_SET));
}
}
else {
throw new RuntimeException("PermissionCacher: Cannot find identifier for " + permissionMapKey + " - "
+ identifier);
}
if (set != null && set.equals(Boolean.TRUE)) {
return true;
}
if (set != null && set.equals(Boolean.FALSE)) {
return false;
}
else {
return true;
}
}
/**
* Does not handle pages or jsp pages
*/
public boolean somePermissionSet(PresentationObject obj, IWApplicationContext iwac, String permissionKey)
throws SQLException {
String[] maps = { this.PERMISSION_MAP_OBJECT_INSTANCE, this.PERMISSION_MAP_OBJECT }; // ,
// APPLICATION_ADDRESS_PERMISSIONMAP_BUNDLE};
return anyPermissionsDefined(obj, iwac, permissionKey, maps);
}
public Boolean hasPermissionForJSPPage(IWApplicationContext iwac, String permissionKey, List groups) throws SQLException {
return hasPermission(this.PERMISSION_MAP_JSP_PAGE, null, iwac, permissionKey, groups);
}
public Boolean hasPermissionForObjectInstance(PresentationObject obj, IWApplicationContext iwac, String permissionKey,
List groups) throws SQLException {
return hasPermission(this.PERMISSION_MAP_OBJECT_INSTANCE, obj, iwac, permissionKey, groups);
}
public Boolean hasPermissionForObject(PresentationObject obj, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_OBJECT, obj, iwac, permissionKey, groups);
}
public Boolean hasPermissionForBundle(PresentationObject obj, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_BUNDLE, obj, iwac, permissionKey, groups);
}
public Boolean hasPermissionForPage(Object obj, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_PAGE_INSTANCE, obj, iwac, permissionKey, groups);
}
public Boolean hasPermissionForGroup(Group group, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_GROUP, group, iwac, permissionKey, groups);
}
public Boolean hasPermissionForRole(String theRoleIdentifier, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_ROLE, theRoleIdentifier, iwac, permissionKey, groups);
}
public Boolean hasPermissionForJSPPage(String identifier, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_JSP_PAGE, identifier, iwac, permissionKey, groups);
}
public Boolean hasPermissionForObjectInstance(String identifier, IWApplicationContext iwac, String permissionKey,
List groups) throws SQLException {
return hasPermission(this.PERMISSION_MAP_OBJECT_INSTANCE, identifier, iwac, permissionKey, groups);
}
public Boolean hasPermissionForObject(String identifier, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_OBJECT, identifier, iwac, permissionKey, groups);
}
public Boolean hasPermissionForBundle(String identifier, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_BUNDLE, identifier, iwac, permissionKey, groups);
}
public Boolean hasPermissionForPage(String identifier, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_PAGE_INSTANCE, identifier, iwac, permissionKey, groups);
}
public Boolean hasPermissionForFile(String identifier, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_FILE, identifier, iwac, permissionKey, groups);
}
public Boolean hasPermissionForGroup(String identifier, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
return hasPermission(this.PERMISSION_MAP_GROUP, identifier, iwac, permissionKey, groups);
}
private Boolean hasPermission(String permissionMapKey, Object obj, IWApplicationContext iwac, String permissionKey,
List groups) throws SQLException {
String identifier = getIdentifier(permissionMapKey, obj);
return hasPermission(permissionMapKey, identifier, iwac, permissionKey, groups);
}
protected String getIdentifier(String permissionMapKey, Object obj) {
String identifier = null;
if (permissionMapKey.equals(this.PERMISSION_MAP_OBJECT_INSTANCE)) {
identifier = Integer.toString(((PresentationObject) obj).getICObjectInstanceID());
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_OBJECT)) {
identifier = Integer.toString(((PresentationObject) obj).getICObjectID());// todo
// change
// to
// icobject?
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_BUNDLE)) {
identifier = ((PresentationObject) obj).getBundleIdentifier();// todo
// change
// to
// bundle?
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_PAGE_INSTANCE)) {
if (obj instanceof Page) {
identifier = Integer.toString(((Page) obj).getPageID());
}
else if (obj instanceof AccessControl.PagePermissionObject) {
AccessControl.PagePermissionObject page = (AccessControl.PagePermissionObject) obj;
return page.getPageKey();
}
else if (obj instanceof String) {
return (String) obj;
}
// temp
// identifier =
// com.idega.builder.business.BuilderLogic.getInstance().getCurrentIBPage(iwac);
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_JSP_PAGE)) {
// identifier =
// Integer.toString(com.idega.builder.business.IBJspHandler.getJspPageInstanceID(iwac));
throw new UnsupportedOperationException("PermissionCacher : PermissinonType: " + this.PERMISSION_MAP_JSP_PAGE
+ " is not supported");
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_GROUP)) {
identifier = ((Group) obj).getPrimaryKey().toString();
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_ROLE)) {
identifier = obj.toString();
}
else {
System.err.println("ACCESSCONTROL: type not supported");
}
return identifier;
}
/**
* The permissionchecking ends in this method.
*
* @param permissionMapKey
* @param identifier
* @param iwac
* @param permissionKey
* @param groups
* @return Boolean
* @throws SQLException
*/
private Boolean hasPermission(String permissionMapKey, String identifier, IWApplicationContext iwac, String permissionKey,
List groups) throws SQLException {
if (identifier != null) {
PermissionMap permissionMap = (PermissionMap) iwac.getApplicationAttribute(
permissionMapKey);
if (permissionMap == null) {
updatePermissions(permissionMapKey, identifier, permissionKey, iwac);
permissionMap = (PermissionMap) iwac.getApplicationAttribute(permissionMapKey);
}
List permissions = permissionMap.get(identifier, permissionKey, groups);
if (permissions == null) {
updatePermissions(permissionMapKey, identifier, permissionKey, iwac);
permissions = permissionMap.get(identifier, permissionKey, groups);
}
if (permissions != null) {
if (permissions.contains(Boolean.TRUE)) {
return Boolean.TRUE;
}
/*
* Iterator iter = permissions.iterator(); while
* (iter.hasNext()) { Boolean item = (Boolean)iter.next(); if
* (item != null){ if (item.equals(Boolean.FALSE)){ falseOrNull =
* Boolean.FALSE; }else{ return Boolean.TRUE; } } }
*/
}
return Boolean.FALSE;
}
else {
return Boolean.FALSE;
}
}
public Boolean hasPermission(ICObject obj, IWApplicationContext iwac, String permissionKey, List groups)
throws SQLException {
String permissionMapKey = this.PERMISSION_MAP_OBJECT;
String identifier="-1";
Object primaryKey = obj.getPrimaryKey();
if(primaryKey!=null){
identifier=primaryKey.toString();
}
if (identifier != null) {
PermissionMap permissionMap = (PermissionMap) iwac.getApplicationAttribute(
permissionMapKey);
if (permissionMap == null) {
updatePermissions(permissionMapKey, identifier, permissionKey, iwac);
permissionMap = (PermissionMap) iwac.getApplicationAttribute(permissionMapKey);
}
List permissions = permissionMap.get(identifier, permissionKey, groups);
if (permissions == null) {
updatePermissions(permissionMapKey, identifier, permissionKey, iwac);
permissions = permissionMap.get(identifier, permissionKey, groups);
}
if (permissions != null) {
if (permissions.contains(Boolean.TRUE)) {
return Boolean.TRUE;
}
/*
* Iterator iter = permissions.iterator(); while
* (iter.hasNext()) { Boolean item = (Boolean)iter.next(); if
* (item != null){ if (item.equals(Boolean.FALSE)){ falseOrNull =
* Boolean.FALSE; }else{ return Boolean.TRUE; } } }
*/
}
return Boolean.FALSE;
}
else {
return null;
}
}
// Update
public void updateObjectInstancePermissions(String instanceId, String permissionKey, IWApplicationContext iwac)
throws SQLException {
updatePermissions(this.PERMISSION_MAP_OBJECT_INSTANCE, instanceId, permissionKey, iwac);
}
public void updateObjectPermissions(String objectId, String permissionKey, IWApplicationContext iwac) throws SQLException {
updatePermissions(this.PERMISSION_MAP_OBJECT, objectId, permissionKey, iwac);
}
public void updateBundlePermissions(String bundleIdentifier, String permissionKey, IWApplicationContext iwac)
throws SQLException {
updatePermissions(this.PERMISSION_MAP_BUNDLE, bundleIdentifier, permissionKey, iwac);
}
public void updatePagePermissions(String pageId, String permissionKey, IWApplicationContext iwac) throws SQLException {
updatePermissions(this.PERMISSION_MAP_PAGE_INSTANCE, pageId, permissionKey, iwac);
}
public void updateJSPPagePermissions(String jspPageId, String permissionKey, IWApplicationContext iwac) throws SQLException {
updatePermissions(this.PERMISSION_MAP_JSP_PAGE, jspPageId, permissionKey, iwac);
}
public void updateFilePermissions(String fileId, String permissionKey, IWApplicationContext iwac) throws SQLException {
updatePermissions(this.PERMISSION_MAP_FILE, fileId, permissionKey, iwac);
}
public void updatePermissions(int permissionCategory, String identifier, String permissionKey, IWApplicationContext iwac)
throws SQLException {
switch (permissionCategory) {
case AccessController.CATEGORY_OBJECT_INSTANCE:
updatePermissions(this.PERMISSION_MAP_OBJECT_INSTANCE, identifier, permissionKey, iwac);
break;
case AccessController.CATEGORY_PAGE:
case AccessController.CATEGORY_OBJECT:
updatePermissions(this.PERMISSION_MAP_OBJECT, identifier, permissionKey, iwac);
break;
case AccessController.CATEGORY_BUNDLE:
updatePermissions(this.PERMISSION_MAP_BUNDLE, identifier, permissionKey, iwac);
break;
case AccessController.CATEGORY_PAGE_INSTANCE:
updatePermissions(this.PERMISSION_MAP_PAGE_INSTANCE, identifier, permissionKey, iwac);
break;
case AccessController.CATEGORY_GROUP_ID:
updatePermissions(this.PERMISSION_MAP_GROUP, identifier, permissionKey, iwac);
break;
case AccessController.CATEGORY_ROLE:
updatePermissions(this.PERMISSION_MAP_ROLE, identifier, permissionKey, iwac);
break;
}
}
private synchronized void updatePermissions(String permissionMapKey, String identifier, String permissionKey,
IWApplicationContext iwac) throws SQLException {
// PermissionMap permissionMap =
// (PermissionMap)iwac.getApplicationAttribute(permissionMapKey);
PermissionMap permissionMap = (PermissionMap) iwac.getApplicationAttribute(
permissionMapKey);
if (permissionMap == null) {
permissionMap = new PermissionMap();
iwac.setApplicationAttribute(permissionMapKey, permissionMap);
}
//
List permissions = null;
if (identifier != null) {
if (permissionMapKey.equals(this.PERMISSION_MAP_OBJECT_INSTANCE)) {
permissions = EntityFinder.findAllByColumnEquals(
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getStaticInstance(),
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextTypeColumnName(),
AccessController.CATEGORY_STRING_OBJECT_INSTANCE_ID,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextValueColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getPermissionStringColumnName(),
permissionKey);
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_OBJECT)) {
permissions = EntityFinder.findAllByColumnEquals(
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getStaticInstance(),
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextTypeColumnName(),
AccessController.CATEGORY_STRING_IC_OBJECT_ID,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextValueColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getPermissionStringColumnName(),
permissionKey);
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_BUNDLE)) {
permissions = EntityFinder.findAllByColumnEquals(
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getStaticInstance(),
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextTypeColumnName(),
AccessController.CATEGORY_STRING_BUNDLE_IDENTIFIER,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextValueColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getPermissionStringColumnName(),
permissionKey);
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_PAGE_INSTANCE)) {
permissions = EntityFinder.findAllByColumnEquals(
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getStaticInstance(),
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextTypeColumnName(),
AccessController.CATEGORY_STRING_PAGE_ID,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextValueColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getPermissionStringColumnName(),
permissionKey);
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_JSP_PAGE)) {
permissions = EntityFinder.findAllByColumnEquals(
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getStaticInstance(),
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextTypeColumnName(),
AccessController.CATEGORY_STRING_JSP_PAGE,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextValueColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getPermissionStringColumnName(),
permissionKey);
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_FILE)) {
permissions = EntityFinder.findAllByColumnEquals(
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getStaticInstance(),
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextTypeColumnName(),
AccessController.CATEGORY_STRING_FILE_ID,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextValueColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getPermissionStringColumnName(),
permissionKey);
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_GROUP)) {
permissions = EntityFinder.findAllByColumnEquals(
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getStaticInstance(),
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextTypeColumnName(),
AccessController.CATEGORY_STRING_GROUP_ID,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextValueColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getPermissionStringColumnName(),
permissionKey);
}
else if (permissionMapKey.equals(this.PERMISSION_MAP_ROLE)) {
permissions = EntityFinder.findAllByColumnEquals(
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getStaticInstance(),
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextTypeColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getContextValueColumnName(), identifier,
com.idega.core.accesscontrol.data.ICPermissionBMPBean.getPermissionStringColumnName(),
permissionKey);
}
}
// TODO ask gummi how this works
if (permissions != null) {
Iterator iter = permissions.iterator();
Map mapToPutTo = new Hashtable();
while (iter.hasNext()) {
ICPermission item = (ICPermission) iter.next();
mapToPutTo.put(Integer.toString(item.getGroupID()), (item.getPermissionValue()) ? Boolean.TRUE
: Boolean.FALSE);
}
// THIS IS DONE SO YOU ALWAYS HAVE VIEW PERMISSION IF NO PERMISSION
// IS DEFINED
mapToPutTo.put(this._SOME_VIEW_PERMISSION_SET, Boolean.TRUE);
permissionMap.put(identifier, permissionKey, mapToPutTo);
}
else {
Map mapToPutTo = new Hashtable();
mapToPutTo.put(this._SOME_VIEW_PERMISSION_SET, Boolean.FALSE);
permissionMap.put(identifier, permissionKey, mapToPutTo);
}
}
}