AFMain.java
4.15 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
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
141
142
package af.control;
import java.util.ArrayList;
import com.google.gson.Gson;
import af.instatnce.AFInstance;
import af.instatnce.EC02Instance;
import af.interfaces.AFEvent;
import af.utils.Zip;
import ec02.af.abstracts.AbstractAF;
import ec02.af.data.ECDialogue;
import ec02.af.data.EquinoxProperties;
import ec02.af.data.EquinoxRawData;
import ec02.af.exception.ActionProcessException;
import ec02.af.exception.ComposeInstanceException;
import ec02.af.exception.ConstructRawDataException;
import ec02.af.exception.ExtractInstanceException;
import ec02.af.exception.ExtractRawDataException;
import ec02.interfaces.IEC02;
import ec02.utils.AppLog;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
public class AFMain extends AbstractAF implements IEC02{
@Override
public ECDialogue actionProcess(EquinoxProperties eqxProp, ArrayList<EquinoxRawData> eqxRawDataList, Object instance)
throws ActionProcessException {
AppLog.i("[CURRENT STATE] : " + eqxProp.getState());
AppLog.i("[CURRENT STATE] : " + eqxProp.getDiag());
EC02Instance ec02Ins = (EC02Instance) instance;
ec02Ins.setEquinoxProperties(eqxProp);
ec02Ins.setAbstractAF((AbstractAF) this);
StateManager sm = new StateManager(eqxProp.getState());
String eqxState = sm.doAction((AbstractAF) this, ec02Ins, eqxRawDataList);
EquinoxProperties newEqxProp = new EquinoxProperties();
newEqxProp.setState(eqxState);
AppLog.i("[NEXT STATE] : " + eqxState);
newEqxProp.setTimeout(ec02Ins.getTimeout());
AppLog.i("[TIMEOUT] : " + ec02Ins.getTimeout());
ECDialogue ecDialogue = new ECDialogue(newEqxProp, ec02Ins);
return ecDialogue;
}
@Override
public boolean verifyAFConfiguration(String arg0) {
return true;
}
@Override
public String composeInstance(Object instance) throws ComposeInstanceException {
EC02Instance ec02Instance = (EC02Instance) instance;
AFInstance afInstance = ec02Instance.getAFInstance();
String encodeString = "";
try {
encodeString = encodeInstance(afInstance);
}
catch (Exception e) {
e.printStackTrace();
}
return encodeString;
}
@Override
public ArrayList<EquinoxRawData> constructRawData(Object instance)
throws ConstructRawDataException {
EC02Instance ins = (EC02Instance) instance;
return ins.getEqxRawDataList();
}
@Override
public Object extractInstance(String instance) throws ExtractInstanceException {
EC02Instance ec02Instance = new EC02Instance();
AFInstance afInstance = null;
if ((instance == null) || instance.isEmpty()) {
afInstance = new AFInstance();
}
else {
try {
afInstance = decodeInstance(instance);
}
catch (Exception e) {
e.printStackTrace();
}
}
ec02Instance.setAFInstance(afInstance);
return (Object) ec02Instance;
}
@Override
public void extractRawData(Object instanceData, ArrayList<EquinoxRawData> rawDatas)
throws ExtractRawDataException {
for (EquinoxRawData r : rawDatas) {
String type = r.getRawDataAttribute("type");
String ctype = r.getRawDataAttribute("ctype");
if(r.getRawEventType().equals(AFEvent.Unknown)){
if(ctype.equals("text/plain") && type.equals("request")) {
r.setRawMessage(r.getRawDataAttribute("val").trim());
r.setRawEventType(AFEvent.Incoming_HTTP_Request);
}
else if(ctype.equals("text/xml") && type.equals("response")) {
r.setRawEventType(AFEvent.Incoming_A_Response);
}
}
AppLog.i("[EVENT TYPE] : " + r.getRawEventType());
}
}
private String encodeInstance(AFInstance instance) {
String encodeString = "";
try {
Gson gson = new Gson();
String str = gson.toJson(instance);
byte[] bytes = str.getBytes();
byte[] zipBytes = Zip.compressBytes(bytes);
encodeString = Base64.encode(zipBytes);
}
catch (Exception e) {
AppLog.e("Encode fail!! " + e);
}
return encodeString;
}
private AFInstance decodeInstance(String instance) {
AFInstance afInstance = null;
try {
byte[] simpleString = Base64.decode(instance);
byte[] unZipString = Zip.extractBytes(simpleString);
Gson gson = new Gson();
afInstance = gson.fromJson(new String(unZipString), AFInstance.class);
} catch (Exception e) {
AppLog.e("Decode fail!! " + e);
}
return afInstance;
}
}