可用於權限計算的幫助類

 import java.math.BigInteger;  
  
/** 
 * @author Administrator 
 * 權限計算幫助類 
 */  
public class RightsHelper {  
    /** 
     * 利用BigInteger對權限進行2的權的和計算 
     * @param rights int型權限編碼數組 
     * @return 2的權的和 
     */  
    public static BigInteger sumRights(int[] rights){  
        BigInteger num = new BigInteger("0");  
        for(int i=0; i<rights.length; i++){  
            num = num.setBit(rights[i]);  
        }  
        return num;  
    }  
    /** 
     * 利用BigInteger對權限進行2的權的和計算 
     * @param rights String型權限編碼數組 
     * @return 2的權的和 
     */  
    public static BigInteger sumRights(String[] rights){  
        BigInteger num = new BigInteger("0");  
        for(int i=0; i<rights.length; i++){  
            num = num.setBit(Integer.parseInt(rights[i]));  
        }  
        return num;  
    }  
      
    /** 
     * 測試是否具備指定編碼的權限 
     * @param sum 
     * @param targetRights 
     * @return 
     */  
    public static boolean testRights(BigInteger sum,int targetRights){  
        return sum.testBit(targetRights);  
    }  
      
    /** 
     * 測試是否具備指定編碼的權限 
     * @param sum 
     * @param targetRights 
     * @return 
     */  
    public static boolean testRights(String sum,int targetRights){  
        if(Tools.isEmpty(sum))  
            return false;  
        return testRights(new BigInteger(sum),targetRights);  
    }  
      
    /** 
     * 測試是否具備指定編碼的權限 
     * @param sum 
     * @param targetRights 
     * @return 
     */  
    public static boolean testRights(String sum,String targetRights){  
        if(Tools.isEmpty(sum))  
            return false;  
        return testRights(new BigInteger(sum),targetRights);  
    }  
      
    /** 
     * 測試是否具備指定編碼的權限 
     * @param sum 
     * @param targetRights 
     * @return 
     */  
    public static boolean testRights(BigInteger sum,String targetRights){  
        return testRights(sum,Integer.parseInt(targetRights));  
    }  
}
相關文章
相關標籤/搜索