Package xgenerator.dao.impl

Source Code of xgenerator.dao.impl.DataSourceConfigDaoXmlImpl

package xgenerator.dao.impl;

import java.io.File;
import java.util.Properties;
import java.util.Vector;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import xgenerator.dao.DataSourceConfigDao;
import xgenerator.jdbc.JdbcUtils;
import xgenerator.util.XmlUtils;

public class DataSourceConfigDaoXmlImpl implements DataSourceConfigDao {
 
  /**
   * for test
   * @param args
   */
  public static void main(String[] args) {
    DataSourceConfigDao datasourceDao = new DataSourceConfigDaoXmlImpl();
   
    Properties properties = datasourceDao.findByName("EAP_DS");
    System.out.println(properties.getProperty("name"));
    System.out.println(properties.getProperty("jdbc.driverClassName"));
    System.out.println(properties.getProperty("jdbc.url"));
    System.out.println(properties.getProperty("jdbc.username"));
    System.out.println(properties.getProperty("jdbc.password"));
  }
 
  /**
   * 默认的数据库配置文件
   */
  private static final String DEFAULT_CONFIG_FILE = System.getProperty("user.dir") + File.separator + "config" + File.separator + "jdbc.cfg.xml";
 
  /**
   * 文档对象
   */
  private Document doc;
 
  /**
   * constructor
   */
  public DataSourceConfigDaoXmlImpl() {
    this.doc = XmlUtils.getDocument(DEFAULT_CONFIG_FILE);
  }

  /**
   * <p>
   * Title:根据数据源名称,获取数据库类型
   * </p>
   * @author <a href="mailto:shushanlee@msn.com">liss</a>
   * @param dataSourceName
   * @return
   * @see xgenerator.dao.DataSourceConfigDao#getDbType(java.lang.String)
   */
  public String getDbType(String dataSourceName) {
    String driverClassName = XmlUtils.evaluateString("//datasource[@name=\"" + dataSourceName + "\"]/driverClassName/text()", this.doc);
    return JdbcUtils.analysisDbType(driverClassName);
  }
 
  /**
   * <p>
   * Title:获取配置的所有数据源列表
   * </p>
   * @author <a href="mailto:shushanlee@msn.com">liss</a>
   * @return
   * @see xgenerator.dao.DataSourceConfigDao#findAllDataSourceNames()
   */
  public Vector<String> findAllDataSourceNames() {
    Vector<String> dataSourceNames = new Vector<String>();
   
    NodeList nodeList = this.doc.getElementsByTagName("datasource")//所有nodeName节点的列表
    if(null == nodeList) {
      return dataSourceNames;
    }
    for(int i=0; i<nodeList.getLength(); i++) {
      Node oneNode = nodeList.item(i);
      NamedNodeMap nodeAttrMap = oneNode.getAttributes()//节点nodeName的所有属性的map
      Node attr = nodeAttrMap.getNamedItem("name")//一个节点属性相当于节点的一个子节点
      dataSourceNames.add(attr.getNodeValue());
    }
   
    return dataSourceNames;
  }
 

  /**
   * <p>
   * Title:根据数据源名称,获取数据源配置信息
   * </p>
   * @author <a href="mailto:shushanlee@msn.com">liss</a>
   * @param datasourceName
   * @return
   * @see xgenerator.dao.DataSourceConfigDao#findByName(java.lang.String)
   */
  public Properties findByName(String dataSourceName) {
    Properties properties = new Properties();
   
    String driverClassName = XmlUtils.evaluateString("//datasource[@name=\"" + dataSourceName + "\"]/driverClassName/text()", this.doc);
    String url = XmlUtils.evaluateString("//datasource[@name=\"" + dataSourceName + "\"]/url/text()", this.doc);
    String username = XmlUtils.evaluateString("//datasource[@name=\"" + dataSourceName + "\"]/username/text()", this.doc);
    String password = XmlUtils.evaluateString("//datasource[@name=\"" + dataSourceName + "\"]/password/text()", this.doc);

    properties.setProperty("name", dataSourceName);
    properties.setProperty("jdbc.driverClassName", driverClassName);
    properties.setProperty("jdbc.url", url);
    properties.setProperty("jdbc.username", username);
    properties.setProperty("jdbc.password", password);
   
    return properties;
  }

  /**
   * <p>
   * Title:添加数据源配置信息
   * </p>
   * @author <a href="mailto:shushanlee@msn.com">liss</a>
   * @param properties
   * @return
   * @see xgenerator.dao.DataSourceConfigDao#insert(java.util.Properties)
   */
  public long insert(Properties properties) {
    return 0;
  }

  /**
   * <p>
   * Title:更新数据源配置信息
   * </p>
   * @author <a href="mailto:shushanlee@msn.com">liss</a>
   * @param properties
   * @see xgenerator.dao.DataSourceConfigDao#update(java.util.Properties)
   */
  public void update(Properties properties) {

  }
 
  /**
   * <p>
   * Title:删除数据源配置信息
   * </p>
   * @author <a href="mailto:shushanlee@msn.com">liss</a>
   * @param dataSourceName
   * @see xgenerator.dao.DataSourceConfigDao#delete(java.lang.String)
   */
  public void delete(String dataSourceName) {
   
  }

}
TOP

Related Classes of xgenerator.dao.impl.DataSourceConfigDaoXmlImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.