/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.enterprise.gui.legacy.util; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.resource.group.GroupCategory; import org.rhq.core.domain.resource.group.ResourceGroup; import org.rhq.enterprise.gui.legacy.Constants; /* XXX: use reflection to combine some of these methods? */ /** * Utilities class that provides convenience methods for operating on bizapp objects. * * @deprecated */ @Deprecated public class BizappUtils { /** * Caches the values returned by buildSupportedAIServerTypes */ private static Map AIServerTypesByPlatform = new HashMap(); private static Map platformTypesById = new HashMap(); private static Map platformTypesByName = new HashMap(); private static Log log = LogFactory.getLog(BizappUtils.class.getName()); // /** A helper method used by setRuntimeAIMessage */ // private static String getServiceName(PageList serviceTypes, int index, // String stName) { // String baseName // = ((ServiceTypeValue) serviceTypes.get(index)).getName(); // return StringUtil.pluralize(StringUtil.removePrefix(baseName, stName)); // } /** * Return the full name of the subject. * * @param fname the subject's first name * @param lname the subject's last name */ public static String makeSubjectFullName(String fname, String lname) { // XXX: what about Locales that display last name first? StringBuffer full = new StringBuffer(); if ((fname == null) || fname.equals("")) { if ((lname != null) && !lname.equals("")) { full.append(lname); } } else { if ((lname == null) || lname.equals("")) { full.append(fname); } else { full.append(fname); full.append(" "); full.append(lname); } } return full.toString(); } // public static PlatformTypeValue getPlatformTypeName(ServletContext ctx, // HttpServletRequest request, // String name) // throws Exception { // // PlatformTypeValue ptValue; // // // check the cache first // synchronized (platformTypesByName) { // ptValue = (PlatformTypeValue) platformTypesByName.get(name); // if (ptValue != null) return ptValue; // } // // AppdefBoss appdefBoss = ContextUtils.getAppdefBoss(ctx); // int sessionId = RequestUtils.getSessionIdInt(request); // ptValue = appdefBoss.findPlatformTypeByName(sessionId, name); // // synchronized (platformTypesByName) { // platformTypesByName.put(name, ptValue); // } // return ptValue; // } // // /** // * filter on a list of AIAppdefResourceValue. Either get the ignored // * resources or non-ignored. // * // * @param resources List of AIAppdefResources to filter // * @param status flag to indicate if we get the ignored/non-ignored // * @return the list of resources // */ // public static List<AiqResource> filterAIResourcesByStatus(List<AiqResource> resources, Integer status) // { // if (status == null || status.intValue() == -1) // return resources; // // List<AiqResource> resourceList = new PageList<AiqResource>(); // // Iterator<AiqResource> sIterator = resources.iterator(); // while (sIterator.hasNext()) // { // AiqResource rValue = sIterator.next(); // if (rValue.getQueueStatus() != null) // { // if (rValue.getQueueStatus() == status.intValue() ) // { // resourceList.add(rValue); // } // } // // } // // return resourceList; // } // // /** // * filter on a list of AIAppdefResourceValue by Server Type. // * // * @param resources List of AIAppdefResources to filter // * @param ignored flag to indicate if we get the ignored/non-ignored // */ // public static List filterAIResourcesByServerType(List resources, String name) // { // if (name == null || name.equals("") ) // return resources; // // List resourceList = new PageList(); // // Iterator sIterator = resources.iterator(); // while (sIterator.hasNext()) // { // AiqServer rValue = (AiqServer)sIterator.next(); // if (rValue.getServerTypeName().equals(name) ) // { // resourceList.add(rValue); // } // // } // // return resourceList; // } // // /** // * When displaying the config options (both in the ViewXXX and EditXXX // * tiles), we display a message "Auto-Discover foo, bar, and other // * services?" next to the checkbox. The "foo, bar, and other" part // * is what gets generated here and stuck in the request attributes // * as the Constants.SERVICE_TYPE_EXAMPLE_LIST attribute. // */ // public static void setRuntimeAIMessage (int sessionId, // HttpServletRequest request, // ServerValue server, // AppdefBoss appdefBoss) // throws SessionTimeoutException, SessionNotFoundException, // RemoteException { // // // Find a couple of sample services // int serverTypeId = server.getServerType().getId().intValue(); // PageList serviceTypes // = appdefBoss.findServiceTypesByServerType(sessionId, serverTypeId); // String serviceNameList; // int numServiceTypes = serviceTypes.size(); // String serviceName; // String stName = server.getServerType().getName(); // // if (numServiceTypes == 0) { // // Should not really happen // serviceNameList = "services"; // // } else if (numServiceTypes == 1) { // serviceNameList = getServiceName(serviceTypes, 0, stName); // // } else if (numServiceTypes == 2) { // serviceNameList // = getServiceName(serviceTypes, 0, stName) // + " and " // + getServiceName(serviceTypes, 1, stName); // } else { // serviceNameList // = getServiceName(serviceTypes, 0, stName) // + ", " // + getServiceName(serviceTypes, 1, stName) // + ", and other services"; // } // // System.err.println("serviceNameList---->" + serviceNameList); // request.setAttribute(Constants.AI_SAMPLE_SERVICETYPE_LIST, // serviceNameList); // } // // /** // * builds a list of ids of ai resources for resources which are not // * ignored. // */ // public static List buildAIIpResourceIds(AiqIp[] aiResources, boolean ignored) { // List listServerIds = new ArrayList(); // // for (int i = 0; i < aiResources.length; i++) // if (aiResources[i].getIgnored() == ignored ) // listServerIds.add(aiResources[i].getId()); // // return listServerIds; // } // // /** // * builds a list of ids of ai resources for resources which are not // * ignored. // */ // public static List buildAIServerResourceIds(AiqServer[] aiResources, boolean ignored) { // List listServerIds = new ArrayList(); // // for (int i = 0; i < aiResources.length; i++) // if (aiResources[i].getIgnored() == ignored ) // listServerIds.add(aiResources[i].getId()); // // return listServerIds; // } // // /** // * build a list of supported server types for ai subsystem // */ // public static AppdefResourceTypeValue[] buildSupportedAIServerTypes // (ServletContext ctx, // HttpServletRequest request, // PlatformValue pValue) throws Exception { // // PlatformTypeValue ptValue = pValue.getPlatformType(); // // // check the cache first // AppdefResourceTypeValue[] sType = null; // synchronized(AIServerTypesByPlatform) { // sType = (AppdefResourceTypeValue[]) // AIServerTypesByPlatform.get(ptValue.getId()); // if (sType != null) return sType; // } // // AIBoss aiBoss = ContextUtils.getAIBoss(ctx); // int sessionId = RequestUtils.getSessionIdInt(request); // // // build support ai server types // ServerTypeValue[] serverTypeValObjs = ptValue.getServerTypeValues(); // // List serverTypeVals = new ArrayList(); // for (int i=0, size=serverTypeValObjs.length; i<size; i++) { // //XXX NewServerFormPrepareAction does similar, should there // //be a generic method? // if (serverTypeValObjs[i].getVirtual()) { // continue; // } // serverTypeVals.add(serverTypeValObjs[i]); // } // // Map serverSigs = aiBoss.getServerSignatures(sessionId, // serverTypeVals); // // List filteredServerTypes = // BizappUtils.buildServerTypesFromServerSig(serverTypeValObjs, // serverSigs.values().iterator()); // sType = new AppdefResourceTypeValue[filteredServerTypes.size()]; // // filteredServerTypes.toArray(sType); // synchronized(AIServerTypesByPlatform) { // AIServerTypesByPlatform.put(ptValue.getId(), sType); // } // return sType; // } // // /** // * build a list of server types extracted from the ai server list // */ // public static AppdefResourceTypeValue[] buildfilteredAIServerTypes( // AppdefResourceTypeValue[] supportedResTypes, // AiqServer[] sValues) { // List filteredServerTypes = new ArrayList(); // for (int i = 0; i < sValues.length; i++) // { // String sTypeName = sValues[i].getServerTypeName(); // AppdefResourceTypeValue appdefType = // findResourceTypeValue(supportedResTypes, sTypeName); // if (appdefType != null) // filteredServerTypes.add(appdefType); // } // // filteredServerTypes = sortAppdefResourceType(filteredServerTypes); // AppdefResourceTypeValue[] sType = new AppdefResourceTypeValue[filteredServerTypes.size()]; // // filteredServerTypes.toArray(sType); // return sType; // } // // /** // * use this comparator to sort the AppdefResourceTypeValue objects // */ // private static Comparator COMPARE_NAME = new Comparator() { // public int compare(Object obj1, Object obj2) { // // AppdefResourceTypeValue resType1 = (AppdefResourceTypeValue)obj1; // AppdefResourceTypeValue resType2 = (AppdefResourceTypeValue)obj2; // // if (resType1 == null) { // if (resType2 == null) return 0; // else return Integer.MAX_VALUE; // } // if (resType2 == null) return Integer.MIN_VALUE; // // return resType1.getName().compareToIgnoreCase(resType2.getName()); // } // }; // // /** // * use this class to sort pending AppdefResourceTypeValue objects // * for groups. case-sensitive sort. // */ // private class AppdefResourceNameComparator implements Comparator // { // private PageControl pc = null; // // public AppdefResourceNameComparator(PageControl pc) // { // this.pc = pc; // } // // /* (non-Javadoc) // * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) // */ // public int compare(Object obj1, Object obj2) { // // AppdefResourceValue res1 = (AppdefResourceValue)obj1; // AppdefResourceValue res2 = (AppdefResourceValue)obj2; // // if (pc != null && pc.isDescending() ) // return -(res1.getName().compareTo(res2.getName())); // else // return res1.getName().compareTo(res2.getName()); // } // // } // // /** // * use this class to sort the AppdefResourceTypeValue objects // */ // private class AIResourceIdComparator implements Comparator // { // public int compare(Object obj1, Object obj2) // { // AiqResource res1 = (AiqResource)obj1; // AiqResource res2 = (AiqResource)obj2; // // int res1Id = res1.getId(); // int res2Id = res2.getId(); // // return (res1Id < res2Id ? -1 : ( res1Id == res2Id ? 0 : 1)); // } // } // // public static List sortAppdefResourceType(List resourceType) // { // List sortedList = new ArrayList(); // SortedSet sSet = new TreeSet(COMPARE_NAME); // sSet.addAll(resourceType); // CollectionUtils.addAll(sortedList, sSet.iterator()); // return sortedList; // } // // public static List sortAIResource(List resource) // { // List sortedList = new ArrayList(); // SortedSet sSet = // new TreeSet(new BizappUtils().new AIResourceIdComparator()); // sSet.addAll(resource); // CollectionUtils.addAll(sortedList, sSet.iterator()); // return sortedList; // } // // /** // * builds a list of server types from ServerSignature objects // * // * @param sTypes list of AppdefResourceType objects // * @param serverSigs list of ServerSignature objects // */ // public static List buildServerTypesFromServerSig(AppdefResourceTypeValue[] sTypes, // Iterator sigIterator) // { // List serverTypes = new ArrayList(); // synchronized(serverTypes) { // while (sigIterator.hasNext()) { // ServerSignature st = (ServerSignature)sigIterator.next(); // // AppdefResourceTypeValue stype = // BizappUtils.findResourceTypeValue(sTypes, st.getServerTypeName()); // serverTypes.add(stype); // } // } // Collections.sort(serverTypes, COMPARE_NAME); // return serverTypes; // } // // /** // * find a ResourceTypeValue object from a list of ResourceTypeValue obects. // * // * @param resourceTypeVals // * @param name name of the ResourceTypeValue object to find // * // * @return a ResourceTypeValue or null // */ // public static AppdefResourceTypeValue findResourceTypeValue( // AppdefResourceTypeValue[] resourceTypes, String name) { // for(int i = 0; i < resourceTypes.length; i++) // { // AppdefResourceTypeValue resourceType = resourceTypes[i]; // if (resourceType != null && resourceType.getName().equals(name) ) // return resourceType; // } // // return null; // } // // /** // * This method builds a list of AppdefResourceValue objects // * from a list of AppdefEntityID. // * // * This function should be moved into bizapp layer if possible // * later. I am leaving it until I have an api which provides // * similar functionality. - mtk // * // * @return a list of AppdefResourceValue objects // */ // public static List buildAppdefResources(int sessionId, AppdefBoss boss, // AppdefEntityID[] entities) // throws ObjectNotFoundException, RemoteException, // SessionTimeoutException, SessionNotFoundException, // PermissionException // { // if (entities == null) // return new ArrayList(); // // return boss.findByIds(sessionId, entities); // } // // /** // * This method sorts list of AppdefResourceValue objects // * // * @return a list of AppdefResourceValue objects // */ // public static List sortAppdefResource(List appdefList, PageControl pc) // { // List sortedList = new ArrayList(); // SortedSet sSet = // new TreeSet(new BizappUtils().new AppdefResourceNameComparator(pc)); // sSet.addAll(appdefList); // CollectionUtils.addAll(sortedList, sSet.iterator()); // // // There are duplicated names, figure out where to insert them // for (Iterator it = appdefList.iterator(); // sortedList.size() != appdefList.size() && it.hasNext(); ) { // AppdefResourceValue res = (AppdefResourceValue) it.next(); // // for (int i = 0; i < sortedList.size(); i++) { // AppdefResourceValue sorted = // (AppdefResourceValue) sortedList.get(i); // if (sorted.getEntityId().equals(res.getEntityId())) // break; // // // Either it's meant to go in between or the last // if (res.getName().toLowerCase().compareTo( // sorted.getName().toLowerCase()) < 0 || // i == sortedList.size() - 1) { // sortedList.add(i, res); // break; // } // } // } // // return sortedList; // // } // // /** // * This method builds a list of AppdefEntityID objects from // * [entityType]:[resourceTypeId] strings // * // * @param entitIds list of [entityType]:[resourceTypeId] strings // */ // public static List buildAppdefEntityIds(List entityIds) // { // List entities = new ArrayList(); // Iterator rIterator = entityIds.iterator(); // while (rIterator.hasNext()) // { // AppdefEntityID entityId = new AppdefEntityID( // (String)rIterator.next()); // entities.add(entityId); // } // // return entities; // } // // // /** // * builds the value objects in the form: [entity type id]:[resource type id] // * // * @param resourceTypes // * @return List // * @throws InvalidAppdefTypeException // */ // public static PageList buildAppdefOptionList(List<org.jboss.on.domain.resource.ResourceType> resourceTypes, // boolean useHyphen) // throws InvalidAppdefTypeException { // PageList optionList = new PageList(); // // if (resourceTypes == null) // return optionList; // // Iterator aIterator = resourceTypes.iterator(); // optionList.setTotalSize(resourceTypes.size() ); // for (org.jboss.on.domain.resource.ResourceType type : resourceTypes) { // //while (aIterator.hasNext()) // //{ // //AppdefResourceTypeValue sTypeVal = // // (AppdefResourceTypeValue)aIterator.next(); // // HashMap<String, Object> map1 = new HashMap<String, Object>(2); // map1.put("value", type.getId()); // //map1.put("value", sTypeVal.getAppdefTypeKey() ); // if (useHyphen) { // //map1.put("label", "- " + sTypeVal.getName()); // map1.put("label", "- " + type.getName()); // } else { // map1.put("label", type.getName()); // } // // optionList.add(map1); // } // // return optionList; // } // /** * Return the full name of the subject. * * @param subject the subject */ public static String makeSubjectFullName(Subject subject) { return makeSubjectFullName(subject.getFirstName(), subject.getLastName()); } /** * build group types and its corresponding resource string respresentations from the ApplicationResources.properties * file. * * @return a list */ public static List buildGroupTypes(HttpServletRequest request) { List<Map> groupTypes = new ArrayList<Map>(); Map<String, Object> map2 = new HashMap<String, Object>(2); map2.put("value", GroupCategory.COMPATIBLE.name()); map2.put("label", RequestUtils.message(request, "resource.group.inventory.CompatibleClusterResources")); groupTypes.add(map2); Map<String, Object> map1 = new HashMap<String, Object>(2); map1.put("value", GroupCategory.MIXED.name()); map1.put("label", RequestUtils.message(request, "resource.group.inventory.MixedResources")); groupTypes.add(map1); return groupTypes; } /** * build group types and its corresponding resource string respresentations from the ApplicationResources.properties * file. * * @return a list */ public static String getGroupLabel(HttpServletRequest request, ResourceGroup group) { if (group.getGroupCategory() == GroupCategory.COMPATIBLE) { return RequestUtils.message(request, "resource.group.inventory.CompatibleClusterResources"); } else if (group.getGroupCategory() == GroupCategory.MIXED) { return RequestUtils.message(request, "resource.group.inventory.MixedResources"); } else { throw new RuntimeException("Group label for type " + group.getClass().getName() + " not supported yet"); } } // /** // * builds a list of AppdefResourceValue objects from a list // * of AppdefEntityID objects stored in the group. // * // * @param group AppdefGroupValue which contains the list of resources // * @return a list of AppdefResourceValue objects // */ // public static List buildGroupResources( // AppdefBoss boss, // int sessionId, // AppdefGroupValue group) // throws ObjectNotFoundException, RemoteException, PermissionException, // SessionTimeoutException, SessionNotFoundException // { // List grpEntries = group.getAppdefGroupEntries(); // // AppdefEntityID[] entities = new AppdefEntityID[grpEntries.size()]; // entities = (AppdefEntityID[]) grpEntries.toArray(entities); // // return boss.findByIds(sessionId, entities); // } /** * Return an array of operation ids as <code>String</code> objects corresponding to the operations contained in the * input map of resource types to operations. * * @param map the <code>Map</code> of resource types to operations */ public static Integer[] mapOperationIds(Map map) { ArrayList ids = new ArrayList(); Iterator ri = map.keySet().iterator(); while (ri.hasNext()) { String name = (String) ri.next(); List objs = (List) map.get(name); // if (objs != null) { // Iterator oi = objs.iterator(); // while (oi.hasNext()) { // OldOperation obj = (OldOperation) oi.next(); // ids.add(obj.getId()); // } // } } return (Integer[]) ids.toArray(new Integer[0]); } // /** // * Return the <code>Operation</code> object with the given // * name from a list. // * @param operations the <code>List</code> of operations // * @param name the sought operation name // */ // public static OldOperation findOperation(List operations, String name) { // if (operations == null || name == null) { // return null; // } // // Iterator oi = operations.iterator(); // while (oi.hasNext()) { // OldOperation op = (OldOperation) oi.next(); // if (name.equals(op.getName())) { // return op; // } // } // // return null; // } /** * Return a <code>List</code> of <code>Operation</code> objects corresponding to the input array of operation ids. * * @param operations the <code>List</code> of operations * @param ids the operation ids */ public static List mapOperations(List operations, List ids) { if ((operations == null) || (ids == null)) { return new ArrayList(0); } // build an index of operations HashMap index = new HashMap(); Iterator oi = operations.iterator(); // while (oi.hasNext()) { // OldOperation op = (OldOperation) oi.next(); // index.put(op.getId(), op); // } // find the operation for each given id List objects = new ArrayList(operations.size()); Iterator ii = ids.iterator(); while (ii.hasNext()) { objects.add(index.get(ii.next())); } return objects; } /** * Check in the permissions map to see if the user can administer CAM. * * @param A Map of Lists that contains the different groups of permissions. * * @return Whether or not the admin cam is contained in the type map. */ public static boolean canAdminCam(Map roleOps) { if (roleOps == null) { return false; } List ops = (List) roleOps.get("covalentAuthzRootResourceType"); if (ops == null) { return false; } // Iterator i = ops.iterator(); // while (i.hasNext()) { // OldOperation ov = (OldOperation)i.next(); // if ("administerCAM".equals(ov.getName())) { // return true; // } // } return false; } /** * Check in the permissions map to see if the user can administer RHQ with the given permission. * * @param request contains the attribute that has the user operations * * @return true if the current user is allowed to administer RHQ */ public static boolean hasPermission(HttpServletRequest request, org.rhq.core.domain.authz.Permission perm) { HttpSession session = request.getSession(true); Map<String, Boolean> userOpsMap = (Map<String, Boolean>) session.getAttribute(Constants.USER_OPERATIONS_ATTR); if (userOpsMap == null) { return false; } return userOpsMap.containsKey(perm.toString()); } /** * adds a list of AppdefEntityID objects to a group if this api is used in bizapp, will use it. */ // public static void addResourcesToGroup(AppdefGroupValue group, List ids) // throws GroupVisitorException { // Iterator iterator = ids.iterator(); // while (iterator.hasNext()) { // String id = (String) iterator.next(); // List groupEntries = group.getAppdefGroupEntries(); // // AppdefEntityID entity = new AppdefEntityID(id); // if (!group.existsAppdefEntity(entity)) // group.addAppdefEntity(entity); // } // } /** * Update the given role operations map to reflect the gui's permission model. Specifically, copy each operation on * the root resource type into the list for the resource type that the is display-wise associated with. For * instance, the "addSubject" operation is associated in the Bizapp with the root resource type, but we we need it * to be associated with the subject resource type for display purposes. * * @param map the <code>Map</code> of role operations */ public static void fixupRoleOperationMap(Map map) { // i hate thos method as much as you do // List ops = (List) map.get("covalentAuthzRootResourceType"); // // Iterator i = null; // OldOperation op = null; // String opName = null; // List typeOps = null; // // if (ops != null) { // i = ops.iterator(); // while (i.hasNext()) { // op = (OldOperation) i.next(); // opName = op.getName(); // // if ("createSubject".equals(opName) || // "viewSubject".equals(opName) || // "modifySubject".equals(opName) || // "removeSubject".equals(opName)) { // typeOps = (List) map.get("covalentAuthzSubject"); // if (typeOps == null) { // typeOps = new ArrayList(); // } // map.put("covalentAuthzSubject", typeOps); // } // else if ("createRole".equals(opName)) { // typeOps = (List) map.get("covalentAuthzRole"); // if (typeOps == null) { // typeOps = new ArrayList(); // } // map.put("covalentAuthzRole", typeOps); // } // else if ("createPlatform".equals(opName)) { // typeOps = (List) map.get("covalentEAMPlatform"); // if (typeOps == null) { // typeOps = new ArrayList(); // } // map.put("covalentEAMPlatform", typeOps); // } // else if ("createApplication".equals(opName)) { // typeOps = (List) map.get("covalentEAMApplication"); // if (typeOps == null) { // typeOps = new ArrayList(); // } // map.put("covalentEAMApplication", typeOps); // } // // if (typeOps != null) { // typeOps.add(op); // } // } // } // // typeOps = null; // ops = (List) map.get("covalentEAMPlatform"); // if (ops != null) { // i = ops.iterator(); // while (i.hasNext()) { // op = (OldOperation) i.next(); // opName = op.getName(); // // if ("addServer".equals(opName)) { // typeOps = (List) map.get("covalentEAMServer"); // if (typeOps == null) { // typeOps = new ArrayList(); // } // typeOps.add(op); // map.put("covalentEAMServer", typeOps); // } // } // } // // typeOps = null; // ops = (List) map.get("covalentEAMServer"); // if (ops != null) { // i = ops.iterator(); // while (i.hasNext()) { // op = (OldOperation) i.next(); // opName = op.getName(); // // if ("addService".equals(opName)) { // typeOps = (List) map.get("covalentEAMService"); // if (typeOps == null) { // typeOps = new ArrayList(); // } // typeOps.add(op); // map.put("covalentEAMService", typeOps); // } // } // } } public static List loadPermissions(List operations) { // XXX: configure perm/op mapping externally? List perms = new ArrayList(); // if (operations == null) { // return perms; // } // // Iterator i = operations.iterator(); // Map<String, OldOperation> opIdx = new HashMap<String, OldOperation>(operations.size()); // while (i.hasNext()) { // OldOperation op = (OldOperation) i.next(); // opIdx.put(op.getName(), op); // } // // Permission viewPerms = new Permission("view"); // viewPerms.putOperation("covalentAuthzSubject", // opIdx.get("viewSubject")); // viewPerms.putOperation("covalentAuthzRole", // opIdx.get("viewRole")); // viewPerms.putOperation("covalentAuthzResourceGroup", // opIdx.get("viewResourceGroup")); // viewPerms.putOperation("covalentEAMPlatform", // opIdx.get("viewPlatform")); // viewPerms.putOperation("covalentEAMServer", // opIdx.get("viewServer")); // viewPerms.putOperation("covalentEAMService", // opIdx.get("viewService")); // viewPerms.putOperation("covalentEAMApplication", // opIdx.get("viewApplication")); // perms.add(viewPerms); // // Permission createPerms = new Permission("create"); // createPerms.putOperation("covalentAuthzSubject", // opIdx.get("createSubject")); // createPerms.putOperation("covalentAuthzRole", // opIdx.get("createRole")); // createPerms.putOperation("covalentEAMPlatform", // opIdx.get("createPlatform")); // createPerms.putOperation("covalentEAMServer", // opIdx.get("addServer")); // createPerms.putOperation("covalentEAMService", // opIdx.get("addService")); // createPerms.putOperation("covalentEAMApplication", // opIdx.get("createApplication")); // perms.add(createPerms); // // Permission modifyPerms = new Permission("modify"); // modifyPerms.putOperation("covalentAuthzSubject", // opIdx.get("modifySubject")); // modifyPerms.putOperation("covalentAuthzRole", // opIdx.get("modifyRole")); // modifyPerms.putOperation("covalentAuthzResourceGroup", // opIdx.get("modifyResourceGroup")); // modifyPerms.putOperation("covalentEAMPlatform", // opIdx.get("modifyPlatform")); // modifyPerms.putOperation("covalentEAMServer", // opIdx.get("modifyServer")); // modifyPerms.putOperation("covalentEAMService", // opIdx.get("modifyService")); // modifyPerms.putOperation("covalentEAMApplication", // opIdx.get("modifyApplication")); // perms.add(modifyPerms); // // Permission deletePerms = new Permission("delete"); // deletePerms.putOperation("covalentAuthzSubject", // opIdx.get("removeSubject")); // deletePerms.putOperation("covalentAuthzRole", // opIdx.get("removeRole")); // deletePerms.putOperation("covalentAuthzResourceGroup", // opIdx.get("removeResourceGroup")); // deletePerms.putOperation("covalentEAMPlatform", // opIdx.get("removePlatform")); // deletePerms.putOperation("covalentEAMServer", // opIdx.get("removeServer")); // deletePerms.putOperation("covalentEAMService", // opIdx.get("removeService")); // deletePerms.putOperation("covalentEAMApplication", // opIdx.get("removeApplication")); // perms.add(deletePerms); // // Permission alertPerms = new Permission("alert"); // alertPerms.putOperation("covalentAuthzResourceGroup", // opIdx.get("manageGroupAlerts")); // alertPerms.putOperation("covalentEAMPlatform", // opIdx.get("managePlatformAlerts")); // alertPerms.putOperation("covalentEAMServer", // opIdx.get("manageServerAlerts")); // alertPerms.putOperation("covalentEAMService", // opIdx.get("manageServiceAlerts")); // alertPerms.putOperation("covalentEAMApplication", // opIdx.get("manageApplicationAlerts")); // perms.add(alertPerms); // //// Permission monitorPerms = new Permission("monitor"); //// monitorPerms.putOperation("covalentEAMPlatform", //// (Operation) opIdx.get("monitorPlatform")); //// monitorPerms.putOperation("covalentEAMServer", //// (Operation) opIdx.get("monitorServer")); //// monitorPerms.putOperation("covalentEAMService", //// (Operation) opIdx.get("monitorService")); //// monitorPerms.putOperation("covalentEAMApplication", //// (Operation) opIdx.get("monitorApplication")); //// perms.add(monitorPerms); // // Permission controlPerms = new Permission("control"); // controlPerms.putOperation("covalentEAMPlatform", // opIdx.get("controlPlatform")); // controlPerms.putOperation("covalentEAMServer", // opIdx.get("controlServer")); // controlPerms.putOperation("covalentEAMService", // opIdx.get("controlService")); // controlPerms.putOperation("covalentEAMApplication", // opIdx.get("controlApplication")); // perms.add(controlPerms); // return perms; } /** * Return a <code>List</code> of <code>Subject</code> objects from a list that do <strong>not</strong> appear in a * list of matches. * * @param all the list to operate on * @param matches the list to grep out */ public static List grepSubjects(List all, List matches) { if ((all == null) || (matches == null)) { return new ArrayList(0); } // build an index of role subjects HashMap index = new HashMap(); Iterator mi = matches.iterator(); while (mi.hasNext()) { Subject m = (Subject) mi.next(); index.put(m.getId(), m); } // find available subjects (those not in the index) ArrayList objects = new ArrayList(); Iterator ai = all.iterator(); while (ai.hasNext()) { Subject obj = (Subject) ai.next(); if (index.get(obj.getId()) == null) { objects.add(obj); } } return objects; } /** * Return a <code>List</code> of <code>ResourceTypeValue</code> objects from a given list that does not include the * root resource type. * * @param all the list to operate on * @param matches the list to grep out */ public static List filterTypes(List all) { if (all == null) { return new ArrayList(0); } ArrayList objects = new ArrayList(); Iterator ai = all.iterator(); // while (ai.hasNext()) { // ResourceType obj = (ResourceType) ai.next(); // // XXX: look for "system" flag // String name = obj.getName(); // if (! "covalentAuthzRootResourceType".equals(name)) { // objects.add(obj); // } // } return objects; } // A map of ServerType.name -> Boolean (true for auto-approved server types) private static Map serverTypeCache = new HashMap(); // private synchronized static void loadServerTypeCache(int sessionId, // AppdefBoss appdefBoss){ // if (serverTypeCache.size() > 0) return; // PageList types; // try { // types = appdefBoss.findAllServerTypes(sessionId, // PageControl.PAGE_ALL); // } catch (Exception e) { // throw new IllegalStateException("Error loading server types: " + e); // } // ServerTypeValue stValue; // String name; // for (int i=0; i<types.size(); i++) { // stValue = (ServerTypeValue) types.get(i); // name = stValue.getName(); // if (stValue.getVirtual()) { // serverTypeCache.put(name, Boolean.TRUE); // } else { // serverTypeCache.put(name, Boolean.FALSE); // } // } // } // // public static boolean isAutoApprovedServer(int sessionId, // AppdefBoss appdefBoss, // AiqServer aiServer) { // // Load the server type cache if it's not loaded already // synchronized(serverTypeCache) { // if (serverTypeCache.size() == 0) { // loadServerTypeCache(sessionId, appdefBoss); // } // } // Boolean isAutoApproved // = (Boolean) serverTypeCache.get(aiServer.getServerTypeName()); // if (isAutoApproved == null) { // // Should never happen // return false; // } // return isAutoApproved.booleanValue(); // } // // // RHQ // public static boolean isAutoApprovedServer(int sessionId, // AppdefBoss appdefBoss, // Resource server) { // // Load the server type cache if it's not loaded already // synchronized(serverTypeCache) { // if (serverTypeCache.isEmpty()) { // loadServerTypeCache(sessionId, appdefBoss); // } // } // Boolean isAutoApproved = (Boolean) serverTypeCache.get(server.getResourceType().getName()); // return isAutoApproved != null && isAutoApproved; // } // // public static void populateAgentConnections(int sessionId, // AppdefBoss appdefBoss, // HttpServletRequest request, // PlatformForm form, // String usedIpPort) // throws RemoteException, // SessionTimeoutException, // SessionNotFoundException { // // PageList agents = // appdefBoss.findAllAgents(sessionId, // PageControl.PAGE_ALL); // List uiAgents = new ArrayList(); // for (Iterator itr = agents.iterator();itr.hasNext();) { // AgentValue agent = (AgentValue)itr.next(); // uiAgents.add(new AgentBean(agent.getAddress(), // new Integer(agent.getPort()))); // // } // // form.setAgents(uiAgents); // request.setAttribute(Constants.AGENTS_COUNT, // new Integer(uiAgents.size())); // request.setAttribute("usedIpPort", usedIpPort); // } // // public static AgentValue getAgentConnection(int sessionId, // AppdefBoss appdefBoss, // HttpServletRequest request, // PlatformForm form) // throws RemoteException, // SessionTimeoutException, // SessionNotFoundException, // AgentNotFoundException { // // String agentIpPort = form.getAgentIpPort(); // // if (agentIpPort != null) { // StringTokenizer st = new StringTokenizer(agentIpPort, ":"); // String ip = null; // int port = -1; // while(st.hasMoreTokens()) { // ip = st.nextToken(); // port = Integer.parseInt(st.nextToken()); // } // // AgentValue agentValue = // appdefBoss.findAgentByIpAndPort(sessionId, ip, port); // // return agentValue; // } // else { // return null; // } // } // // public static void startAutoScan(ServletContext ctx, // int sessionId, // AppdefEntityID entityId) { // log.debug("startScan for platform=" + entityId); // // try { // AIBoss aiboss = ContextUtils.getAIBoss(ctx); // // aiboss.startScan(sessionId, entityId.getID(), // new ScanConfigurationCore(), // null, null, null); // } catch (Exception e) { // log.error("Error starting scan: " + e.getMessage(), e); // } // } }