EqxStringUtils.java 4.81 KB
package th.co.ais.ssbsrfc.utils;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringEscapeUtils;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

import th.co.ais.ssbsrfc.instance.EC02Instance;
import ec02.af.data.EquinoxRawData;
import ec02.utils.AppLog;

public class EqxStringUtils {
	
	public static Map <String, String>  convertXMLtoHttpData(String rcvXMLData) throws Exception{
		Map <String, String> rtnMapHttpData = new HashMap<String, String>(); 
		
		if(rcvXMLData != null) {
			Serializer serializer = new Persister();
			rcvXMLData = "<HttpData>" + rcvXMLData + "</HttpData>";
			HttpData  httpData =  serializer.read(HttpData.class, rcvXMLData);
			if(httpData != null ) {
				if(httpData.getErdData() != null 
						&& httpData.getErdData().getValue() != null) {
					rtnMapHttpData.put("erddata_value", httpData.getErdData().getValue());
				} else {
					rtnMapHttpData.put("erddata_value", rcvXMLData);
				}
				
				ERDHeader eRDHeader = httpData.getErdHeader();
				if(eRDHeader != null) {
					List<Header>  lsHeader = eRDHeader.getHeader();
					
					if(lsHeader != null) {
						for(int  i = 0; i < lsHeader.size(); i++) {
							Header header = lsHeader.get(i);
							
							if(header.getName() != null) {
								rtnMapHttpData.put(header.getName(), header.getValue());
							}
						}
					}
				}
			}
		}
		return rtnMapHttpData;
	}
	
	public static String getMessage(EquinoxRawData equinoxRawData) {
		String value = EqxStringUtils.getMessage(equinoxRawData, null);
		return value;
	}
	
	public static String getMessage(EquinoxRawData equinoxRawData, EC02Instance ec02Instance) {
		String value = EqxStringUtils.getMessage(equinoxRawData, ec02Instance, false);
		return value;
	}
	
	public static String getMessage(EquinoxRawData equinoxRawData, EC02Instance ec02Instance, boolean isLog) {
		String value = "";
		try {
			String ctype = equinoxRawData.getRawDataAttribute("ctype");
			String val = equinoxRawData.getRawDataAttribute("val");
			String message = equinoxRawData.getRawDataMessage();
			if (ctype.equals("Specialized-Resource")) {
				value = message;
				if (isLog) {
					AppLog.d("[GETMESSAGE(MESSAGE)]: " + value);
				}
			} else if (ctype.equals("text/xml")) {
				if ((message == null || message.equals("")) && (val != null && !val.equals(""))) {
					value = val;
					if (isLog) {
						AppLog.d("[GETMESSAGE(VAL)]: " + value);
					}
				} else if (message != null && !message.equals("")) {
					value = EqxStringUtils.getERDData(message, ec02Instance);
					if (isLog) {
						AppLog.d("[GETMESSAGE(MESSAGE)]: " + value);
					}
				}
			} else if (ctype.equals("filefeed")) {
				value = message;
			} else if (ctype.equals("unknown")) {
				value = message;
			} else {
				if ((val == null || val.equals("")) && (message != null && !message.equals(""))) {
					value = EqxStringUtils.getERDData(message, ec02Instance);
					if (isLog) {
						AppLog.d("[GETMESSAGE(MESSAGE)]: " + value);
					}
				} else {
					value = val;
					if (isLog) {
						AppLog.d("[GETMESSAGE(VAL)]: " + value);
					}
				}
			}
		} catch (Exception e) {
			AppLog.e("[ EXCEPTION GETMESSAGES ] : " + e);
		}
		return value;
	}
	
	public static String getERDData(String message, EC02Instance ec02Instance) {
		String value = "";
		try {
			Map<String, String> mapHttpData = EqxStringUtils.convertXMLtoHttpData(message);
			value = mapHttpData.get("erddata_value");
			if (ec02Instance != null) {
				ec02Instance.getAFInstance().setMapHttpData(mapHttpData);
			}
		} catch (Exception e) {
//			AppLog.e("[ Exception convertXMLtoHttpData ] : " + e.getMessage());
//			AppLog.d("## convertXMLtoHttpData: NOTMATH");
			value = message;
		}
		return value;
	}
	
	public static String builMessageERDHeader(EC02Instance ec02Instance, String value) {
		String buil = "\n\t\t<ERDHeader>\n";
		Map<String, String> map = ec02Instance.getAFInstance().getMapHttpData();
		if (map != null) {
			for (Map.Entry<String, String> entry : map.entrySet())
			{
				String name = entry.getKey();
				String data = entry.getValue();
				if (!name.equals("Content-Type") && !name.equals("erddata_value")  && !name.equals("Content-Length")) {
					buil += "\t\t\t<Header name=\"" + name + "\" value=\"" + data + "\" />\n";
				}
			}
		}
//		buil += "<Header name=\"Content-Type\" value=\"application/json\" />\n";
		buil += "\t\t</ERDHeader>\n";
		buil += "\t\t<ERDData value=\"" + EqxStringUtils.escapePostdata(value) + "\" />";
		return buil;
	}
	
	public static String escapePostdata(String rcvData) {
		if(rcvData != null ) {
			return StringEscapeUtils.escapeXml(rcvData);
		} else {
			return null;
		}
	}
	
	public static String unescapePostdata(String rcvData) {
		if(rcvData != null ) {
			//return rcvData;
			return StringEscapeUtils.unescapeXml(rcvData);
			
		} else {
			return null;
		}
	}
}