package th.co.ais.ssbsrfc.utils; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.UUID; import org.json.JSONException; import org.json.JSONObject; import org.json.XML; import th.co.ais.ssbsrfc.config.Constant; import th.co.ais.ssbsrfc.config.StateConfig; import th.co.ais.ssbsrfc.instance.AFInstance; import th.co.ais.ssbsrfc.instance.EC02Instance; import th.co.ais.ssbsrfc.instance.FMInstance; import th.co.ais.ssbsrfc.message.EC02Builder; import ais.mmt.sand.comlog.bean.DataBean; import ais.mmt.sand.comlog.bean.DataBean.TYPE; import com.google.gson.Gson; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import ec02.af.abstracts.AbstractAF; import ec02.utils.AppLog; public class Global { private static AbstractAF abstractAF = null; private static EC02Builder ec02Builder = null; private static boolean isOpenRawData = true; private static String outputTimeStamp = null; public static String inputTimeStamp = null; public static String detailNameLog = null; public static String summaryNameLog = null; public static boolean isUDR = false; public static boolean isDetail = true; public static boolean isDetailRawData = true; public static boolean isDetailData = true; public static boolean isDetailStat = true; public static boolean isDetailScenario = true; public static boolean isDetailCurrentState = true; public static boolean isDetailNextState = true; public static boolean isSummary = false; public static boolean isStat = true; public static boolean isErrorLog = false; public static int detailLog = 0; public static String tmpDialogueId = null; public static int minDialogueId = 0; public static int maxDialogueId = 99; public static int flow = 0; public static HashMap mapNode = new HashMap(); public static HashMap mapFlow = new HashMap(); public static boolean isDebugModeForQA = false; public static boolean isWriteSummary = false; public static boolean isOutputTimeStamp = true; public static boolean isRejectByApplication = false; public static long currentInputDateTime; public static boolean isOpenRawData() { return isOpenRawData; } public static void getConfigEC02(AbstractAF abstractAF, EC02Instance ec02Instance) { Global.setNode(); Global.setFlow(); Global.flow = ec02Instance.getAFInstance().getFlow(); Global.abstractAF = abstractAF; } public static String getNodeFromEventType(String eventType) { String node = mapNode.get(eventType); // AppLog.d("## node:" + node + ":eventtype:" + eventType); return node; } public static void setNode() { mapNode.put(StateConfig.Incoming_A_Request, Constant.nodeE01); } public static String getFlowName(int flow) { String flowName = mapFlow.get(flow); if(flowName == null) { flowName = mapFlow.get(Constant.FLOW_Unexpected_Event_Handling); } return flowName; } public static void setFlow() { //flow #1 mapFlow.put(Constant.FLOW_TEST_A, "TEST A"); } public static void setOpenRawData(boolean isOpenRawData) { Global.isOpenRawData = isOpenRawData; } public static void checkActiveLog(EC02Instance ec02Instance, String value) { String[] tempLog =null; tempLog = value.split("\\|"); //"DETAIL|STAT|UDR" for (int i = 0; i < tempLog.length; i++) { if (tempLog[i].equalsIgnoreCase("DETAIL")) { isDetail = true; } else if (tempLog[i].equalsIgnoreCase("STAT")) { isStat = true; } else if (tempLog[i].equalsIgnoreCase("UDR")) { isUDR = true; } else if (tempLog[i].equalsIgnoreCase("SUMMARY")) { isSummary = true; } else if (tempLog[i].equalsIgnoreCase("ERROR")) { isErrorLog = true; } } } public static FMInstance getInvokeForManageFlow(EC02Instance ec02Instance) { int flow = ec02Instance.getAFInstance().getFlow(); String date = ec02Instance.getAFInstance().getStartFlowTimeStamp(); return new FMInstance(flow, date); } public static void setRejectByApplication(boolean isRejectByApplication) { Global.isRejectByApplication = isRejectByApplication; // write summary if (isRejectByApplication) { Global.isWriteSummary = isRejectByApplication; } } public static String getDetailLogRawData(String rawData) { if (rawData != null) { // rawData = StringEscapeUtils.escapeHtml(rawData); // rawData = StringEscapeUtils.unescapeJava(rawData); } return rawData; } public static void setDetailLog(String value) { if (value.equals("0")) { Global.detailLog = Constant.DETAILLOG.CLOSE.get(); } else if (value.equals("1")) { Global.detailLog = Constant.DETAILLOG.OPENERROR.get(); } else if (value.equals("2")) { Global.detailLog = Constant.DETAILLOG.OPEN.get(); } } public static String unescapePrintString(String value) { return value; } public static String getUnique() { return UUID.randomUUID().toString().replace("-", ""); } public static DataBean.TYPE getDetailLogType(String strType) { TYPE retType = null; if(strType.toLowerCase().equals("request")) { retType = TYPE.REQ; } else { retType = TYPE.RES; } return retType; } public static String encodeInstance(AFInstance instance) { String encodeString = ""; try { // check remove Timeout int cout = instance.getListTimeout().size(); if (cout == 0) { instance.setListTimeout(null); } 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; } public static 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; } public static String getOutputTimeStamp() { return outputTimeStamp; } public static void setOutputTimeStamp(String outputTimeStamp) { Global.outputTimeStamp = outputTimeStamp; } public static String getEC02WarmConfig(String key) { String value = null; try { value = Global.abstractAF.getUtils().getHmWarmConfig().get(key).get(0).trim(); AppLog.d("## GETCONFIG EC02 READDING(" + key + ") VALUE:" + value); } catch (Exception e) { AppLog.e("## CHECKCONFIG EC02 EXCEPTION(" + key + ") READ ERROR"); } return value; } public static EC02Builder getEc02Builder() { return ec02Builder; } public static void setEc02Builder(EC02Builder ec02Builder) { Global.ec02Builder = ec02Builder; } public static String replaceSoapToXml(String value) { try { JSONObject json = new JSONObject(value); value = XML.toString(json); AppLog.d("## CONVERT MESSAGE JSON TO XML :" + value); } catch (JSONException e) { } return value.replaceAll("(?s)<(\\w+):Envelope[^<>]*>.*?<\\1:Body>\\s*(.*?)\\s*\\s*", "$2").replaceAll(" xmlns(:\\w+)?=\"(.*)\"", "").replaceAll("\\<\\?xml(.+?)\\?\\>", ""); } // LOG ETC public static long convertTocurrentTimeMillis(String strDate) { DateFormat formatter = new SimpleDateFormat("yyyyMMdd HH:mm:ss.S"); long value = 0; try { Date date = formatter.parse(strDate); Calendar cal = Calendar.getInstance(); cal.setTime(date); value = cal.getTimeInMillis(); } catch (ParseException e) { e.printStackTrace(); } return value; } public static String getTimeStampLog (long currentDateTime) { Date date = new Date(currentDateTime); SimpleDateFormat ft = new SimpleDateFormat ("yyyyMMdd HH:mm:ss.S"); // display time and date using toString() String timestamp = ft.format(date); return timestamp; } public static long diffTimeStampLog(String first, String last) throws ParseException { DateFormat formatter = new SimpleDateFormat("yyyyMMdd HH:mm:ss.S"); Date dateFist = formatter.parse(first); Date dateLast = formatter.parse(last); Calendar strF_Cal = Calendar.getInstance(); Calendar strL_Cal = Calendar.getInstance(); strF_Cal.setTime(dateFist); strL_Cal.setTime(dateLast); long lastLong = strL_Cal.getTimeInMillis(); long firstLong = strF_Cal.getTimeInMillis(); long diff = lastLong - firstLong; return diff; } public static String datePartnerTimestamp(String value) { String partner = ""; try { DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); DateFormat newFttr = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.S"); Date date = formatter.parse(value); partner = newFttr.format(date); } catch (ParseException e) { } return partner; } public static String getXmlTemplateKey(String keyType, String id) { return keyType + "[id='"+id+"']"; } }