AuthorityUtil 与 AuthorityUtilImpl

AuthorityUtil :

package net.oschina.blade.util;

/**
 * Authoirty util, it's to manage users' authority  or authority of the role of user, such as adding authority value,
 * 
 * reducing authority value. Read operation value is 8, add is 9, modify is 10, delete is 12 and all
 * 
 * is 15, in addition none is zero;
 * 
 * @author BLADE CHEUNG
 * @version 0.1
 *
 */
public interface AuthorityUtil {

	/**
	 * read authority value
	 */
	public static final int READ_AUTHORITY = 8;
	
	

	public static final int ADD = 1;
	/**
	 * Create authority value
	 */
	public static final int ADD_AUTHORITY = ADD + READ_AUTHORITY;

	public static final int MODIFY = 2;
	
	/**
	 * Modify authority value
	 */
	public static final int MODIFY_AUTHORITY = MODIFY + READ_AUTHORITY;
	
	
	public static final int DELETE = 4;
	/**
	 * Delete authority value
	 */
	public static final int DELETE_AUTHORITY = DELETE + READ_AUTHORITY;

	/**
	 * All authority value
	 */
	public static final int ALL_AUTHORITY = READ_AUTHORITY + ADD + MODIFY + DELETE;
	
	/**
	 * Check User or the role of user has read Authority
	 * @param authorityValue authority Value
	 */
	public boolean hasReadAuthority(int authorityValue);

	/**
	 * Check User or the role of user has add Authority
	 * @param authorityValue authority Value
	 */
	public boolean hasAddAuthority(int authorityValue);

	/**
	 * Check User or the role of user has delete Authority
	 * @param authorityValue authority Value
	 */
	public boolean hasDeleteAuthority(int authorityValue);

	/**
	 * Check User or the role of user has modify Authority
	 * @param authorityValue authority Value
	 */
	public boolean hasModifyAuthority(int authorityValue);
	
	/**
	 * Set user or the role of user has read authority, 
	 * <B>Readable</B> is other operations' prev condition. 
	 * e.g. some users need add operation authority 
	 * He or she must has read authority.
	 * @param authorityValue
	 * @return
	 */
	public int setReadable(int authorityValue);
	
	/**
	 * Set user or the role of user has add authority
	 * @param authorityValue
	 * @return
	 */
	public int setAddible(int authorityValue);
	
	/**
	 * Set user or the role of user has delete authority
	 * @param authorityValue
	 * @return
	 */
	public int setDeleteble(int authorityValue);
	
	/**
	 * Set user or the role of user has modify authority
	 * @param authorityValue
	 * @return
	 */
	public int setModifyable(int authorityValue);
	
	/**
	 * Set user or the role of user has all authority
	 * @return
	 */
	public int setAllAvaliable();
	
	/**
	 * Set user or the role of user has no authority
	 * @return
	 */
	public int setAllNotAvaliable();

}

 AuthorityUtilImpl:

package net.oschina.blade.util;

public class AuthorityUtilImpl implements AuthorityUtil{

	@Override
	public boolean hasReadAuthority(int authorityValue) {
		//8
		return authorityValue >= READ_AUTHORITY && authorityValue <= ALL_AUTHORITY ;
	}

	@Override
	public boolean hasAddAuthority(int authorityValue) {
		//1 + 8
		return authorityValue >= ADD_AUTHORITY && authorityValue <= ALL_AUTHORITY ;
	}

	@Override
	public boolean hasDeleteAuthority(int authorityValue) {
		//2 + 8
		return authorityValue >= DELETE_AUTHORITY && authorityValue <= ALL_AUTHORITY ;
	}

	@Override
	public boolean hasModifyAuthority(int authorityValue) {
		//4 + 8
		return authorityValue >= MODIFY_AUTHORITY && authorityValue <= ALL_AUTHORITY ;
	}


	@Override
	public int setReadable(int authorityValue) {
		if( hasReadAuthority(authorityValue) ){
			return  authorityValue;
		}
		return authorityValue + READ_AUTHORITY;
	}

	@Override
	public int setAddible(int authorityValue) {
		authorityValue = setReadable(authorityValue);
		if(hasAddAuthority(authorityValue)){
			return authorityValue;
		}
		return authorityValue + ADD;
	}

	@Override
	public int setDeleteble(int authorityValue) {
		authorityValue = setReadable(authorityValue);
		if(hasDeleteAuthority(authorityValue)){
			return authorityValue;
		}
		return authorityValue + DELETE;
	}

	@Override
	public int setModifyable(int authorityValue) {
		authorityValue = setReadable(authorityValue);
		if(hasModifyAuthority(authorityValue)){
			return authorityValue;
		}
		return authorityValue + MODIFY;
	}

	@Override
	public int setAllAvaliable() {
		return ALL_AUTHORITY;
	}
	
	@Override
	public int setAllNotAvaliable() {
		return 0;
	}
	
	
	public static void main(String[] args) {
		
		AuthorityUtilImpl au = new AuthorityUtilImpl();
		System.out.println(au.setDeleteble(3));
	}

}


你可能感兴趣的:(AuthorityUtil 与 AuthorityUtilImpl)