import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.table.*;
//DataBase Packages
import java.net.*;
import java.io.*;
import java.sql.*;
//Main Class
class directorio_pacientes extends JFrame implements ActionListener
{
private Statement st;
private Connection con;
//List of Labels
private JLabel lblclave_anterior;
private JLabel lblclave_paciente;
private JLabel lblsexo;
private JLabel lbledad;
private JLabel lblnombre;
private JLabel lbldireccion;
private JLabel lbltelefono;
//List of TextFields
private JTextField txtclave_anterior;
private JTextField txtclave_paciente;
private JTextField txtsexo;
private JTextField txtedad;
private JTextField txtnombre;
private JTextField txtdireccion;
private JTextField txttelefono;
//List of Buttons
private JButton btnSaveAdd;
private JButton btnSaveEdit;
private JButton btnSaveDelete;
private JButton btnAdd;
private JButton btnEdit;
private JButton btnDelete;
private JButton btnExit;
private JButton btnRefresh;
private JButton btnCancel;
//List of Panel
private JPanel btnpanel;
private JPanel panel;
private JTable table;
//Table
private DefaultTableModel tmodel;
//Container
private Container cpane;
directorio_pacientes(int choice)
{
switch(choice)
{
case 1:
//Initial Window
setTitle("DIRECTORIO DE PACIENTES");
setBounds(1, 200, 800, 230);
setResizable(false);
//cotainer
cpane = getContentPane();
//components
tmodel = new DefaultTableModel();
table = new JTable(tmodel);
SetColHeader();
btnpanel = new JPanel(new GridLayout(1, 5, 5, 0));
btnAdd = new JButton ("Agregar");
btnEdit = new JButton ("Modificar");
btnDelete = new JButton ("Eliminar");
btnRefresh = new JButton ("Actualizar");
btnExit = new JButton ("Salir");
btnAdd.addActionListener(this);
btnEdit.addActionListener(this);
btnDelete.addActionListener(this);
btnRefresh.addActionListener(this);
btnExit.addActionListener(this);
btnpanel.add(btnAdd);
btnpanel.add(btnEdit);
btnpanel.add(btnDelete);
btnpanel.add(btnRefresh);
btnpanel.add(btnExit);
cpane.add(new JScrollPane(table));
cpane.add(btnpanel, BorderLayout.SOUTH);
break;
case 2:
//Appending Window
setTitle("Agregado de datos...");
setBounds(200, 200, 500, 200);
setResizable(false);
//cotainer
cpane = getContentPane();
cpane.setLayout(new FlowLayout());
//Components
panel = new JPanel(new GridLayout(8, 1, 5, 0));
lblclave_paciente = new JLabel(" Clave del paciente ");
lblnombre = new JLabel(" Nombre del paciente ");
lbldireccion = new JLabel(" Dirección ");
lbltelefono = new JLabel(" Teléfono ");
lbledad = new JLabel(" Edad ");
lblsexo = new JLabel(" Sexo ");
txtclave_paciente = new JTextField(15);
txtnombre = new JTextField(15);
txtdireccion = new JTextField(15);
txttelefono = new JTextField(15);
txtedad = new JTextField(3);
txtsexo = new JTextField(1);
panel.add(lblclave_paciente);
panel.add(txtclave_paciente);
panel.add(lblnombre);
panel.add(txtnombre);
panel.add(txtnombre);
panel.add(lbldireccion);
panel.add(txtdireccion);
panel.add(lbltelefono);
panel.add(txttelefono);
panel.add(lbledad);
panel.add(txtedad);
panel.add(lblsexo);
panel.add(txtsexo);
btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
btnSaveAdd = new JButton ("Guardar");
btnCancel = new JButton ("Cancelar");
btnSaveAdd.addActionListener(this);
btnCancel.addActionListener(this);
btnpanel.add(btnSaveAdd);
btnpanel.add(btnCancel);
cpane.add(panel);
cpane.add(btnpanel, BorderLayout.EAST);
break;
case 3:
//Editing window
setTitle("Modificación de datos...");
setBounds(200, 200, 500, 250);
setResizable(false);
//cotainer
cpane = getContentPane();
cpane.setLayout(new FlowLayout());
//Components
panel = new JPanel(new GridLayout(10, 1, 5, 0));
lblclave_anterior = new JLabel(" Clave anterior del paciente ");
txtclave_anterior = new JTextField(15);
lblclave_paciente = new JLabel(" Nueva clave del paciente ");
lblnombre = new JLabel(" Nombre del paciente ");
lbldireccion = new JLabel(" Dirección ");
lbltelefono = new JLabel(" Teléfono ");
lbledad = new JLabel(" Edad ");
lblsexo = new JLabel(" Sexo ");
txtclave_paciente = new JTextField(15);
txtnombre = new JTextField(15);
txtdireccion = new JTextField(15);
txttelefono = new JTextField(15);
txtedad = new JTextField(3);
txtsexo = new JTextField(1);
panel.add(lblclave_anterior);
panel.add(txtclave_anterior);
panel.add(lblclave_paciente);
panel.add(txtclave_paciente);
panel.add(lblnombre);
panel.add(txtnombre);
panel.add(lbldireccion);
panel.add(txtdireccion);
panel.add(lbltelefono);
panel.add(txttelefono);
panel.add(lbledad);
panel.add(txtedad);
panel.add(lblsexo);
panel.add(txtsexo);
btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
btnSaveEdit = new JButton ("Guardar");
btnCancel = new JButton ("Cancelar");
btnSaveEdit.addActionListener(this);
btnCancel.addActionListener(this);
btnpanel.add(btnSaveEdit);
btnpanel.add(btnCancel);
cpane.add(panel);
cpane.add(btnpanel, BorderLayout.EAST);
break;
case 4:
//Deleting window
setTitle("Eliminando datos...");
setBounds(200, 200, 300, 125);
setResizable(false);
//cotainer
cpane = getContentPane();
cpane.setLayout(new FlowLayout());
//Components
panel = new JPanel(new GridLayout(2, 1, 5, 0));
lblclave_paciente = new JLabel("Clave del paciente a eliminar ");
txtclave_paciente = new JTextField(15);
panel.add(lblclave_paciente);
panel.add(txtclave_paciente);
btnpanel = new JPanel(new GridLayout(2, 1, 10, 5));
btnSaveDelete = new JButton ("Eliminar");
btnCancel = new JButton ("Cancelar");
btnSaveDelete.addActionListener(this);
btnCancel.addActionListener(this);
btnpanel.add(btnSaveDelete);
btnpanel.add(btnCancel);
cpane.add(panel);
cpane.add(btnpanel, BorderLayout.EAST);
break;
}
//Window Properties
setDefaultCloseOperation(HIDE_ON_CLOSE);
setVisible(true);
//conection to DataBase
conectar_a_bd();
}
public void actionPerformed (ActionEvent ae)
{
if (ae.getSource() == btnAdd)
{
new directorio_pacientes(2);
}
else if (ae.getSource() == btnEdit)
{
new directorio_pacientes(3);
}
else if (ae.getSource() == btnDelete)
{
new directorio_pacientes(4);
}
else if (ae.getSource() == btnExit)
{
System.exit(0);
}
else if (ae.getSource() == btnCancel)
{
setVisible(false);
}
else if(ae.getSource() == btnSaveAdd)
{
agregar_datos(txtclave_paciente.getText(), txtnombre.getText(), txtdireccion.getText(),txtsexo.getText(), txttelefono.getText(),txtedad.getText());
txtclave_paciente.setText("");
txtnombre.setText("");
txtdireccion.setText("");
txttelefono.setText("");
txtedad.setText("");
txtsexo.setText("");
}
else if(ae.getSource() == btnSaveEdit)
{
modificar_datos(txtclave_paciente.getText(), txtnombre.getText(), txtdireccion.getText(),txttelefono.getText(), txtclave_anterior.getText(),txtedad.getText(), txtsexo.getText());
txtclave_anterior.setText("");
txtclave_paciente.setText("");
txtnombre.setText("");
txtdireccion.setText("");
txttelefono.setText("");
}
else if(ae.getSource() == btnSaveDelete)
{
eliminar_datos(txtclave_paciente.getText());
txtclave_paciente.setText("");
}
else if(ae.getSource() == btnRefresh)
{
extraer_datos();
}
}
public static void main(String arg[])
{
directorio_pacientes c = new directorio_pacientes(1);
c.extraer_datos();
}
private void SetColHeader()
{
tmodel.addColumn("Clave del paciente");
tmodel.addColumn("Nombre");
tmodel.addColumn("Dirección");
tmodel.addColumn("Sexo");
tmodel.addColumn("Teléfono");
tmodel.addColumn("Edad");
}
private void conectar_a_bd ()
{
try
{
String dsn = "Medi";
//load driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//make connection
con = DriverManager.getConnection("jdbc:odbc:" + dsn);
//create statement
st = con.createStatement();
}
catch (Exception e) {System.out.println(e);}
}
private void agregar_datos (String clave, String nombre, String direccion, String telefono, String edad, String sexo)
{
try
{
//prepare statement
String qry = "Insert into directorio_paciente values (?, ?, ?, ?, ?, ?)";
System.out.println(clave + "\t"+nombre+ "\t"+direccion+ "\t"+telefono+ "\t"+edad+ "\t"+sexo);
//System.out.println("Read only "+con.isReadOnly());
//System.out.println("Closed "+con.isClosed());
PreparedStatement ps = con.prepareStatement(qry);
ps.setString(1, clave);
ps.setString(2, nombre);
ps.setString(3, direccion);
ps.setString(4,telefono);
ps.setString(5,edad);
ps.setString(6,sexo);
ps.executeUpdate();
}
catch(Exception e) {System.out.println(e + "\t" + e.getMessage()); }
}
private void modificar_datos (String clave, String nombre, String direccion, String telefono, String clave_anterior, String edad, String sexo)
{
try
{
//prepare statement
String qry = "Update directorio_paciente set clave = ?, nombre = ?, direccion = ?, sexo = ?, telefono = ?, edad = ? where clave = ?";
PreparedStatement ps = con.prepareStatement(qry);
ps.setString(1, clave);
ps.setString(2, nombre);
ps.setString(3, direccion);
ps.setString(4, sexo);
ps.setString(5, telefono);
ps.setString(6, edad);
ps.setString(7, clave_anterior);
ps.executeUpdate();
}
catch(Exception e) {System.out.println(e); }
}
private void eliminar_datos (String cond)
{
try
{
//prepare statement
String qry = "Delete from directorio_paciente where clave = ?";
PreparedStatement ps = con.prepareStatement(qry);
ps.setString(1, cond);
ps.executeUpdate();
}
catch(Exception e) {System.out.println(e); }
}
private void extraer_datos ()
{
try
{
int row = tmodel.getRowCount();
while(row > 0)
{
row--;
tmodel.removeRow(row);
}
//execute query
ResultSet rs = st.executeQuery("Select * from directorio_paciente");
//get metadata
ResultSetMetaData md = rs.getMetaData();
int colcount = md.getColumnCount();
Object[] data = new Object[colcount];
//extracting data
while (rs.next())
{
for (int i=1; i<=colcount; i++)
{
data[i-1] = rs.getString(i);
}
tmodel.addRow(data);
}
}
catch(Exception e) {System.out.println(e); }
}
}