- 浏览: 732617 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (198)
- struts 相关 (8)
- hibernate相关 (5)
- JSP相关 (3)
- javascript相关 (9)
- spring相关 (0)
- J2SE相关 (25)
- MSSQL (6)
- web服务器相关 (3)
- html相关 (8)
- Ajax相关 (1)
- VS2008 (2)
- ArcGIS Web server (2)
- WebService (5)
- ANT (4)
- Ajax (5)
- IDE (2)
- 网络相关知识点 (3)
- 算法相关 (3)
- 数据库相关 (8)
- JUnit (1)
- 搜索引擎 (1)
- JAVA模式 (11)
- Dorado (4)
- JXL (2)
- ACCESS (1)
- PHP (3)
- Mysql 数据库 (2)
- J2EE (11)
- Tomcat (1)
- Oracle (15)
- WebLogic (1)
- Eclipse (4)
- Flex (1)
- java 路上 (1)
- IIS服务器 (1)
- Pushlet (2)
- Log 4j (1)
- XML (2)
- JDOM (1)
- RMI (0)
- 常用 bat 命令 (1)
- velocity (2)
- Linux (5)
- PL/SQL (2)
- SQL (5)
最新评论
-
virtualspider:
请问我用了volatile不copy到线程内存里面的话,我怎么 ...
java中关键字volatile的作用 -
saiarmuluo:
不错,最近在看并发的知识一直没弄懂这块,谢谢!
java中关键字volatile的作用 -
java大神dxg:
Servlet、Filter和Listener -
mao_siyu:
多谢楼主 讲的很明白~~
java中关键字volatile的作用 -
qiangcz:
angole 写道jgroups 写道volatile告诉jv ...
java中关键字volatile的作用
http://www.iteye.com/topic/380854
1.读取配置文件
EnvironmentConfig.java
- package com.billows.util;
- import java.io.*;
- import java.util.*;
- /**
- * java 读取配置(属性)文件
- * @author Billows.Van
- * billows.van@gmail.com
- */
- public class EnvironmentConfig {
- static EnvironmentConfig ec;// 创建对象ec
- private static Hashtable<String, Properties> register = new Hashtable<String, Properties>();// 静态对象初始化[在其它对象之前]
- private EnvironmentConfig() {
- super();
- }
- /**
- * 取得EnvironmentConfig的一个实例
- */
- public static EnvironmentConfig getInstance() {
- if (ec == null)
- ec = new EnvironmentConfig();// 创建EnvironmentConfig对象
- return ec;// 返回EnvironmentConfig对象
- }
- /**
- * 读取配置文件
- */
- public Properties getProperties(String fileName) {// 传递配置文件路径
- InputStream is = null;// 定义输入流is
- Properties p = null;
- try {
- p = (Properties) register.get(fileName);// 将fileName存于一个HashTable
- /**
- * 如果为空就尝试输入进文件
- */
- if (p == null) {
- try {
- is = new FileInputStream(fileName);// 创建输入流
- } catch (Exception e) {
- if (fileName.startsWith("/"))
- // 用getResourceAsStream()方法用于定位并打开外部文件。
- is = EnvironmentConfig.class.getResourceAsStream(fileName);
- else
- is = EnvironmentConfig.class.getResourceAsStream("/"+fileName);
- }
- p = new Properties();
- p.load(is);// 加载输入流
- register.put(fileName, p);// 将其存放于HashTable缓存
- is.close();// 关闭输入流
- }
- } catch (Exception e) {
- e.printStackTrace(System.out);
- }
- return p;// 返回Properties对象
- }
- /**
- * 此处插入方法描述。
- */
- public String getPropertyValue(String fileName, String strKey) {
- Properties p = getProperties(fileName);
- try {
- return (String) p.getProperty(strKey);
- } catch (Exception e) {
- e.printStackTrace(System.out);
- }
- return null;
- }
- }
package com.billows.util; import java.io.*; import java.util.*; /** * java 读取配置(属性)文件 * @author Billows.Van * billows.van@gmail.com */ public class EnvironmentConfig { static EnvironmentConfig ec;// 创建对象ec private static Hashtable<String, Properties> register = new Hashtable<String, Properties>();// 静态对象初始化[在其它对象之前] private EnvironmentConfig() { super(); } /** * 取得EnvironmentConfig的一个实例 */ public static EnvironmentConfig getInstance() { if (ec == null) ec = new EnvironmentConfig();// 创建EnvironmentConfig对象 return ec;// 返回EnvironmentConfig对象 } /** * 读取配置文件 */ public Properties getProperties(String fileName) {// 传递配置文件路径 InputStream is = null;// 定义输入流is Properties p = null; try { p = (Properties) register.get(fileName);// 将fileName存于一个HashTable /** * 如果为空就尝试输入进文件 */ if (p == null) { try { is = new FileInputStream(fileName);// 创建输入流 } catch (Exception e) { if (fileName.startsWith("/")) // 用getResourceAsStream()方法用于定位并打开外部文件。 is = EnvironmentConfig.class.getResourceAsStream(fileName); else is = EnvironmentConfig.class.getResourceAsStream("/"+fileName); } p = new Properties(); p.load(is);// 加载输入流 register.put(fileName, p);// 将其存放于HashTable缓存 is.close();// 关闭输入流 } } catch (Exception e) { e.printStackTrace(System.out); } return p;// 返回Properties对象 } /** * 此处插入方法描述。 */ public String getPropertyValue(String fileName, String strKey) { Properties p = getProperties(fileName); try { return (String) p.getProperty(strKey); } catch (Exception e) { e.printStackTrace(System.out); } return null; } }
用法:
- EnvironmentConfig ec=EnvironmentConfig.getInstance();
- String driverClassName=ec.getPropertyValue("/config/jdbc.properties", "jdbc.driverClassName");
EnvironmentConfig ec=EnvironmentConfig.getInstance(); String driverClassName=ec.getPropertyValue("/config/jdbc.properties", "jdbc.driverClassName");
2.Jdbc工具
JdbcUtil.java
- package com.billows.util;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- /**
- * @author Billows.Van haidii@126.com
- * @version 创建时间:2008-4-30 上午10:53:09 类说明
- */
- public class JdbcUtil {
- static {
- try {
- EnvironmentConfig ec=EnvironmentConfig.getInstance();
- String driverClassName=ec.getPropertyValue("/config/jdbc.properties", "jdbc.driverClassName");
- Class.forName(driverClassName);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- public static Connection getConnection() throws SQLException {
- Connection conn = null;
- EnvironmentConfig ec=EnvironmentConfig.getInstance();
- String url=ec.getPropertyValue("/config/jdbc.properties", "jdbc.url");
- String name=ec.getPropertyValue("/config/jdbc.properties", "jdbc.username");
- String pwd=ec.getPropertyValue("/config/jdbc.properties", "jdbc.password");
- conn = DriverManager.getConnection(url, name, pwd);
- return conn;
- }
- public static void release(Connection conn, PreparedStatement ps,ResultSet rs) {
- if (rs != null)try {rs.close();} catch (SQLException e) {e.printStackTrace();}
- if (ps != null) try {ps.close();} catch (SQLException e) {e.printStackTrace();}
- if (conn!= null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}
- }
- public static void release(Object obj) {
- if (obj instanceof Connection) {
- Connection conn = (Connection) obj;
- if (conn != null)
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if (obj instanceof PreparedStatement) {
- PreparedStatement ps = (PreparedStatement) obj;
- if (ps != null)
- try {
- ps.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if (obj instanceof ResultSet) {
- ResultSet rs = (ResultSet) obj;
- if (rs != null)
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
package com.billows.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * @author Billows.Van haidii@126.com * @version 创建时间:2008-4-30 上午10:53:09 类说明 */ public class JdbcUtil { static { try { EnvironmentConfig ec=EnvironmentConfig.getInstance(); String driverClassName=ec.getPropertyValue("/config/jdbc.properties", "jdbc.driverClassName"); Class.forName(driverClassName); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { Connection conn = null; EnvironmentConfig ec=EnvironmentConfig.getInstance(); String url=ec.getPropertyValue("/config/jdbc.properties", "jdbc.url"); String name=ec.getPropertyValue("/config/jdbc.properties", "jdbc.username"); String pwd=ec.getPropertyValue("/config/jdbc.properties", "jdbc.password"); conn = DriverManager.getConnection(url, name, pwd); return conn; } public static void release(Connection conn, PreparedStatement ps,ResultSet rs) { if (rs != null)try {rs.close();} catch (SQLException e) {e.printStackTrace();} if (ps != null) try {ps.close();} catch (SQLException e) {e.printStackTrace();} if (conn!= null)try {conn.close();} catch (SQLException e) {e.printStackTrace();} } public static void release(Object obj) { if (obj instanceof Connection) { Connection conn = (Connection) obj; if (conn != null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if (obj instanceof PreparedStatement) { PreparedStatement ps = (PreparedStatement) obj; if (ps != null) try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (obj instanceof ResultSet) { ResultSet rs = (ResultSet) obj; if (rs != null) try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
3.java数据源
DBConnectionPool.java
- package com.billows.util;
- import java.sql.Connection;
- import javax.naming.Context;
- import javax.naming.InitialContext;
- import javax.sql.DataSource;
- public class DBConnectionPool {
- public static Connection getConnection() throws Exception{
- Context ctx = new InitialContext();
- DataSource ds = (DataSource)ctx.lookup("java:comp/env/hsql");
- // Context initContext = new InitialContext();
- // Context envContext = (Context)initContext.lookup("java:/comp/env");
- // DataSource ds = (DataSource)envContext.lookup("hsql");
- return ds.getConnection( );
- }
- }
package com.billows.util; import java.sql.Connection; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; public class DBConnectionPool { public static Connection getConnection() throws Exception{ Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/hsql"); // Context initContext = new InitialContext(); // Context envContext = (Context)initContext.lookup("java:/comp/env"); // DataSource ds = (DataSource)envContext.lookup("hsql"); return ds.getConnection( ); } }
4.hsqldb随web启动的Listener
- package com.billows.util;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import java.sql.Statement;
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
- import org.apache.log4j.Logger;
- import org.hsqldb.Server;
- import com.billows.util.EnvironmentConfig;
- /**
- * 该listener随web服务启动 并同时启动hsql-server
- * @auth Billows.Van
- * billows.van@gmail.com
- */
- public class HsqlListener implements ServletContextListener {
- public static final Logger log = Logger.getLogger("HsqlListener");
- private EnvironmentConfig ec=EnvironmentConfig.getInstance();
- /**配置文件中的占位符,代表webapp发布后的根目录.*/
- public static final String TOKEN = "${webapp.root}";
- /** 等待数据库停止的最大时间.*/
- public static final int WAIT_TIME = 1000;
- /**jdbc的url.*/
- private String url;
- /**登陆用户名.*/
- private String username;
- /**登陆密码.*/
- private String password;
- /**处理context初始化事件.
- * @param sce ServletContextEvent
- */
- public void contextInitialized(ServletContextEvent sce) {
- try {
- username = ec.getPropertyValue("/config/jdbc.properties", "jdbc.username");
- password = ec.getPropertyValue("/config/jdbc.properties", "jdbc.password");
- String databaseName = ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbname");
- int port = Integer.parseInt(ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbport"));
- String hsqlPath = ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbpath");
- // FIXME: 因为要用到getRealPath方法获得路径,在使用war包发布的时候会出现问题
- if (hsqlPath.startsWith(TOKEN)) {
- String webappRoot = sce.getServletContext().getRealPath("/").replace("\\", "/");
- hsqlPath = hsqlPath.substring(TOKEN.length());
- hsqlPath = webappRoot + hsqlPath;
- }
- String databasePath = hsqlPath + "/" + databaseName;
- url = "jdbc:hsqldb:hsql://localhost:" + port + "/" + databaseName;
- Server server = new Server();
- server.setDatabaseName(0, databaseName);
- server.setDatabasePath(0, databasePath);
- server.setPort(port);
- server.setSilent(true);
- server.start();
- Thread.sleep(WAIT_TIME);
- log.info("Hsqldb启动成功!");
- } catch (Exception ex) {
- log.error("Hsqldb启动失败:" + ex);
- }
- }
- /**
- * 处理context销毁事件.
- * @param sce ServletContextEvent
- */
- public void contextDestroyed(ServletContextEvent sce) {
- try {
- Class.forName("org.hsqldb.jdbcDriver");
- Connection conn = null;
- Statement state = null;
- try {
- // 向数据库发送shutdown命令,关闭数据库
- conn = DriverManager.getConnection(url, username, password);
- state = conn.createStatement();
- state.executeUpdate("SHUTDOWN;");
- try {
- Thread.sleep(WAIT_TIME);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- log.info("关闭hsqldb数据库成功!");
- } catch (SQLException ex1) {
- log.error("关闭hsqldb数据库时出现异常:" + ex1);
- } finally {
- // 确保关闭Statement
- if (state != null) {
- try {
- state.close();
- state = null;
- } catch (SQLException ex1) {
- log.error("关闭Statement时异常:"+ex1);
- }
- }
- // 确保关闭Connection
- if (conn != null) {
- try {
- conn.close();
- conn = null;
- } catch (SQLException ex1) {
- log.error("关闭Connection时异常:"+ex1);
- }
- }
- }
- } catch (ClassNotFoundException ex) {
- log.error("HsqldbListener : contextDestoryed : error : " + ex);
- }
- }
- }
package com.billows.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.apache.log4j.Logger; import org.hsqldb.Server; import com.billows.util.EnvironmentConfig; /** * 该listener随web服务启动 并同时启动hsql-server * @auth Billows.Van * billows.van@gmail.com */ public class HsqlListener implements ServletContextListener { public static final Logger log = Logger.getLogger("HsqlListener"); private EnvironmentConfig ec=EnvironmentConfig.getInstance(); /**配置文件中的占位符,代表webapp发布后的根目录.*/ public static final String TOKEN = "${webapp.root}"; /** 等待数据库停止的最大时间.*/ public static final int WAIT_TIME = 1000; /**jdbc的url.*/ private String url; /**登陆用户名.*/ private String username; /**登陆密码.*/ private String password; /**处理context初始化事件. * @param sce ServletContextEvent */ public void contextInitialized(ServletContextEvent sce) { try { username = ec.getPropertyValue("/config/jdbc.properties", "jdbc.username"); password = ec.getPropertyValue("/config/jdbc.properties", "jdbc.password"); String databaseName = ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbname"); int port = Integer.parseInt(ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbport")); String hsqlPath = ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbpath"); // FIXME: 因为要用到getRealPath方法获得路径,在使用war包发布的时候会出现问题 if (hsqlPath.startsWith(TOKEN)) { String webappRoot = sce.getServletContext().getRealPath("/").replace("\\", "/"); hsqlPath = hsqlPath.substring(TOKEN.length()); hsqlPath = webappRoot + hsqlPath; } String databasePath = hsqlPath + "/" + databaseName; url = "jdbc:hsqldb:hsql://localhost:" + port + "/" + databaseName; Server server = new Server(); server.setDatabaseName(0, databaseName); server.setDatabasePath(0, databasePath); server.setPort(port); server.setSilent(true); server.start(); Thread.sleep(WAIT_TIME); log.info("Hsqldb启动成功!"); } catch (Exception ex) { log.error("Hsqldb启动失败:" + ex); } } /** * 处理context销毁事件. * @param sce ServletContextEvent */ public void contextDestroyed(ServletContextEvent sce) { try { Class.forName("org.hsqldb.jdbcDriver"); Connection conn = null; Statement state = null; try { // 向数据库发送shutdown命令,关闭数据库 conn = DriverManager.getConnection(url, username, password); state = conn.createStatement(); state.executeUpdate("SHUTDOWN;"); try { Thread.sleep(WAIT_TIME); } catch (InterruptedException e) { e.printStackTrace(); } log.info("关闭hsqldb数据库成功!"); } catch (SQLException ex1) { log.error("关闭hsqldb数据库时出现异常:" + ex1); } finally { // 确保关闭Statement if (state != null) { try { state.close(); state = null; } catch (SQLException ex1) { log.error("关闭Statement时异常:"+ex1); } } // 确保关闭Connection if (conn != null) { try { conn.close(); conn = null; } catch (SQLException ex1) { log.error("关闭Connection时异常:"+ex1); } } } } catch (ClassNotFoundException ex) { log.error("HsqldbListener : contextDestoryed : error : " + ex); } } }
其中, jdbc.properties内容为
- jdbc.driverClassName=org.hsqldb.jdbcDriver
- jdbc.url=jdbc:hsqldb:hsql://localhost:9990/billows
- jdbc.dbname=billows
- jdbc.dbport=9990
- jdbc.dbpath=${webapp.root}/hsqldb
- jdbc.username=sa
- jdbc.password=
- jdbc.max_connections=30
jdbc.driverClassName=org.hsqldb.jdbcDriver jdbc.url=jdbc:hsqldb:hsql://localhost:9990/billows jdbc.dbname=billows jdbc.dbport=9990 jdbc.dbpath=${webapp.root}/hsqldb jdbc.username=sa jdbc.password= jdbc.max_connections=30
在web.xml中添加以下代码即可
发表评论
-
什么是内存泄露问题?
2010-05-21 10:23 2230·简介....................... ... -
Java同步、异步相关知识点
2009-11-12 18:02 5233一、关键字: thread( ... -
java读取properties文件
2009-10-21 08:45 1417一. .properties 文件的形式 引用# 以下为服务 ... -
JAVA推技术聊天室的实现
2009-10-14 17:37 3373基于推技术的聊天室在国内现在已经比较常见。这种聊天室最大的特点 ... -
Java中的”推”技术
2009-10-14 17:11 1240Java中的”推”技术 [/size] bromon原创 ... -
JAVA iterator 用法
2009-10-13 11:33 3308引用迭代器(Iterator) 迭代器是一种设计模式,它 ... -
java 获取MAC地址
2009-10-06 17:59 1178获取MAC地址: package com; imp ... -
java 各种类型初始值
2009-09-27 09:49 2131基本变量:byte,short,int,long 初始化为0 ... -
Java实现的拦截器模型
2009-09-18 11:40 2983拦截器在在流行的开源框架中很常见,依赖的技术就是Java的 ... -
JAVA的日期时间相减问题
2009-09-12 12:44 3487import java.util.Date;import ja ... -
线程和进程的区别
2009-09-07 19:12 1238进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该 ... -
java中金额的精确计算问题
2009-08-25 13:26 3561import java.math.BigDecimal; ... -
获取用户输入I/O
2009-06-17 10:22 1172import java.io.BufferedReader ... -
获取 JAVA 程序当前的工作目录
2009-06-16 16:43 2624获取 JAVA 程序当前的工作目录 File file = ... -
eclipse导出jar 并制作成 bat直接运行
2009-06-16 15:29 3761在eclipse中导出生成的jar后,编写一个bat文件进行运 ... -
EJB 与 javabean 的区别
2009-05-17 22:05 2147文章出自:http://killazy.iteye.com/b ... -
java 中数据类型转换
2009-05-17 19:02 1880Java:数据类型转换。 1.J ... -
覆盖与重载
2009-05-17 17:34 1055[恶补JAVA]关于覆盖与重 ... -
java 面试必会知识点
2009-05-09 16:46 1636http://book.51cto.com/art/20090 ... -
JDK 配置参数
2009-05-06 21:06 3304JAVA环境变量的设置和对 ...
相关推荐
2. 然后,找到并编辑Maven的启动脚本文件,一般这个文件位于"M2_HOME\bin\mvn"。在这个文件中,你需要检查和修改"M2_HOME"环境变量的引用,确保它指向正确的路径。 3. 接下来,打开Eclipse或其他集成开发环境(IDE...
Vendormac 这是用于生成Vendor Mac Map(例如Propery文件,xml文件和apple枚举元素)的简单实用程序。前提来自源文件。 另存为oui.txt(默认源文件名) 注意:定期需要更新用法 cmd> java -jar vendormac.jarcmd> ...
请把文件复制在User/.gradle/文件路径下面完成android studio加速,并重新启动AS
QML,全称为Query Markup Language,是Qt框架中用于构建用户界面的一种声明式语言。它主要用来描述界面的布局、视觉效果以及与用户的交互。QML结合JavaScript,使得开发者能够轻松实现复杂的界面逻辑和动态效果。...
[Serializable] public class EXIF { #region -- Class level members -- // Class level members. private Image _picture; #endregion #region -- Constructors -- // Constructors. ...
在材料科学领域,特别是纳米科技的研究中,理解金属纳米线材的力学性质是至关重要的。本文探讨了面心立方(fcc)金属纳米线材的杨氏模量,也就是材料抵抗形变的能力,通过对组成纳米线材的结构单元的原子间相互作用...
6. **物业展示(propery-single-side-bar.html, properties-right-bar.html, properties-right-side-bar.html, properties-right-bar-2.html, properties-list-2.html, properties-list.html)**:这些文件涵盖了...
在本文中,我们将深入探讨如何在ExtJS中扩展PropertyGrid以实现分组功能,这个问题源自于原生ExtJS PropertyGrid控件不支持属性分组。首先,我们要理解PropertyGrid的基本结构,它主要由以下几个核心部分组成: ...
在其他情况下,您将获得类型安全的模拟,并且至少可以确保cannot read propery of null或undefined is not a function cannot read propery of null undefined is not a function SSR中undefined is not a function...
注:Delphi 2010、XE里面安装不要修改bpl文件的输出路径,采用默认值,否则安装难以成功。 Version 5.2 + Added feature to group data in the DBGridEh. It is allowed to make grouping at run-time and ...
加载OWC11.DLL的方法通常是通过设置ActiveX控件的“Propery Node”(属性节点)。在控件的属性节点中,我们指定控件的CLSID(Class ID),对于OWC11.DLL,可能是Excel.Chart或其他特定的Office组件。同时,还需要...
java -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop propery_file_name.prop 截屏 用户指南 对于命令行界面,用户可以使用以下命令与系统进行交互。 1. 登录/创建账户 当您第一次运行该应用...
该库基于本机Propery ,添加了许多其他功能,最重要的是,为可插入中间件建立了API。 用法 $ npm install kefir.db import K from "kefir" import * as D from "kefir.db" let inc = ( x ) => x + 1 let dec = ( x ...
在以下示例中,有 4 个主要部分: [{min / max} - {propery} ~= "{value}(unit)" ][ min-width ~= "40em" ] 按照计算顺序,首先有一个属性或查询类型,通常可以与其他数字表示变量(例如宽度、纵横比或面积)互换。...
Creating a record and accessing its propery is only what you need. Very small memory footprint Last time I checked the dbfDotNet dll was 50Kb. Other databases are 1Mb to 10Mb. I would appreciate if...
******************************************* ************ WPTOOLS 6 History ************ ... Ziersch and **** **** WPCubed GmbH, Munich, Germany ******** ******************************************* ...