Vollständiger Quell-Code für die Klasse "PageGenerator"
/****************************************************************************************
* Klasse zur Generierung der dynamischen HTML-Seiten *
* *
****************************************************************************************/
import java.io.*;
import java.text.*;
import java.util.*;
public class PageGenerator {
/************************************************************************************
* Einlesen des Inhalts einer HTML-Datei in einen String *
* *
* @filename: Dateiname inkl. Pfad *
************************************************************************************/
public String readPage(String filename) throws Exception {
RandomAccessFile inFile = new RandomAccessFile(filename,"r");
byte buffer[] = new byte[(int)inFile.length()];
inFile.read(buffer);
return (new String(buffer));
}
/************************************************************************************
* Ersetzen von Platzhaltern im übergebenen Quelltext *
* *
* @src : zu durchsuchender Quelltext *
* @ins : neu einzufügende Zeichenfolge *
* @dummy: Zeichenfolge des zu ersetzenden Platzhalters *
************************************************************************************/
public String replaceParam(String src, String ins, String dummy) {
int pos = src.indexOf(dummy);
if (pos == -1) return src;
StringBuffer buf = new StringBuffer(src);
do {
buf.replace(pos,pos+dummy.length(),ins);
pos = buf.indexOf(dummy);
} while (pos != -1);
return buf.toString();
}
/************************************************************************************
* Generierung von Tabellen im HTML-Format *
* *
* @list : Stringliste mit den einzelnen Tabellenattributen *
* @cols : Anzahl der Spalten der Tabelle *
* @param: Parameterliste für Tabellen-Tags und Tabelleninhalte *
************************************************************************************/
public String formatTable(Vector list, int cols, String[] param) {
String result = "";
if (list != null) {
int anz = list.size();
int rows = anz/cols + anz%cols; // Anzahl der Zeilen ermitteln
for(int i=0; i<rows; i++) {
// einleitender TR-Tag mit event. Parametern
result += "<TR";
if (param[0] != "") result += " " + param[0];
result += ">\n";
// Spalteninhalte
for (int j=0; j<cols; j++) {
// einleitender TD-Tag mit event. Parametern
result += "<TD";
if (param[1] != "") result += " " + param[1];
result += ">";
// event. Parameter innerhalb der Spalte
if (param[2] != "") result += param[2];
// eigentlichen Spalteninhalt aus Stringliste einfügen
if (i*cols+j <=anz) result += (String)list.elementAt(i*cols+j);
// event. Parameter innerhalb der Spalte
if (param[3] != "") result += param[3];
// schließender TD-Tag
result += "</TD>\n";
}
// schließender TR-Tag
result += "</TR>\n";
}
}
return result;
}
/************************************************************************************
* Generierung von SELECT-Boxen im HTML-Format *
* *
* @list : Stringliste mit den einzelnen SELECT-Attributen *
* @param : Parameterliste für SELECT-Tags und SELECT-Box-Inhalte *
* @selected: Value-Wert, für den Vorauswahl getroffen werden soll *
* @mode : Rückgabewert für leere Liste: *
* (mode==0 -> Leer-String; mode!=0 -> leere SELECT-Box) *
************************************************************************************/
public String formatSelect(Vector list, String[] param, String selected, int mode) {
String result = "";
int anz = 0;
boolean empty = true;
if (list != null) {
empty = (list.size() <= 0);
anz = list.size();
}
// Kopf des SELECT-Tags mit seinen Parametern generieren
result = "<SELECT";
for (int i=0; i<param.length; i++) result += " " + param[i];
result += ">\n";
if (!empty) {
// Standard-Eintrag
result += "<OPTION value=''>Bitte wählen</OPTION>\n";
// Optionen generieren
for(int i=0; i<anz; i+=2) {
// Vorselektierung berücksichtigen
if (((String)list.elementAt(i)).equals(selected))
result += "<OPTION selected value='";
else
result += "<OPTION value='";
// Fortsetzung der OPTION-Zeichenfolge
result += (String)list.elementAt(i) + "'>"
+ (String)list.elementAt(i+1) + "</OPTION>\n";
}
}
// SELECT-Tag schließen
result += "</SELECT><BR>\n";
// wenn kein leeres SELECT-Objekt zurückgegeben werden soll
if ((mode == 0) && empty) result = "";
return result;
}
}