001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/db/TKConnectData.java,v 1.9 2001/10/09 12:26:51 uli Exp $
003: *
004: */
005: package com.teamkonzept.db;
006:
007: import java.sql.*;
008: import java.util.Enumeration;
009: import java.util.Properties;
010: import org.apache.log4j.Category;
011:
012: /**
013: TKConnectData verwaltet die Informationen welche notwendig sind, um eine Verbindung zu
014: einer bestimmten Datenbank-Architektur via jdbc aufbauen zu koennen.
015: Sie ist die Basisklasse fuer DB-Architektur-spezifische ConnectData-Klassen
016: * @author
017: * @version
018: */
019:
020: public abstract class TKConnectData {
021:
022: //private static Category cat = Category.getInstance(TKConnectData.class);
023:
024: /**
025: der jdbc Connect-String
026: */
027: private String connectString;
028: /**
029: die jdbc Connect-Properties
030: */
031: private Properties connectProperties;
032:
033: private String jdbcProtocol = "jdbc:";
034:
035: /**
036: Initialisiert ein Objekt der Klasse. Dem uebergebenen connectString wird der
037: Protokoll-Typ "jdbc:" vorangestellt.
038: */
039: public TKConnectData(String jdbcSubProtocol,
040: Properties connectProperties) {
041: this .connectString = jdbcProtocol + jdbcSubProtocol
042: + connectProperties.getProperty("host");
043: connectProperties.remove("host");
044: connectProperties.remove("database");
045: this .connectProperties = connectProperties;
046: }
047:
048: public String getConnectString() {
049: return connectString;
050: }
051:
052: public Properties getConnectProperties() {
053: return connectProperties;
054: }
055:
056: /**
057: Laed die in driverClass uebergebene jdbc-driver-Klasse und registriert
058: sie beim jdbc-DriverManager.
059: */
060: public void registerDriver(String driverClass) throws SQLException {
061: try {
062: Class d = Class.forName(driverClass);
063: DriverManager.registerDriver((Driver) d.newInstance());
064: } catch (SQLException e) {
065: throw e;
066: } catch (Throwable t) {
067: throw new NoClassDefFoundError(t.getMessage());
068: }
069: }
070:
071: /**
072: konstruiere f¸r einen spezifischen DB-Server den
073: entsprechenden TKSQLTypeConverter
074: */
075: public abstract void initTypeConverter(final Connection conn)
076: throws SQLException;
077:
078: public abstract TKSQLTypeConverter getTypeConverter();
079:
080: /**
081: * Returns the string representation of the connection data.
082: *
083: * @return the string representation of the connection data.
084: */
085: public String toString() {
086: StringBuffer buffer = new StringBuffer(this .connectString);
087:
088: Enumeration keys = this .connectProperties.keys();
089:
090: while (keys.hasMoreElements()) {
091: Object key = keys.nextElement();
092:
093: buffer.append('&').append(key).append('=').append(
094: this.connectProperties.get(key));
095: }
096:
097: return buffer.toString();
098: }
099:
100: }
|