StateIdle.java
4.61 KB
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
package th.co.ais.ssbsrfc.state;
import java.util.ArrayList;
import java.util.List;
import th.co.ais.ssbsrfc.config.Constant;
import th.co.ais.ssbsrfc.config.StateConfig;
import th.co.ais.ssbsrfc.control.FlowManager;
import th.co.ais.ssbsrfc.control.SubStateManager;
import th.co.ais.ssbsrfc.instance.EC02Instance;
import th.co.ais.ssbsrfc.instance.ManageTime;
import th.co.ais.ssbsrfc.utils.Global;
import th.co.ais.ssbsrfc.utils.Log;
import ec02.af.abstracts.AbstractAF;
import ec02.af.data.EquinoxRawData;
import ec02.af.interfaces.IAFState;
import ec02.utils.AppLog;
public class StateIdle implements IAFState {
private String eqxState = null;
private ArrayList<EquinoxRawData> eqxRawDataList = new ArrayList<EquinoxRawData>();
@Override
public String doAction(AbstractAF abstractAF, Object instance, ArrayList<EquinoxRawData> eqxRawDataList) {
AppLog.d("[### StateIdle ###]");
EC02Instance ec02Instance = (EC02Instance) instance;
Global.getConfigEC02(abstractAF, ec02Instance);
// MultiFlow new
if (StateConfig.isMultiFlow) {
// E01 Recieve
if (abstractAF.getUtils().getGlobalData().isRecieve()) {
EquinoxRawData eqxRaw = new EquinoxRawData();
eqxRaw.setInvoke(abstractAF.getUtils().getGlobalData().getTransactionId());
eqxRaw.setType(Constant.RESPONSE.toLowerCase());
eqxRaw.setRawEventType(StateConfig.Incoming_Unknown);
this.subStateManager(abstractAF, ec02Instance, eqxRaw);
Log.detailLog(ec02Instance, abstractAF, StateConfig.STATE_IDLE, this.eqxState, eqxRawDataList, this.eqxRawDataList);
Log.summaryLog(ec02Instance, abstractAF);
}
// rowdatalist
if (eqxRawDataList != null) {
FlowManager flowManager = new FlowManager(abstractAF, ec02Instance);
for(EquinoxRawData equinoxRawData : eqxRawDataList) {
// manage flow start
flowManager.start(equinoxRawData);
this.subStateManager(abstractAF, ec02Instance, equinoxRawData);
flowManager.end(StateConfig.STATE_IDLE, this.eqxState, eqxRawDataList, this.eqxRawDataList);
}
}
ec02Instance.setEqxRawDataList(this.eqxRawDataList);
} else {
for(EquinoxRawData equinoxRawData : eqxRawDataList) {
ec02Instance.getAFInstance().setInitialInvoke(equinoxRawData.getInvoke());
String eventType = equinoxRawData.getRawEventType();
String ssName = StateConfig.getSubStateFromEventType(eventType);
SubStateManager subStateManager = new SubStateManager(ssName);
List<EquinoxRawData> eqxList = subStateManager.doActionSubState(abstractAF, ec02Instance, equinoxRawData);
String currentState = ec02Instance.getAFInstance().getCurrentState();
for(EquinoxRawData eqx : eqxList) {
String type = eqx.getType();
String invoke = eqx.getInvoke();
if (type.equals("request") && (invoke.length() > 0 || invoke != null)) {
ec02Instance.getAFInstance().putDicInvoke(invoke, Global.getInvokeForManageFlow(ec02Instance));
}
this.eqxRawDataList.add(eqx);
}
if (currentState.equals("END") || currentState.equals("")) {
this.eqxState = StateConfig.STATE_IDLE;
} else {
this.eqxState = StateConfig.STATE_ACTIVE;
}
}
int count = ec02Instance.getAFInstance().getListTimeout().size();
if (count > 0 && ec02Instance.getTimeout() == null) {
ManageTime mt = new ManageTime(ec02Instance);
mt.setListTimeout(ec02Instance.getAFInstance().getListTimeout());
String timeout = mt.getCalTime();
ec02Instance.setTimeout(timeout);
}
Log.detailLog(ec02Instance, abstractAF, StateConfig.STATE_IDLE, this.eqxState, eqxRawDataList, this.eqxRawDataList);
Log.summaryLog(ec02Instance, abstractAF);
ec02Instance.setEqxRawDataList(this.eqxRawDataList);
}
AppLog.d("[### END StateIdle ###]");
return this.eqxState;
}
public void subStateManager(AbstractAF abstractAF,EC02Instance ec02Instance, EquinoxRawData equinoxRawData)
{
String eventType = equinoxRawData.getRawEventType();
String ssName = StateConfig.getSubStateFromEventType(eventType);
SubStateManager subStateManager = new SubStateManager(ssName);
List<EquinoxRawData> eqxList = subStateManager.doActionSubState(abstractAF, ec02Instance, equinoxRawData);
for(EquinoxRawData eqx : eqxList) {
String type = eqx.getType();
String invoke = eqx.getInvoke();
if (type.equals("request") && (invoke.length() > 0 || invoke != null)) {
ec02Instance.getAFInstance().putDicInvoke(invoke, Global.getInvokeForManageFlow(ec02Instance));
}
this.eqxRawDataList.add(eqx);
}
// END
String currentState = ec02Instance.getAFInstance().getCurrentState();
if (currentState.equals("END")) {
this.eqxState = StateConfig.STATE_IDLE;
} else {
this.eqxState = StateConfig.STATE_ACTIVE;
}
}
}