008 - Aplicación de Stock con Java. Hibernate – MySQL – JPA. Formulario referencial ClienteApp.

Empezamos viendo el diseño del formulario y con letras en rojo el nombre de variable que tendrán los objetos indicados. En clase anterior vimos como indicar nombre de variables específico a objetos. (img. 01)


(img. 01)

En la siguiente imagen vemos la lista de importaciones necesarias. Siempre va después del “package”. También vemos los métodos que tendremos que llamar desde el constructor y las variables de clase que necesitamos declarar. (img. 02)


(img. 02)

Siguiente imagen (img. 03) vemos los eventos que tendremos que utilizar. La forma de utilizar “Eventos” ya vimos anteriormente. Ejemplo: el evento “nuevoActionPerformed” se divide en dos partes “nuevo” que es el nombre de variable del objeto en particular y “ActionPerformed” el evento que estamos utilizando.


(img. 03)

A continuación vemos los “Métodos” que vamos a crear para hacer funcionar nuestro programa. Como siempre, el nombre de cada uno nos da una idea de la función que cumple.

Código Java
public void hibernateSession(){
st = HibernateUtil.getSessionFactory().openSession();
}
public void arranque(){
this.id.setEnabled(false);
this.id.setText(null);
this.des.setEnabled(false);
this.des.setText(null);
this.dir.setEnabled(false);
this.dir.setText(null);
this.tel.setEnabled(false);
this.tel.setText(null);
this.ruc.setEnabled(false);
this.ruc.setText(null);
this.nuevo.setEnabled(true);
this.guardar.setText("Guardar");
this.guardar.setEnabled(false);
this.editar.setEnabled(false);
this.eliminar.setEnabled(false);
this.jTable1.setEnabled(true);
tableModel();
cargarTabla();
}
public void tableModel(){
this.jTable1.getColumnModel().getColumn(0).setPreferredWidth(25);
this.jTable1.getColumnModel().getColumn(1).setPreferredWidth(200);
this.jTable1.getColumnModel().getColumn(2).setPreferredWidth(120);
this.jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
this.jTable1.getColumnModel().getColumn(4).setPreferredWidth(100);
model = (DefaultTableModel)this.jTable1.getModel();
model.setNumRows(0);
}
public void cargarTabla(){
st.beginTransaction();
List<Cliente> lista = (List<Cliente>)st.createQuery("From Cliente").list();
for(Cliente clie : lista){
model.addRow(new Object[]{
clie.getId(),clie.getDes(),clie.getDir(),clie.getTel(),clie.getRuc()
});
}
}
public void nuevo(){
this.id.setText("Auto");
this.des.setEnabled(true);
this.des.setText(null);
this.dir.setEnabled(true);
this.dir.setText(null);
this.tel.setEnabled(true);
this.tel.setText(null);
this.ruc.setEnabled(true);
this.ruc.setText(null);
this.nuevo.setEnabled(false);
this.guardar.setText("Guardar");
this.guardar.setEnabled(true);
this.jTable1.setEnabled(false);
}
public void guardarUno(){
if(this.des.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "Falta descripción del cliente.");
}
else{
if((this.dir.getText().isEmpty()) || (this.tel.getText().isEmpty() || (this.ruc.getText().isEmpty()))){
this.dir.setText("-");
this.tel.setText("-");
this.ruc.setText("-");
guardarDos();
}
else{
guardarDos();
}

}
}
public void guardarDos(){
if(this.guardar.getText().equals("Guardar")){
st.beginTransaction();
Cliente clie = new Cliente();
clie.setDes(this.des.getText());
clie.setDir(this.dir.getText());
clie.setTel(this.tel.getText());
clie.setRuc(this.ruc.getText());
st.save(clie);
st.getTransaction().commit();
JOptionPane.showMessageDialog(null, "Registro de cliente guardado.");
cargarTabla();
arranque();
}
else{
st.beginTransaction();
int selectedRow = this.jTable1.getSelectedRow();
int idClie = Integer.parseInt(String.valueOf(model.getValueAt(selectedRow, 0)));
Cliente clie = (Cliente)st.load(Cliente.class, idClie);
clie.setDes(this.des.getText());
clie.setDir(this.dir.getText());
clie.setTel(this.tel.getText());
clie.setRuc(this.ruc.getText());
st.update(clie);
st.getTransaction().commit();
JOptionPane.showMessageDialog(null, "Registro de cliente actualizado.");
cargarTabla();
arranque();
}
}
public void cargarCliente(){
if(this.jTable1.isEnabled()){
int selectedRow = this.jTable1.getSelectedRow();
int idClie = Integer.parseInt(String.valueOf(model.getValueAt(selectedRow, 0)));
Cliente clie = (Cliente)st.load(Cliente.class, idClie);
this.id.setText(String.valueOf(clie.getId()));
this.des.setText(clie.getDes());
this.dir.setText(clie.getDir());
this.tel.setText(clie.getTel());
this.ruc.setText(clie.getRuc());
this.editar.setEnabled(true);
this.eliminar.setEnabled(true);
this.nuevo.setEnabled(false);
}
}
public void editar(){
this.des.setEnabled(true);
this.dir.setEnabled(true);
this.tel.setEnabled(true);
this.ruc.setEnabled(true);
this.nuevo.setEnabled(false);
this.eliminar.setEnabled(false);
this.guardar.setEnabled(true);
this.guardar.setText("Actualizar");
this.jTable1.setEnabled(false);
}
public void eliminar(){
int showConfirmDialog = JOptionPane.showConfirmDialog(null, "Eliminación de Registro", "Desea eliminar este registro.", JOptionPane.YES_NO_OPTION);
if(showConfirmDialog == 1){
JOptionPane.showMessageDialog(null, "Registro no eliminado.");
}
else{
st.beginTransaction();
int selectedRow = this.jTable1.getSelectedRow();
Object valueAt = model.getValueAt(selectedRow, 0);
int idArt = Integer.parseInt(valueAt.toString());
Cliente clie = (Cliente)st.load(Cliente.class, idArt);
st.delete(clie);
st.getTransaction().commit();
JOptionPane.showMessageDialog(null, "Registro eliminado.");
arranque();
}

}

Por último vemos el formulario en ejecución y funcionando. (img. 4)


(img. 04)

Obs.: Resulta difícil explicar todo el proceso y función de cada línea de código por tanto pueden realizar un comentario con sus dudas.


3 comentarios :

  1. Saludos cordiales, soy nuevo programando y tengo una consulta, en el metodo cargarTabla, como identifico los campos que son null de la base de datos?...

    ResponderEliminar
  2. Que tal amigo, bueno normalmente no me preocupo por eso ya que durante el guardado de datos si el campos está vacío no se guarda como “null” por tanto al recuperar campos vacíos no devuelve ningún “null”. Espero haber ayudado con la consulta.

    ResponderEliminar