/*
 * Title:        Agenda Telefonica
 * Description:  Agenda Telefonica com consulta
 * Copyright:    Copyright (c) 2001
 * Company:      GuaruByte technologies Ltda
 * @author Carlos Zaparoli
 * @version 1.0
 */

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;

public class Grid extends JFrame{
  JTextField TextFieldDriver = new JTextField();
  JTextField TextFieldURL = new JTextField();
  JLabel LabelDriver = new JLabel();
  JLabel LabelURL = new JLabel();
  JScrollPane jScrollPane1 = new JScrollPane();
  JTextArea TextAreaSql = new JTextArea();
  JScrollPane jScrollPane2 = new JScrollPane();
  JTable gridTable = new JTable();
  JButton ButtonConecta = new JButton();
  interbase.interclient.Statement query = null;
  JButton buttonAnteriorRegistro = new JButton();
  JButton buttonProximoRegistro1 = new JButton();
  java.sql.Connection c;
  public Grid() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }

  }
  public static void main(String[] args) {
    Grid grid1 = new Grid();
    grid1.setSize(400,600);
    grid1.setDefaultCloseOperation(3); // fechar
    grid1.show();
  }
  private void jbInit() throws Exception {
    TextFieldDriver.setText("interbase.interclient.Driver");
    TextFieldDriver.setBounds(new Rectangle(16, 37, 171, 21));
    this.getContentPane().setLayout(null);
    TextFieldURL.setText("jdbc:interclient://note/c:/windows/jbproject/Chat/Dbchat.gbd");
    TextFieldURL.setBounds(new Rectangle(207, 37, 171, 21));
    LabelDriver.setText("Driver");
    LabelDriver.setBounds(new Rectangle(15, 15, 41, 17));
    LabelURL.setText("URL");
    LabelURL.setBounds(new Rectangle(208, 15, 41, 17));
    jScrollPane1.setBounds(new Rectangle(17, 111, 370, 68));
    jScrollPane2.setBounds(new Rectangle(20, 197, 363, 256));
    TextAreaSql.setText("select * from agenda_table");
    TextAreaSql.addKeyListener(new java.awt.event.KeyAdapter() {
      public void keyReleased(KeyEvent e) {
        executaSql(e);
      }
    });
    ButtonConecta.setText("Conecta");
    ButtonConecta.setBounds(new Rectangle(149, 70, 103, 27));
    ButtonConecta.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        conecta(e);
      }
    });
    buttonAnteriorRegistro.setText("<<");
    buttonAnteriorRegistro.setBounds(new Rectangle(25, 476, 52, 27));
/*
    buttonAnteriorRegistro.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        registroAnterior(e);
      }
    });
*/
    buttonProximoRegistro1.setBounds(new Rectangle(97, 477, 52, 27));
    buttonProximoRegistro1.setText(">>");
    this.getContentPane().add(TextFieldDriver, null);
    this.getContentPane().add(LabelDriver, null);
    this.getContentPane().add(TextFieldURL, null);
    this.getContentPane().add(LabelURL, null);
    this.getContentPane().add(ButtonConecta, null);
    this.getContentPane().add(jScrollPane1, null);
    this.getContentPane().add(jScrollPane2, null);
    this.getContentPane().add(buttonAnteriorRegistro, null);
    jScrollPane2.getViewport().add(gridTable, null);
    jScrollPane1.getViewport().add(TextAreaSql, null);
    this.getContentPane().add(buttonProximoRegistro1, null);
  }

  void executaSql(KeyEvent evt) {
//    System.out.println(evt.getKeyCode());
    interbase.interclient.ResultSet rs;
    if (evt.getKeyCode()==10){
      if( query == null)
        return;
      Object dados[][]=new Object[1][1],colunas[]=new Object[1];

      try{
        rs = (interbase.interclient.ResultSet) query.executeQuery("select count(*) from usuario");
        int linha = 0;
        rs.next();
        linha = rs.getInt(1);
        rs = (interbase.interclient.ResultSet)query.executeQuery(TextAreaSql.getText());
        interbase.interclient.ResultSetMetaData md;
        md = (interbase.interclient.ResultSetMetaData)rs.getMetaData();


//        new AlertDialog("FetchSize = "+rs.getFetchSize()).show();
//        dados = new Object[rs.getFetchSize()][md.getColumnCount()];
        dados = new Object[linha][md.getColumnCount()];
        colunas = new Object[md.getColumnCount()];
        for(int i = 1; i<=md.getColumnCount();i++){
          colunas[i-1] = md.getColumnName(i);
        }
        for(int i = 0; rs.next();i++){
          for(int j = 1 ; j<=md.getColumnCount();j++){
            int tipo = md.getColumnType(j);

            switch(tipo){
              case Types.INTEGER:
                dados[i][j-1] = String.valueOf(rs.getInt(j));
                break;
              case Types.VARCHAR:
                dados[i][j-1] = rs.getString(j);
                break;
              case Types.DATE:
                String dat = null;
                Calendar cl = Calendar.getInstance();
                cl.setTime(rs.getDate(md.getColumnName(j)));
                dat = cl.get(Calendar.DAY_OF_MONTH)+"/"
                    + cl.get(Calendar.MONTH)+"/"
                    + cl.get(Calendar.YEAR);
                dados[i][j-1] = dat;
                break;
              }
            }
          }
        }
        catch(java.sql.SQLException e){
  //        new AlertDialog(e.getMessage()).show();
            e.printStackTrace();
        }
        gridTable = new JTable(dados,colunas);
        jScrollPane2.getViewport().add(gridTable, null);
      }
    }
  void conecta(ActionEvent evt) {
       interbase.interclient.DataSource dataSource = new interbase.interclient.DataSource ();
       dataSource.setServerName ("localhost");
       dataSource.setDatabaseName (TextFieldURL.getText().trim());
       javax.naming.Context context = new javax.naming.InitialContext();
       context.bind ("jdbc\banco", dataSource);


      // Set the standard properties
      dataSource.setDataSourceName ("Dbchat");
      dataSource.setDescription ("An example database of employees");
      dataSource.setPortNumber (3060);
      dataSource.setNetworkProtocol ("jdbc:interbase:");
      dataSource.setRoleName (null);
      // Set the non-standard properties
      dataSource.setCharSet (interbase.interclient.CharacterEncodings.NONE);
      dataSource.setSuggestedCachePages (0);
      dataSource.setSweepOnConnect (false);

    try{
      // Connect to the InterClient DataSource
      dataSource.setLoginTimeout (10);
      c = dataSource.getConnection ("sysdba", "masterkey");
/*      Class.forName(TextFieldDriver.getText());
        con = DriverManager.getConnection(TextFieldURL.getText().trim(),"sysdba","masterkey");
 */
      query = (interbase.interclient.Statement)c.createStatement();

    }
/*    catch(ClassNotFoundException e){
      new AlertDialog(e.getMessage()).show();
      e.printStackTrace();
    }  */
    catch (SQLException e){
//      new AlertDialog(e.getMessage()).show();
      e.printStackTrace();
      System.out.println(e.getMessage());
    }
    c.close();

  }
/*
  void registroAnterior(ActionEvent e) {
    gridTable.set
 */
}


