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 eqxRawDataList = new ArrayList(); @Override public String doAction(AbstractAF abstractAF, Object instance, ArrayList 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 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 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; } } }