package foundation.clean;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.regex.Pattern;
|
|
import foundation.data.entity.Entity;
|
|
public class Rule {
|
private String id;
|
private String parentId;
|
private String expression;
|
private List<String> patternList;
|
private String resultValue;
|
private boolean trimSpace;
|
private boolean active;
|
private int indexNo;
|
private String remark;
|
|
public void load(Entity entity) throws Exception {
|
id = entity.getString("id");
|
parentId = entity.getString("parent_id");
|
resultValue = entity.getString("result_value");
|
trimSpace = entity.getBoolean("is_trim_space", true);
|
active = entity.getBoolean("is_active", true);
|
indexNo = entity.getInteger("index_no", 1);
|
remark = entity.getString("remark");
|
expression = entity.getString("expression");
|
if (trimSpace) {
|
expression = expression.replace(" ", "");
|
}
|
|
patternList = new ArrayList<String>();
|
getPatternList(expression);
|
}
|
|
private void getPatternList(String expression){
|
String splitPattern = "[,|;|,]";
|
expression = expression.replaceAll(splitPattern, ";");
|
|
String[] patterns = expression.split(";");
|
for (String pattern : patterns) {
|
patternList.add(pattern);
|
}
|
}
|
|
public String match(String value) throws Exception {
|
if (trimSpace) {
|
value = value.replace(" ", "");
|
}
|
|
// return result_value if match all pattern
|
for (String pattern: patternList) {
|
if (!Pattern.matches(pattern, value)) {
|
return null;
|
}
|
}
|
return resultValue;
|
}
|
}
|