P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
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
package foundation.action;
 
import foundation.dao.OperatorCode;
import foundation.dao.bizlogic.IActionProvider;
import foundation.data.entity.Entity;
import foundation.json.IJSONWriter;
import foundation.server.ObjectCreator;
import foundation.util.Util;
 
public class ActionMeta {
 
    private String id;
    private String name;
    private String title;
    private String methodName;
    private String providerName;
    private double transactionScore;
    private Events fireEvents;
    private Class<ActionProvider> providerClass;
    private OperatorCode operatorCode;
    private String param;
    
    
    public ActionMeta() {
        
    }
        
    public void load(Entity entity) throws Exception {
        id = entity.getString("id");
        name = entity.getString("name");
        title = entity.getString("title");
        methodName = entity.getString("method_name");
        providerName = entity.getString("provider_name");
        transactionScore = entity.getDouble("score", 0);
        
        fireEvents = Events.getInstance(entity.getString("fire_event_code"));
         
        parseMethodName(methodName);                
        operatorCode = OperatorCode.parse(methodName); 
    }
    
    private void parseMethodName(String value) {
        if (Util.isEmpty(value)) {
            methodName = value;
        }
        
        methodName = methodName.trim().replace("(", "(").replace(")", ")");
        int pos = value.indexOf("(");
        
        if (pos <= 0) {
            methodName = value;
            return;
        }
        
        methodName = value.substring(0, pos);
        param = value.substring(pos + 1, value.length() - 1);
        param = param.trim();
    }
 
    public String getId() {
        return id;
    }
 
    public String getName() {
        return name;
    }
 
    public String getTitle() {
        return title;
    }
 
    public String getMethodName() {
        return methodName;
    }
 
    public String getProviderName() {
        return providerName;
    }
 
    public double getTransactionScore() {
        return transactionScore;
    }
 
    public IActionProvider createProvider() throws Exception {
        if (Util.isEmpty(providerName)) {
            return null;
        }
        
        IActionProvider provider = ObjectCreator.create(providerName);
        return provider;
    }
 
    public Class<ActionProvider> getProviderClass() {
        return providerClass;
    }
 
    public Events getFireEvents() {
        return fireEvents;
    }
 
    public String getParam() {
        return param;
    }
 
    public OperatorCode getOperatorCode() {
        return operatorCode;
    }
 
    @Override
    public String toString() {
        return providerName + "." + methodName;
    }
 
    public void writeJSONBody(IJSONWriter writer) {
        writer.write("id", id);
        writer.write("name", name);
        writer.write("title", title);
        writer.write("method_name", methodName);
        writer.write("provider_name", providerName);
        writer.write("transactionScore", transactionScore);
    }
 
}