透过XML入库操作 EsbmMessageProcessor 02
通过XML入库操作 EsbmMessageProcessor 02
public static Map<String, String> getValuefromXpath(Document doc)
{
logger.debug("Start get value from esbmessage through Xpath");
String interfaceName = null;
String log_sn = null;
Node node = doc.selectSingleNode(SERVICE_NAME_XPATH);
if (node != null)
{
interfaceName = node.getText();
}
node = doc.selectSingleNode(LOG_SN_XPATH);
if (node != null)
{
log_sn = node.getText();
}
if (logger.isDebugEnabled())
{
logger.debug("The interface name:" + interfaceName);
logger.debug("The lon_sn name:" + log_sn);
}
// 如果接口名或log_sn为空那么要处理结束
if ((interfaceName == null) || ("".equals(interfaceName))
|| (log_sn == null) || ("".equals(log_sn)))
{
logger.error("please check the message the interfaceName or log_sn can not be bull."
+ doc.asXML());
return null;
}
interfaceName += log_sn;
// 正常的内容
Map<Object, Object> interfaceMap = DataCache
.getinterfaceMap(interfaceName);
// 命名空间内容
Map<Object, Object> namespaceMap = DataCache
.getinterfaceMap(interfaceName + "namesapce");
// 加密内容
Map<Object, Object> encryptMap = DataCache
.getinterfaceMap(interfaceName + "encrypt");
Map<Object, Object> prefixMap = DataCache.getinterfaceMap(interfaceName
+ "prefix");
// 如果配置文件为空,该处理结束
if ((null == interfaceName) || interfaceMap.isEmpty())
{
logger.error("Please check the interface name can map to properties file, inteface Name:"
+ interfaceName + "," + doc.toString());
return null;
}
// 将接口配置文件内容打印出来
if (logger.isDebugEnabled())
{
Iterator<Map.Entry<Object, Object>> iterator = interfaceMap
.entrySet().iterator();
Map.Entry<Object, Object> entry = null;
while (iterator.hasNext())
{
entry = iterator.next();
logger.debug("Message node mapping to the Database field key is:"
+ entry.getKey() + " and Xpath :" + entry.getValue());
}
}
// 原始数据加密,有加密的字段,还必顺有加密的算法
if (encryptMap != null && encryptMap.size() > 0
&& !Tools.getENCRYPT_ALGO().isEmpty())
{
encryptDoc(doc, namespaceMap, encryptMap);
}
// 获取接口配置文件中的key值
Map<String, String> propertiesValue = getMatchValue(doc, interfaceMap,
namespaceMap);
addPrefix(propertiesValue, prefixMap);
// duration 是rsp_timestamp-req_timestamp秒差
// 直接在代码实现存入propertiesValue变量中,直接在代码存入不在properties文件中配置
String req_timestamp = propertiesValue.get("req_timestamp");
String rsp_timestamp = propertiesValue.get("rsp_timestamp");
public static Map<String, String> getValuefromXpath(Document doc)
{
logger.debug("Start get value from esbmessage through Xpath");
String interfaceName = null;
String log_sn = null;
Node node = doc.selectSingleNode(SERVICE_NAME_XPATH);
if (node != null)
{
interfaceName = node.getText();
}
node = doc.selectSingleNode(LOG_SN_XPATH);
if (node != null)
{
log_sn = node.getText();
}
if (logger.isDebugEnabled())
{
logger.debug("The interface name:" + interfaceName);
logger.debug("The lon_sn name:" + log_sn);
}
// 如果接口名或log_sn为空那么要处理结束
if ((interfaceName == null) || ("".equals(interfaceName))
|| (log_sn == null) || ("".equals(log_sn)))
{
logger.error("please check the message the interfaceName or log_sn can not be bull."
+ doc.asXML());
return null;
}
interfaceName += log_sn;
// 正常的内容
Map<Object, Object> interfaceMap = DataCache
.getinterfaceMap(interfaceName);
// 命名空间内容
Map<Object, Object> namespaceMap = DataCache
.getinterfaceMap(interfaceName + "namesapce");
// 加密内容
Map<Object, Object> encryptMap = DataCache
.getinterfaceMap(interfaceName + "encrypt");
Map<Object, Object> prefixMap = DataCache.getinterfaceMap(interfaceName
+ "prefix");
// 如果配置文件为空,该处理结束
if ((null == interfaceName) || interfaceMap.isEmpty())
{
logger.error("Please check the interface name can map to properties file, inteface Name:"
+ interfaceName + "," + doc.toString());
return null;
}
// 将接口配置文件内容打印出来
if (logger.isDebugEnabled())
{
Iterator<Map.Entry<Object, Object>> iterator = interfaceMap
.entrySet().iterator();
Map.Entry<Object, Object> entry = null;
while (iterator.hasNext())
{
entry = iterator.next();
logger.debug("Message node mapping to the Database field key is:"
+ entry.getKey() + " and Xpath :" + entry.getValue());
}
}
// 原始数据加密,有加密的字段,还必顺有加密的算法
if (encryptMap != null && encryptMap.size() > 0
&& !Tools.getENCRYPT_ALGO().isEmpty())
{
encryptDoc(doc, namespaceMap, encryptMap);
}
// 获取接口配置文件中的key值
Map<String, String> propertiesValue = getMatchValue(doc, interfaceMap,
namespaceMap);
addPrefix(propertiesValue, prefixMap);
// duration 是rsp_timestamp-req_timestamp秒差
// 直接在代码实现存入propertiesValue变量中,直接在代码存入不在properties文件中配置
String req_timestamp = propertiesValue.get("req_timestamp");
String rsp_timestamp = propertiesValue.get("rsp_timestamp");