P15GEN2\59518
2025-10-18 56638c01bb2cc61a92f5e03c9a1001be5b5d3699
foundation.biz/src/biz/clean/CleanEngine.java
@@ -1,29 +1,46 @@
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 {
      Rule oneRule = new Rule();
      oneRule.load(entity);
      if (ruleBucket == null) {
         ruleBucket = new Bucket<Rule>();
      }
      ruleBucket.loadOne(entity.getId(), oneRule);
      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 {
@@ -36,6 +53,22 @@
         }
      }
      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 {
@@ -71,6 +104,24 @@
      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;
   }
@@ -86,5 +137,4 @@
   public String getRemark() {
      return remark;
   }
}