/**
 * Democode, der die Programmierung einer Java Bean verdeutlicht.
 *
 *
 * Hinweis: Das Servlet wurde am Lehrstuhl III: Datenbanksysteme der
 *          TU München entwickelt und funktioniert in dieser Form nur am Pool
 *          des Lehrstuhls.  Soll das Servlet in anderen Umgebungen ausgeführt
 *          werden, müssen verschiedene Anpassungen vorgenommen werden (z.B.
 *          die Datenbank-Anbindung.)
 *
 * @author Stefan Seltzsam 
 */
package demoservlet;
import java.sql.*;

import javax.naming.InitialContext;
import javax.sql.DataSource;

public class VorlesungenBean {
  Connection conn = null;
  String conn_error = null;
  
  
  
  
  public VorlesungenBean() {
  try
    {
      InitialContext initCtx = new InitialContext();
      DataSource source = (DataSource)initCtx.lookup( "java:comp/env/jdbc/db2" );
      conn = source.getConnection();
    } catch (Exception e) {
      conn_error=e.toString();}
  }

  public String generiereVorlListe(String name) {
  	PreparedStatement stmt = null;
    ResultSet rs = null;
    if (conn == null)
      return("Probleme mit der Datenbank: " + conn_error + " </br>");
    StringBuffer result = new StringBuffer();    
    try {      
      stmt = conn.prepareStatement(
	  			 "select v.VorlNr, v.Titel, v.SWS " +
	         "from Vorlesungen v, Professoren p " +
	         "where v.gelesenVon = p.PersNr and " +
	         "p.Name = ? ");      
      stmt.setString(1, name);      
      rs = stmt.executeQuery();      
      result.append("<UL>");
      while (rs.next())
        result.append("<LI>" + rs.getInt("VorlNr") +
                      ": " + rs.getString("Titel") +
                      " (mit " + rs.getInt("SWS") + "SWS)");      
      result.append("</UL>");
    } 
    catch (SQLException e) {
      result = new StringBuffer("Bei der Abfrage für " + name +
                  " trat ein Fehler auf: " + e.getMessage() + "<br>" );
    }
    return result.toString();
  }
  
  public void finalize() {
    try {
      if (conn != null) conn.close();
    } catch (SQLException ignorieren) {}
  }
}
