001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/db/TKDBInterface.java,v 1.11 2001/08/21 17:44:53 alex Exp $
003: *
004: */
005: package com.teamkonzept.db;
006:
007: import java.sql.*;
008:
009: import com.teamkonzept.lib.*;
010: import org.apache.log4j.Category;
011:
012: /**
013: Implementiert ein einheitliches Interface, mit dem Objekte, die von der Klasse
014: TKDBData abgeleitet sind in einer Datenbank verwaltet werden koennen.
015:
016: Die Aufgabenverteilung ist sehr einfach
017: <UL>
018: <LI> Dem Konstruktor eines Interface-Objekts werden die Queries genannt, mit denen
019: das Objekt in der Datenbank manipuliert werden soll.
020: <LI> Die Bearbeitungsmethoden der Interface-Klasse bekommen das zu bearbeitende TKDBData-Objekt uebergeben.
021: <UL>
022: <LI> Sie w‰hlen die korrekte Query aus und veranlassen dann das TKDBData-Objekt die fuer die Query
023: benoetigten Parameter einzusetzen.
024: <LI> Dann wird die Query ausgefuehrt und ggf. das TKDBData-Objekt aufgefordert, das ResultSet
025: auszulesen.
026: </UL>
027: </UL>
028:
029: Die Idee der Interface-Klassen ist es, fuer jedes Objekt, dass ueber ein Interface verwaltet
030: werden soll, eine Interface-Klasse abzuleiten, die ein statisches Objekt von sich selbst enthaelt
031: und dann statische Methoden zum Ausfuehren der Bearbeitungsmethoden zur Verfuegung stellt.
032:
033: @see TKDBData
034: @see TKQuery
035: * @author $Author: alex $
036: * @version $Revision: 1.11 $
037: */
038: public class TKDBInterface {
039: private static Category cat = Category
040: .getInstance(TKDBInterface.class);
041:
042: Class newPrimQuery;
043: Class updatePrimQuery;
044: Class getPrimQuery;
045: Class delPrimQuery;
046:
047: public TKDBInterface(Class newPrimQuery, Class updatePrimQuery,
048: Class getPrimQuery, Class delPrimQuery) {
049: this .newPrimQuery = newPrimQuery;
050: this .updatePrimQuery = updatePrimQuery;
051: this .getPrimQuery = getPrimQuery;
052: this .delPrimQuery = delPrimQuery;
053: }
054:
055: public void updateEntry(TKDBData dbData) throws SQLException {
056:
057: if (updatePrimQuery == null)
058: return; // Ist OK !!! (singh)
059:
060: TKQuery query = TKDBManager.newQuery(updatePrimQuery);
061:
062: dbData.insertIntoQuery(query);
063: query.execute();
064: query.close();
065:
066: }
067:
068: public void delEntry(TKDBData dbData) throws SQLException {
069:
070: if (delPrimQuery == null) {
071: cat.debug("TKDBInterface delPrimQuery is null! ");
072: return;
073: }
074:
075: TKQuery query = TKDBManager.newQuery(delPrimQuery);
076:
077: dbData.insertPrimaryIntoQuery(query);
078: query.execute();
079: query.close();
080:
081: }
082:
083: public void getEntry(TKDBData dbData) throws SQLException {
084:
085: if (getPrimQuery == null) {
086: cat.debug("TKDBInterface getPrimQuery is null! ");
087: return;
088: }
089:
090: TKQuery query = TKDBManager.newQuery(getPrimQuery);
091:
092: dbData.insertPrimaryIntoQuery(query);
093:
094: query.execute();
095: ResultSet rs = query.fetchResultSet();
096:
097: if (rs.next())
098: dbData.fill(rs);
099: else
100: cat
101: .debug("TKDBInterface.getEntry(): no matching DB-Entry found! ");
102:
103: query.close();
104: }
105:
106: public void newEntry(TKDBData dbData) throws SQLException {
107:
108: if (newPrimQuery == null) {
109: cat.debug("TKDBInterface newPrimQuery is null! ");
110: return;
111: }
112:
113: TKQuery query = TKDBManager.newQuery(newPrimQuery);
114:
115: dbData.insertInitialIntoQuery(query);
116:
117: query.execute();
118: ResultSet rs = query.fetchResultSet();
119:
120: if ((rs == null) || (!rs.next()))
121: throw new TKSQLError(
122: "Could not create New Entry for TKDBData" + dbData); // %%change
123: else
124: dbData.fill(rs);
125:
126: query.close();
127: }
128: }
|