/*
* $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/db/TKConnectData.java,v 1.9 2001/10/09 12:26:51 uli Exp $
*
*/
package com.teamkonzept.db;
import java.sql.*;
import java.util.Enumeration;
import java.util.Properties;
import org.apache.log4j.Category;
/**
TKConnectData verwaltet die Informationen welche notwendig sind, um eine Verbindung zu
einer bestimmten Datenbank-Architektur via jdbc aufbauen zu koennen.
Sie ist die Basisklasse fuer DB-Architektur-spezifische ConnectData-Klassen
* @author
* @version
*/
public abstract class TKConnectData {
//private static Category cat = Category.getInstance(TKConnectData.class);
/**
der jdbc Connect-String
*/
private String connectString;
/**
die jdbc Connect-Properties
*/
private Properties connectProperties;
private String jdbcProtocol = "jdbc:";
/**
Initialisiert ein Objekt der Klasse. Dem uebergebenen connectString wird der
Protokoll-Typ "jdbc:" vorangestellt.
*/
public TKConnectData( String jdbcSubProtocol, Properties connectProperties )
{
this.connectString = jdbcProtocol + jdbcSubProtocol + connectProperties.getProperty("host");
connectProperties.remove("host");
connectProperties.remove("database");
this.connectProperties = connectProperties;
}
public String getConnectString(){
return connectString;
}
public Properties getConnectProperties(){
return connectProperties;
}
/**
Laed die in driverClass uebergebene jdbc-driver-Klasse und registriert
sie beim jdbc-DriverManager.
*/
public void registerDriver( String driverClass ) throws SQLException
{
try {
Class d = Class.forName(driverClass);
DriverManager.registerDriver((Driver) d.newInstance());
}
catch( SQLException e ) {
throw e;
}
catch( Throwable t ) {
throw new NoClassDefFoundError( t.getMessage() );
}
}
/**
konstruiere fr einen spezifischen DB-Server den
entsprechenden TKSQLTypeConverter
*/
public abstract void initTypeConverter( final Connection conn ) throws SQLException;
public abstract TKSQLTypeConverter getTypeConverter();
/**
* Returns the string representation of the connection data.
*
* @return the string representation of the connection data.
*/
public String toString ()
{
StringBuffer buffer = new StringBuffer(this.connectString);
Enumeration keys = this.connectProperties.keys();
while (keys.hasMoreElements())
{
Object key = keys.nextElement();
buffer.append('&')
.append(key)
.append('=')
.append(this.connectProperties.get(key));
}
return buffer.toString();
}
}
|