/*
kompilieren mit
javac frame.java

ausfuehren mit
java frame
*/

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Properties;
import java.sql.*;

public class frame extends Frame implements ActionListener {

  public static void main (String[] args) {
    new frame();
  }

  private Connection conn = null;
  private static TextField input = new TextField(60);
  private Button submitQuery = new Button("submitQuery");
  private TextArea output = new TextArea();
  private GridBagConstraints gbc = new GridBagConstraints();

  public frame () {
    super("JDBC Frame");
    try {
        Properties conn_props = new Properties();
        try {
            conn_props.load(new FileInputStream("jdbc.props"));
            // es muss eine Datei jdbc.props mit folgendem Inhalt erstellt werden:
            //user=<username>
            //password=<password>
        } catch (IOException e) {e.printStackTrace();}
      DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
      String url = "jdbc:oracle:thin:@oracle11.informatik.uni-goettingen.de:1521:dbis";
      conn = DriverManager.getConnection(url,conn_props);
    }
    catch (SQLException e) {
      System.out.println("Connection failed");
      System.exit(1);
    }
    setLayout(new GridBagLayout());
    input.addActionListener(this);
    submitQuery.addActionListener(this);
    gbc.gridx = 0;
    gbc.gridy = 0;
    add(input, gbc);
    gbc.gridy = 1;
    add(output, gbc);
    gbc.gridx = 1;
    gbc.gridy = 0;
    add(submitQuery, gbc);

    addWindowListener(new WindowAdapter() {
      public void windowClosing (WindowEvent e) {
        System.exit(0);
      }
    });
    pack();
    setVisible(true);
  }

  public void actionPerformed (ActionEvent e) {
    Object origin = e.getSource();
    // Der Compiler wird hier wahrscheinlich meckern, solange
    // keine Methode aufgerufen wird, die eine SQLException werfen kann,
    // wie z.B. displayResult() !!
    try {
      Statement stmt = conn.createStatement ();
      if ( origin == submitQuery ) {
        String query = input.getText();
        // fuehre Befehl aus ...
        // ... und gebe Ergebnis mittels displayResult aus

        //to implement
        return;
      }
    }
    catch (SQLException exc) {
      output.setText("Fehler beim Ausfuehren des Befehls aufgetreten");
    }
  }

  private void dispResult (ResultSet rs)
    throws SQLException {
      // to be implemented
  }
}
