
cn.featherfly.common.policy.WhiteBlackListPolicy Maven / Gradle / Ivy
package cn.featherfly.common.policy;
import java.util.ArrayList;
import java.util.List;
/**
*
* 白黑名单上传策略,白名单优先级更高
*
* @param 需要判断的类型
* @author 钟冀
*/
public abstract class WhiteBlackListPolicy implements WhiteListPolicy, BlackListPolicy{
/**
*/
public WhiteBlackListPolicy() {
}
private List blackList = new ArrayList();
private List whiteList = new ArrayList();
/**
* {@inheritDoc}
*/
@Override
public void setBlackList(List policys) {
this.blackList = policys;
}
/**
* {@inheritDoc}
*/
@Override
public void setWhiteList(List policys) {
this.whiteList = policys;
}
/**
* 返回blackList
* @return blackList
*/
public List getBlackList() {
return blackList;
}
/**
* 返回whiteList
* @return whiteList
*/
public List getWhiteList() {
return whiteList;
}
/**
* {@inheritDoc}
*/
@Override
public boolean isAllow(T target) {
if (isInBlackList(target)) {
return false;
}
return isInWhiteList(target);
}
/**
*
* 判断传入目标是否一致
*
* @param target1 target1
* @param target2 target2
* @return 传入目标是否一致
*/
protected abstract boolean isEquals(T target1, T target2);
/**
*
* 判断传入目标是否在黑名单中
*
* @param target target
* @return 是否在黑名单
*/
protected boolean isInBlackList(T target) {
for (T t : blackList) {
if (isEquals(target, t)) {
return true;
}
}
return false;
}
/**
*
* 判断传入目标是否在白名单中
*
* @param target target
* @return 是否在白名单
*/
protected boolean isInWhiteList(T target) {
for (T t : whiteList) {
if (isEquals(target, t)) {
return true;
}
}
return false;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy