Pentaho Kettle二次开发(简单数据交换)之测试数据库连接状态(包括达梦数据库)

通过查看Kettle源码,发现DataBaseMeta.class这个类负责数据库连接属性配置相关操作。

DatabaseMeta.class

提供构造方法可以直接以xml格式数据库连接信息初始化数据库配置信息。

public DatabaseMeta(String xml) throws KettleXMLException {
    this(XMLHandler.getSubNode(XMLHandler.loadXMLString(xml), "connection"));
}

初始化连接配置后,提供testConnection()方法,测试配置数据库的连接状态,返回值实例:

正确连接到数据库[测试数据库] 
自定义网址       :jdbc:dm://localhost:5236/SYSDBA
自定义驱动程序类       :dm.jdbc.driver.DmDriver

数据库连接信息,Map转xml通用方法:

    /**
     * 数据库信息拼接
     * 达梦数据库连接配置:
     *      * 1. 数据库类型选择通用连接
     *      *  type:Generic database
     *      * 2.需要在connection标签中额外配置达梦数据库的数据库驱动和连接方式如下
     *      * "" +
     *      *      "" +
     *      *           "CUSTOM_DRIVER_CLASS"+
     *      *            "dm.jdbc.driver.DmDriver" +
     *      *       ""+
     *      *       "" +
     *      *            "CUSTOM_URL"+
     *      *            "jdbc:dm://localhost:5236/sysdba" +
     *      *       ""+
     *      * ""+
     * @param param 不能为空,所有键值均不能为空
     * @return
     */
    public String getDatabaseStr(Map param){
        StringBuffer xml = new StringBuffer();
        xml.append("");
        xml.append(""+(String)param.get("name")+"");
        xml.append(""+(String)param.get("server")+"");
        xml.append(""+(String)param.get("type")+"");
        xml.append(""+(String)param.get("access")+"");
        xml.append(""+(String)param.get("database")+"");
        xml.append(""+(String)param.get("port")+"");
        xml.append(""+(String)param.get("username")+"");
        xml.append(""+(String)param.get("password")+"");
        String database = (String)param.get("database");
        if("dm".equalsIgnoreCase(database)){
            xml.append("CUSTOM_DRIVER_CLASSdm.jdbc.driver.DmDriver");
            /*jdbc:dm://localhost:5236/sysdba*/
            StringBuffer url = new StringBuffer("jdbc:dm://");
            url.append((String)param.get("server"));
            url.append(":");
            url.append((String)param.get("port"));
            url.append("/");
            url.append((String)param.get("username"));
            xml.append("CUSTOM_URL");
            xml.append(url.toString());
            xml.append("");
        }
        xml.append("");
        return xml.toString();
    }

 

你可能感兴趣的:(Kettle)