⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpsdispatch.java~3~

📁 全文搜索源码,基于开源项目Lucene编写,开发语言为JAVA,本程序做为LUCENE的示例DEMO
💻 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 + -