/**
 * Democode, der die Programmierung einer 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.)
 */
package demoservlet;
import java.sql.*;

import javax.naming.InitialContext;
import javax.sql.DataSource;

public class NotenBean {
  Connection conn = null;
  String conn_error = null;
  
  
  
  
  public NotenBean() {
  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 generiereDurchschnittsnote(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 p.PersNr, avg(p.Note) as DNote "+
				"from pruefen p, professoren prof "+
				"where prof.Name = ? "+
				"and prof.PersNr = p.PersNr " +
				"group by p.PersNr");  
      stmt.setString(1, name);
      rs = stmt.executeQuery();
      rs.next();
      result.append("Durchschnittsnote von Prof " + 
      		name + ": " + rs.getString("DNote"));            
    } 
    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) {}
  }
}
