P15GEN2\59518
2025-10-18 56638c01bb2cc61a92f5e03c9a1001be5b5d3699
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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;
    }
}