001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/lib/TKDBResultRowHash.java,v 1.6 2000/08/18 10:25:38 careck Exp $
003: *
004: */
005: package com.teamkonzept.lib;
006:
007: import java.sql.*;
008: import java.util.*;
009:
010: /**
011: * Die Klasse TKDBResult kreiert einen Vektor, desse Elemente Hashes sind.
012: * Diese Hashtables enthalten als Key den Tabellennamen des DB-Ergebnisses
013: * und als Value den wert eine Zeile zu den Tabellennamen.
014: *
015: * Beispiel:
016: * NAME ALTER ORT
017: * --------------------
018: * Hans 22 Berlin
019: * Susi 33 Bremen
020: * ... ... ...
021: * Tabellenname und Zeilenwert werden in einen hash abgelegt:
022: * {NAME=Hans, ALTER=22, ...} {NAME=SUSI,...,...}
023: * Diese Hashes werden in dieser Klasse erzeugt.
024: *
025: */
026: public class TKDBResultRowHash extends TKHashtable implements
027: TKDBResultRow {
028:
029: protected boolean hasResult = false;
030: //protected String colNames[] = null;
031:
032: //-- careck
033: protected Vector colNames = null;
034:
035: //--
036:
037: /**
038: * Konstruktor1
039: * ruft konstruktor2 auf
040: *
041: * @param ResultSet rs, Ausfuehrung eines Querys (SQL) =>
042: * ein ResultSet-Object wurde kreiert und wird uebergeben (JDBCD)
043: */
044: public TKDBResultRowHash(ResultSet rs) {
045: this (rs, new TKDBResultInfo(rs));
046: }
047:
048: /**
049: * Konstruktor2
050: *
051: * @param ResultSet rs, Ausfuehrung eines Querys (SQL) =>
052: * ein ResultSet-Object wurde kreiert und wird uebergeben (JDBCD)
053: * @param TKDBResultInfo info,Die Namen der Tabellen aus dem DB-Result werden in einem Array
054: * abgelegt und die Typen
055: */
056: public TKDBResultRowHash(ResultSet rs, TKDBResultInfo info) {
057: super (info.colCount);
058: //this.colNames = info.colNames;
059:
060: //-- careck
061: this .colNames = new Vector();
062: for (int i = 0; i < info.colNames.length; i++) {
063: this .colNames.addElement(info.colNames[i]);
064: }
065: //--
066:
067: getResult(rs, info);
068: }
069:
070: /**
071: * Der Hash wird gefuellt mit Key den Tabellennamen des DB-Ergebnisses
072: * und als Value den wert eine Zeile zu den Tabellennamen.
073: *
074: * @param ResultSet rs, Ausfuehrung eines Querys (SQL) =>
075: * ein ResultSet-Object wurde kreiert und wird uebergeben (JDBCD)
076: * @param TKDBResultInfo info,Die Namen der Tabellen aus dem DB-Result werden in einem Array
077: * abgelegt und die Typen
078: * @return true, wenn der Hash gefuellt wurde
079: */
080: public boolean getResult(ResultSet rs, TKDBResultInfo info) {
081: try {
082: if (!rs.next())
083: return false;
084: for (int i = 1; i <= info.colCount; i++) {
085: put(info.colNames[i - 1], TKDBObjectCreator
086: .getResultObject(rs, i, info.colTypes[i - 1]));
087: }
088: hasResult = true;
089: return true;
090: } catch (SQLException ex) {
091: TKDBLogger.logSQLException(ex);
092: }
093: return false;
094: }
095:
096: /**
097: *
098: * @return true, wenn das Result existiert
099: */
100: public final boolean hasResult() {
101: return hasResult;
102: }
103:
104: /**
105: * @param String colName, Name einer Spalte der DBErgebnistabelle
106: * @return den Namen einer Spalte der DBErgebnistabelle
107: */
108: public Object getColumn(String colName) {
109: return get(colName);
110: }
111:
112: /**
113: * @param int colIdx, Index fuer das Array mit den Namen
114: * einer Spalte der DBErgebnistabelle
115: * @return den Namen einer Spalte der DBErgebnistabelle
116: */
117: public Object getColumn(int colIdx) {
118: //return get( colNames [ colIdx ] );
119:
120: // careck ---
121: return get(colNames.elementAt(colIdx));
122: // ---
123: }
124:
125: /**
126: * @param int colIdx, Index fuer das Array mit den Label
127: * @return das Label
128: */
129: public String getColumnLabel(int colIdx) {
130: //return colNames[ colIdx ];
131:
132: // careck ---
133: return (String) colNames.elementAt(colIdx);
134: // ---
135: }
136:
137: /**
138: * @return die Laenge eines Namens in einer
139: * Spalte der DBErgebnistabelle
140: */
141: public int getColumnCount() {
142: //return colNames.length;
143:
144: //-- careck
145: return colNames.size();
146: //--
147: }
148:
149: /**
150: add a new column to the resultrow
151: @author careck
152: */
153: public void addColumn(String name, Object value) {
154: colNames.addElement(name);
155: put(name, value);
156: }
157: }
|