package com.athena.asm.tool.notifier.selector;
import java.util.List;
import com.athena.asm.data.Post;
import com.athena.asm.tool.notifier.NonSupportedFieldException;
import com.athena.asm.tool.notifier.PostField;
import com.athena.asm.tool.notifier.markup.Markup;
/**
* 用于删选Post的原则
* @author aleck
*
*/
public abstract class Criteria {
/**
* 是否需要Post的内容来进行判断
* @return
*/
public abstract boolean requirePostContent();
/**
* 当前Post是否通过删选
* @param post
* @return
*/
public abstract boolean qualify(Post post);
/**
* 当前Criteria是否可以适用与某个field
* @param field
* @return
*/
public abstract boolean applicable(PostField field);
public abstract List<Markup> mark(Post post);
protected final PostField field;
public Criteria(PostField field) {
if (!applicable(field)) {
throw new NonSupportedFieldException(this.getClass(), field);
}
this.field = field;
}
}