getconnectionproperty.java

来自「公司自己开发的工作流引擎」· Java 代码 · 共 93 行

JAVA
93
字号
package cn.com.iaspec.workflow.db;

import javax.xml.parsers.*;
import org.apache.log4j.*;
import org.w3c.dom.*;

public class GetConnectionProperty{
  private static Logger logger=Logger.getLogger(GetConnectionProperty.class);
  public GetConnectionProperty(){
  }

  public static ConnectProperties getBusinessDBProperty(){
    logger.debug("begin getBusinessDBProperty...");
    return getDBProperty("BUSINESS_CONNECTION");
  }

  public static ConnectProperties getWorkflowDBProperty(){
    logger.debug("begin getWorkflowDBProperty...");
    return getDBProperty("WORKFLOW_CONNECTION");
  }

  private static ConnectProperties getDBProperty(String connectType){
    logger.debug("begin getDBProperty...");
    System.out.println("user.dir is:"+System.getProperty("user.dir"));
    ConnectProperties prop=null;
    String path=System.getProperty("user.dir")+
        System.getProperty("file.separator")+"workflow_db_connection.xml";
    Element root=loadDocument(path);
    if(root==null){
      logger.info("找不到数据库连接配置文件"+path+",系统将使用默配置信息来获取数据库连接。");
      return null;
    }
    NodeList list=root.getElementsByTagName(connectType);
    for(int loop=0;loop<list.getLength();loop++){
      Node node=list.item(loop);
      if(node!=null){
        prop=new ConnectProperties();
        prop.setDbDriver(getSubTagValue(node,"DB_DRIVER"));
        prop.setDbPassword(getSubTagValue(node,"DB_PASSWORD"));
        prop.setDbUrl(getSubTagValue(node,"DB_URL"));
        prop.setDbUser(getSubTagValue(node,"DB_USER"));
        prop.setMaxConnect(getSubTagValue(node,"MAX_CONNECTION"));
        prop.setUseJNDI(getSubTagValue(node,"USE_JNDI"));
        prop.setJNDIName(getSubTagValue(node,"JNDI_NAME"));
        prop.setDataBaseType(getSubTagValue(node,"DATABASE_TYPE"));
      }
    }
    logger.debug("prop is:\n"+prop);
    return prop;
  }

  public static String getSubTagValue(Node node,String subTagName){
    String returnString="";
    if(node!=null){
      NodeList children=node.getChildNodes();
      for(int innerLoop=0;innerLoop<children.getLength();innerLoop++){
        Node child=children.item(innerLoop);
        if((child!=null)&&(child.getNodeName()!=null)&&
            child.getNodeName().equals(subTagName)){
          Node grandChild=child.getFirstChild();
          if(grandChild.getNodeValue()!=null){
            return grandChild.getNodeValue();
          }
        }
      }
    }
    return returnString;
  }

  public static Element loadDocument(String location){
    Document doc=null;
    Element root=null;
    try{
      DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory.
          newInstance();
      DocumentBuilder parser=docBuilderFactory.newDocumentBuilder();
      doc=parser.parse(location);
      root=doc.getDocumentElement();
      root.normalize();
    }
    catch(Exception ex){
      logger.info(ex.toString());
      //ex.printStackTrace();
    }
    return root;
  }

  public static void main(String[] args){
    ConnectProperties pro=GetConnectionProperty.getBusinessDBProperty();
    System.out.println(pro);
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?