⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 permissionmanager.java

📁 上网计费系统,适用网吧或者自己学习用用JAVA写成
💻 JAVA
字号:
package com.briup.util;

import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;

/**
 * 本类是实现权限控制的类
 * 
 * @author Administrator
 * 
 */
public class PermissionManager {
	private String SERVICES_INTERFACE = "com.briup.service.IService";

	private static PermissionManager pm = null;

	// 所有的控制方法,key:方法名,value:权限值
	private static final Map<String, Long> ALL_METHOD_PERMISSION = new Hashtable<String, Long>();

	// 所有的控制方法的中文名称,key:中文方法名,value:权限值
	private static final Map ALL_METHOD_PERMISSION_ZH = new TreeMap();

	private PermissionManager() {
		init();
	}

	/**
	 * 初始化
	 * 
	 */
	private void init() {
		try {
			Properties props = getProperties();
			String TSERVICES_INTERFACE = props
					.getProperty("SERVICES_INTERFACE");
			if (TSERVICES_INTERFACE != null && TSERVICES_INTERFACE.length() > 0) {
				SERVICES_INTERFACE = TSERVICES_INTERFACE;
			}
			Class c = Class.forName(SERVICES_INTERFACE);
			Method[] methods = c.getMethods();
			for (int i = 0; i < methods.length; i++) {
				String method_name = methods[i].getName();
				double tmp = Math.pow(2, i);
				Long permission = new Long((long) tmp);
				ALL_METHOD_PERMISSION.put(method_name, permission);

				String name_zh = props.getProperty(method_name);
				if (name_zh != null && name_zh.trim().length() > 0) {
					String temp_name_zh = new String(name_zh
							.getBytes("ISO-8859-1"), "UTF-8");
					ALL_METHOD_PERMISSION_ZH.put(permission, temp_name_zh);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 从woss.config文件中读取key,value封装成Properties返回
	 * 
	 * @return
	 */
	private Properties getProperties() {
		Properties props = new Properties();
		try {
			props.load(PermissionManager.class
					.getResourceAsStream("../woss.txt"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		return props;
	}

	/**
	 * 返回英文方法,权限表
	 * 
	 * @return
	 */
	public Map<String, Long> getALL_METHOD_PERMISSION() {
		return ALL_METHOD_PERMISSION;
	}

	/**
	 * 返回中文方法,权限表
	 * 
	 * @return
	 */
	public Map<String, Long> getALL_METHOD_PERMISSION_ZH() {
		return ALL_METHOD_PERMISSION_ZH;
	}

	/**
	 * 根据方法名得到相应的权限值
	 * 
	 * @param name
	 *            方法名
	 * 
	 * @return 权限
	 */
	public long getPermissionByMethodName(String methodName) {
		return ALL_METHOD_PERMISSION.get(methodName);
	}

	/**
	 * 得到最大权限
	 * 
	 * @return 返回最大权限
	 */
	public long getMaxPermissionValue() {
		long p = 0;
		Collection<Long> permissions = ALL_METHOD_PERMISSION.values();
		Iterator it = permissions.iterator();
		while (it.hasNext()) {
			p += (Long) it.next();
		}
		return p;
	}

	/**
	 * 验证权限
	 * 
	 * @param 用户拥有的权限值
	 * @param 用户要调用的方法
	 * @return 用户有权调用此方法返回true,否则返回false
	 */
	public boolean authoricate(Long rolePid, String method_name) {
		if (rolePid == 0)
			return false;
		long method_permission = getPermissionByMethodName(method_name);
		return ((method_permission & rolePid) == method_permission);
	}

	/**
	 * 得到本对象实例
	 * 
	 * @return
	 */
	public synchronized static PermissionManager getInstance() {
		if (pm == null) {
			pm = new PermissionManager();
		}
		return pm;
	}

	public static void main(String[] args) {
		PermissionManager pm = PermissionManager.getInstance();
		pm.authoricate(32L, "userRegistor");
		Map map = pm.getALL_METHOD_PERMISSION_ZH();
		Iterator iter = map.keySet().iterator();
		while (iter.hasNext()) {
			Long key = (Long) iter.next();
			String value = (String) map.get(key);
			System.out.println("key:" + key);
			System.out.println("value:" + value);
		}
		System.out.println("**********" + pm.getMaxPermissionValue());
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -