package com.openedit.page; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.openedit.data.SearcherManager; import com.openedit.WebPageRequest; public class PermissionManager { protected PermissionSorter fieldPermissionSorter; protected String fieldCatalogId; public String getCatalogId() { return fieldCatalogId; } public void setCatalogId(String inCatalogId) { fieldCatalogId = inCatalogId; } public SearcherManager getSearcherManager() { return fieldSearcherManager; } public void setSearcherManager(SearcherManager inSearcherManager) { fieldSearcherManager = inSearcherManager; } protected SearcherManager fieldSearcherManager; public PermissionSorter getPermissionSorter() { if (fieldPermissionSorter == null) { fieldPermissionSorter = new PermissionSorter(); Collection items = getSearcherManager().getList(getCatalogId(),"permissionsapp"); fieldPermissionSorter.loadPermissions(items); } return fieldPermissionSorter; } public void setPermissionSorter(PermissionSorter inPermissionSorter) { fieldPermissionSorter = inPermissionSorter; } public void loadPermissions(WebPageRequest inReq, Page inPage, String limited) { List permissions = null; if( limited == null ) { permissions = inPage.getPermissions(); } else { permissions = new ArrayList(); String[] array = limited.split("\\s+"); for (int i = 0; i < array.length; i++) { Permission permission = inPage.getPermission( array[i] ); if( permission != null ) { permissions.add(permission); } } } if (permissions != null) { Collections.sort(permissions,getPermissionSorter() ); for (Iterator iterator = permissions.iterator(); iterator.hasNext();) { Permission per = (Permission) iterator.next(); boolean value = per.passes(inReq); inReq.putPageValue("can" + per.getName(), Boolean.valueOf(value)); } } } }