package biz.clean;
|
|
import java.util.Date;
|
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.entity.Filter;
|
import foundation.data.object.DataObject;
|
import foundation.json.JSONReader;
|
import foundation.preload.Bucket;
|
|
public class CleanEngine {
|
private String id;
|
private String field;
|
private String name;
|
private Bucket<Rule> ruleBucket;
|
private String remark;
|
private Date lastUpdateTime;
|
|
public void load(Entity entity) throws Exception {
|
id = entity.getString("id");
|
field = entity.getString("field_name");
|
name = entity.getString("name");
|
remark = entity.getString("remark");
|
|
lastUpdateTime = new Date();
|
}
|
|
public void loadOneRule(Entity entity) throws Exception {
|
if (ruleBucket == null) {
|
ruleBucket = new Bucket<Rule>();
|
}
|
|
String ruleId = entity.getId();
|
boolean active = entity.getBoolean("is_active", true);
|
if (!active) {
|
ruleBucket.remove(ruleId);
|
return ;
|
}
|
|
Rule oneRule = new Rule();
|
oneRule.load(entity);
|
ruleBucket.loadOne(ruleId, oneRule);
|
}
|
|
public String modify(String value) throws Exception {
|
for(Rule rule: ruleBucket) {
|
String result = rule.match(value);
|
|
if (result != null) {
|
// return result value if match anyone rule
|
return result;
|
}
|
}
|
return null;
|
}
|
|
public void checkUpdate() throws Exception {
|
DataObject dataObject = DataObject.getInstance("sys_clean_detail");
|
Filter filter = new Filter("last_update_time", ">=" , lastUpdateTime);
|
EntitySet detailSet = dataObject.getTableEntitySet(filter);
|
|
for (Entity detail : detailSet) {
|
String parentId = detail.getParentId();
|
|
if (id.equalsIgnoreCase(parentId)) {
|
loadOneRule(detail);
|
}
|
}
|
|
lastUpdateTime = new Date();
|
}
|
|
public JSONReader modify(JSONReader data, String field) throws Exception {
|
JSONReader json = data;
|
String value = json.getString(field);
|
for(Rule rule: ruleBucket) {
|
String result = rule.match(value);
|
|
if (result != null) {
|
// return json value if match anyone rule
|
json.put(field, result);
|
return json;
|
}
|
}
|
return null;
|
}
|
|
public Entity modify(Entity entity, String field) throws Exception {
|
Entity data = entity;
|
|
String value = data.getString(field);
|
|
for (Rule rule: ruleBucket) {
|
String result = rule.match(value);
|
|
if (result != null) {
|
// return entity value if match anyone rule
|
data.set(field, result);
|
return data;
|
}
|
}
|
|
return null;
|
}
|
|
public Entity modify(Entity entity) throws Exception {
|
Entity data = entity;
|
|
String value = data.getString(field);
|
|
for (Rule rule: ruleBucket) {
|
String result = rule.match(value);
|
|
if (result != null) {
|
// return entity value if match anyone rule
|
data.set(field, result);
|
return data;
|
}
|
}
|
|
return null;
|
}
|
|
public String getId() {
|
return id;
|
}
|
|
public String getName() {
|
return name;
|
}
|
|
public Bucket<Rule> getRuleBucket() {
|
return ruleBucket;
|
}
|
|
public String getRemark() {
|
return remark;
|
}
|
}
|