Vollständiger Quell-Code für das Servlet "Catalog"
/****************************************************************************************
* Klasse zur Generierung des Menüs zur Auswahl eines Kataloges bzw. eines *
* Unterkataloges *
* *
****************************************************************************************/
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class Catalog extends HttpServlet {
private OraDBConnect dbcon = null;
private PageGenerator pageGen = null;
private String page = null;
/************************************************************************************
* Initialisierungsabschnitt des Servlets *
* *
* - Verbindungsaufbau zur Datenbank *
* - Erzeugung des Objekts zur Generierung der dynamischen HTML-Seiten *
************************************************************************************/
public void init() throws ServletException {
try {
dbcon = new OraDBConnect("jdbc:oracle:thin:user/passwd@141.57.9.9:1521:IMNLehre");
pageGen = new PageGenerator();
}
catch (SQLException e) {
throw new UnavailableException(this, "Initialisierungsfehler: " + e);
}
}
/************************************************************************************
* Beendigungsabschnitt des Servlets *
* *
* - Verbindungsabbau zur Datenbank *
************************************************************************************/
public void destroy() {
try {
dbcon.OraDBClose();
}
catch (SQLException e) {
// sollte nicht vorkommen
}
}
/************************************************************************************
* Verarbeitungsabschnitt des Servlets für Request mittels HTTP-GET-Operation *
* *
************************************************************************************/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String selected_id = null;
String options = "";
String gid = null;
String mgid = null;
String[] param1 = {"MUTTERGRUPPE_ID"};
String[] param2 = {"GID","NAME"};
String[] args = {"name=\"level1\"","width=\"200\"","style=\"width:200px\"",
"onChange=\"changeMenu(document.frmCatalog.level1);\""};
Vector result = null;
boolean stop = false;
int level = 1;
try {
// selektierten Wert der Auswahlbox abspeichern
selected_id = request.getParameter("n_group_id");
if (selected_id == null) selected_id = "";
// Ebene 1 ... Ebene n-1
gid = selected_id;
mgid = gid;
if (!selected_id.equals("")) {
do {
// Muttergruppe ermitteln
result = dbcon.OraDBgetResult("SELECT muttergruppe_id FROM struktur WHERE gid=" + gid, param1, 0);
if (result != null) {
mgid = (String)result.elementAt(0);
if (!gid.equals(mgid)) {
// Aufbau anhand Muttergruppe
result = dbcon.OraDBgetResult("SELECT name,gid FROM struktur WHERE muttergruppe_id=" + mgid + " AND muttergruppe_id<>gid", param2, 0);
// Formatierung als HTML-SELECT
options = pageGen.formatSelect(result, args, gid, 0) + "\n" + options;
// Gruppen-ID für nächste Ebene neu initialisieren
gid = mgid;
// Bezeichnung des OPTION-Tags für nächste Ebene anpassen
level++;
args[0] = "name=\"level"+ level +"\"";
args[3] = "onChange=\"changeMenu(document.frmCatalog.level" + level + ");\"";
}
else stop = true;
}
else stop = true;
} while (!stop);
}
// Ebene n (Katalogebene)
result = dbcon.OraDBgetResult("SELECT DISTINCT s.name,s.gid FROM katalog k,struktur s" + " WHERE k.aktiv=1 AND (s.typnr=1 OR s.typnr=4)", param2, 0);
// Formatierung als HTML-SELECT
options = pageGen.formatSelect(result, args, mgid, 0) + "\n" + options;
// Ebene 0 aufbauen, falls Daten vorhanden (unterste Ebene)
if (!selected_id.equals("")) {
args[0] = "name=\"level0\"";
args[3] = "onChange=\"changeMenu(document.frmCatalog.level0);\"";
result = dbcon.OraDBgetResult("SELECT name,gid FROM struktur WHERE muttergruppe_id=" + selected_id + " AND muttergruppe_id<>gid", param2, 0);
// Formatierung als HTML-SELECT
options += pageGen.formatSelect(result, args, mgid, 0);
}
// Erzeugung und Ausgabe der HTML-Seite
try {
page = pageGen.readPage("/export/pub/jakarta-tomcat-4.0.3/webapps/adia/servlets/navi.html");
page = pageGen.replaceParam(page,options,"@options@");
}
catch (Exception e) {
page = e.toString();
}
}
catch (SQLException e) {
page = e.toString();
}
out.println(page);
}
/************************************************************************************
* Verarbeitungsabschnitt des Servlets für Request mittels HTTP-POST-Operation *
* *
************************************************************************************/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
// Ausführen des Verarbeitungsabschnitts für die GET-Operation
doGet(request, response);
}
}