📄 gpsdispatch.java~3~
字号:
package com.ht.gis.dispatch;
import java.util.*;
import java.lang.reflect.*;
import org.jdom.*;
import org.w3c.dom.Node;
import org.jdom.input.SAXBuilder;
import org.xml.sax.*;
import java.io.*;
public class GPSDispatch {
private static Log log = LogFactory.getLog("WebGIS");
private HashMap typeMap = new HashMap();
private HashMap keyMap = new HashMap();
private String saxDriverClass = "org.apache.xerces.parsers.SAXParser";
private SAXBuilder builder;
public GPSDispatch() {
typeMap.clear();
keyMap.clear();
}
public synchronized void regType(String typeFlag, Object listener,String methodName) {
Object[] regEntity = new Object[]{listener,methodName};
typeMap.put(typeFlag,regEntity);
log.debug(listener.getClass().getName()+"模块已注册监听协议:"+typeFlag);
}
public synchronized void regKey(String keyFlag, Object listener,String methodName){
Object[] regEntity = new Object[]{listener,methodName};
keyMap.put(keyFlag,regEntity);
log.debug(listener.getClass().getName()+"模块已注册监听协议:"+keyFlag);
}
public void dispatchType(String XMLString)throws Exception{
builder = new SAXBuilder(saxDriverClass);
Document doc = builder.build(new InputSource(new StringReader(XMLString)));
Element root = doc.getRootElement();
String typeFlag = root.getChild("head").getChildText("type");
if(typeFlag == null){return;}
Object[] regEntity = (Object[])typeMap.get(typeFlag);
if(regEntity == null){return;}
Object listener = regEntity[0];
String methodname = (String)regEntity[1];
//============= 利用类反射机制调用方法 ============================
Class classDeclare = listener.getClass();
Class[] argsDeclare = new Class[] {Document.class};
Object[] argsValues = new Object[] {doc};
Method method = classDeclare.getDeclaredMethod(methodname,argsDeclare);
method.invoke(listener,argsValues);
log.debug(typeFlag+"协议已分配到模块:"+listener.getClass().getName());
}
public void dispatchType(org.jdom.Document doc)throws Exception{
Element root = doc.getRootElement();
String typeFlag = root.getChild("head").getChildText("type");
if(typeFlag == null){return;}
Object[] regEntity = (Object[])typeMap.get(typeFlag);
if(regEntity == null){return;}
Object listener = regEntity[0];
String methodname = (String)regEntity[1];
//============= 利用类反射机制调用方法 ============================
Class classDeclare = listener.getClass();
Class[] argsDeclare = new Class[] {Document.class};
Object[] argsValues = new Object[] {doc};
Method method = classDeclare.getDeclaredMethod(methodname,argsDeclare);
method.invoke(listener,argsValues);
log.debug(typeFlag+"协议已分配到模块:"+listener.getClass().getName());
}
public void dispatchKey(String keyFlag, org.jdom.Element lctData)throws Exception{
Object[] regEntity = (Object[])keyMap.get(keyFlag);
if(regEntity == null){return;}
Object listener = regEntity[0];
String methodname = (String) regEntity[1];
//============= 利用类反射机制调用方法 ============================
Class classDeclare = listener.getClass();
Class[] argsDeclare = new Class[] {org.jdom.Element.class};
Object[] argsValues = new Object[] {lctData};
Method method = classDeclare.getDeclaredMethod(methodname, argsDeclare);
method.invoke(listener, argsValues);
log.debug(keyFlag + "协议已分配到模块:" + listener.getClass().getName());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -