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;
    }
}