/* * Copyright 2005-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.openuap.cms.user.security.manager; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.openuap.cms.user.model.PermissionObjectType; import org.openuap.cms.user.security.manager.support.DefaultResourcePermissionControlPanel; import org.openuap.cms.user.security.resource.PluginPermissionDataLoader; import org.openuap.cms.user.security.resource.PluginPermissionDataLoader.PermissionData; import org.openuap.runtime.plugin.WebApplicationPlugin; /** * <p> * 插件权限控制面板抽象类. * </p> * * <p> * $Id: AbstractPluginPermissionControlPanel.java 3939 2010-10-27 08:41:36Z orangeforjava $ * </p> * * @author Joseph * @version 1.0 */ public abstract class AbstractPluginPermissionControlPanel implements PluginPermissionControlPanel { public List<ResourcePermissionControlPanel> getResourcePermissionControlPanels() { // 装载权限类型 if (getPluginHome() != null) { String securityDirectory = getPluginHome() + "/resource/security"; File securityDir = new File(securityDirectory); if (securityDir.exists() && securityDir.isDirectory()) { File permissionFiles[] = securityDir .listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return true; } }); if (permissionFiles != null) { List<ResourcePermissionControlPanel> rpcps = new ArrayList<ResourcePermissionControlPanel>(); for (int i = 0; i < permissionFiles.length; i++) { try { // System.out.println("permissionFiles["+i+"]="+permissionFiles[i].getCanonicalPath()); PluginPermissionDataLoader.PermissionTypeData ptd = PluginPermissionDataLoader .loadType(permissionFiles[i] .getCanonicalPath()); Iterator ptIt = ptd.values().iterator(); while (ptIt.hasNext()) { PermissionObjectType pot = (PermissionObjectType) ptIt .next(); PermissionResourceType prt = new PermissionResourceType(); String key = pot.getObjectType(); prt.setKey(key); prt.setName(pot.getName()); prt.setTitle(pot.getTitle()); prt.setType(new Long(pot.getType()).toString()); // WebApplicationPlugin plugin = getPlugin(); if (plugin != null) { Object obj = plugin.lookup(key + ".reflection"); if (obj != null && obj instanceof IResourceReflection) { IResourceReflection resReflection = (IResourceReflection) obj; prt .setResourceReflection(resReflection); } } PluginPermissionDataLoader.PermissionData pd = (PermissionData) ptd .getPermissionDataMap().get(key); List<PermissionResourceItem> prItems = new ArrayList<PermissionResourceItem>(); Iterator mykeyIt = pd.keySet().iterator(); while (mykeyIt.hasNext()) { // the permission value Long pkey = (Long) mykeyIt.next(); // the permission title Object value = pd.get(pkey); PermissionResourceItem prItem = new PermissionResourceItem(); prItem.setKey(pkey.toString()); prItem.setTitle(value.toString()); prItems.add(prItem); } DefaultResourcePermissionControlPanel rpcp = new DefaultResourcePermissionControlPanel(); rpcp.setPermissionResourceType(prt); rpcp.setPermissionResourceItems(prItems); // rpcps.add(rpcp); } } catch (IOException e) { e.printStackTrace(); } // } return rpcps; } } } return null; } protected abstract String getPluginHome(); protected abstract WebApplicationPlugin getPlugin(); }