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 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(); 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; } }