¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Java y Eclipse
  3. Aplicación multitabla
Extrait - Java y Eclipse Desarrolle una aplicación con Java y Eclipse (2a edición)
Extractos del libro
Java y Eclipse Desarrolle una aplicación con Java y Eclipse (2a edición)
1 opinión
Volver a la página de compra del libro

Aplicación multitabla

Introducción

Este capítulo está dedicado a los otros dos módulos importantes del proyecto, los módulos artículo y pedido.

En la gestión de clientes, se ha manipulado una sola tabla de la base de datos. Esta vez, el trabajo abarca un entorno multitabla.

Se usa también el design pattern MVC. Se expusieron y explicaron los conceptos subyacentes en el capítulo Modelo MVC.

Clases asociadas

A diferencia del módulo cliente, los módulos artículo y pedido hacen intervenir las relaciones entre diferentes objetos.

Por ejemplo, un pedido hace referencia a líneas de pedido, que se almacenan físicamente en una tabla separada. Esta referencia se establece gracias al sistema de clave primaria - clave foránea: para cada línea de pedido de la tabla correspondiente, existe una columna que indica la clave primaria de la tabla asociada. Esta columna almacena la clave foránea del pedido para cada línea.

JPA permite gestionar directamente este principio de clave, y por lo tanto preservar la integridad referencial de la base de datos: la base de datos queda en un estado coherente.

Sin embargo es importante comprender este principio ya que las consultas utilizadas para interrogar a la base de datos deben tener en cuenta este mecanismo.

Las clases asociadas son de dos tipos: entidad y control.

El tipo Entidad hace referencia a una base de datos que modeliza el dominio, en el package entidad, y a una clase CRUD, que describe las operaciones posibles, situada en el package entidad.crud.

El tipo control hace referencia a una clase que modeliza el modelo del componente gráfico asociado, situado en el package control.modelo y a una clase que enlaza el CRUD con los modelos en el package control.

Para no hacer este capítulo innecesariamente pesado, las clases asociadas están disponible...

Gestión de los artículos

Se hace un resumen del punto en el que se encuentran los artículos. La aplicación ya dispone de:

  • la clase Articulo,

  • la clase ArticuloCrud,

  • la clase FArticulos actualmente como maqueta.

1. Visualización

Para mostrar los datos de los artículos en el JTable de la clase FArticulos, los pasos son idénticos a los vistos para la clase PClientes del capítulo Modelo MVC:

  • Creación de la clase que representa el modelo de datos gráfico.

  • Añadir el modelo al JTable para su visualización.

a. Creación del modelo gráfico

 Cree una nueva clase ModeloArticulos y guárdela en el package control.modelo.

El código es muy similar al de la clase ModeloClientes.

package control.modelo;  
  
import java.util.ArrayList;  
import java.util.List;  
  
import javax.swing.table.AbstractTableModel;  
  
import entidad.Articulo;  
  
public class ModeloArticulos extends AbstractTableModel {  
   private static final long serialVersionUID = 1L;  
   private final List<Articulo> losDatos;  
   private final String[] losTitulos =   
               {"Código", "Código Categoría", "Designación",  
                "Cantidad", "Precio unitario"};  
  
   public ModeloArticulos(List<Articulo> losArticulos) {  
       losDatos = new ArrayList<>(losArticulos);  
   }  
     
   public int getRowCount() {  
       return losDatos.size();  
   }  
   public int getColumnCount() {  
       return losTitulos.length;  
   }  
   public String getColumnName(int columnIndex) {  
       return losTitulos[columnIndex];  
   }  
     
   public Object getValueAt(int rowIndex, int columnIndex) {  
       Articulo...

Gestión de pedidos

Se retoma los mismos pasos que para la gestión de clientes apoyándose en el design pattern MVC, con la excepción de la parte donde se añade un pedido ya que esto se realiza desde la ventana principal del módulo.

Para los pedidos, se disponen dos ventanas:

  • FPedidos: accesible desde la ventana de bienvenida para añadir datos, de modo que es la primera en mostrarse.

  • FPedidosExistentes: accesible desde la ventana FPedidos y que reagrupa las demás funcionalidades (eliminar, buscar, vista previa, imprimir y exportar).

1. Visualización

Se realizan las siguientes operaciones como anteriormente:

  • Creación de la clase que contiene el modelo de datos gráficos.

  • Añadir el modelo al JTable para visualizarlo.

a. Creación del modelo gráfico

 Cree una nueva clase ModeloPedidos y guárdela en el package control.modelo.

package control.modelo; 
 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 
 
import javax.swing.table.AbstractTableModel; 
 
import entidad.Cliente; 
import entidad.Pedido; 
 
public class ModeloPedidos extends AbstractTableModel { 
   private static final long serialVersionUID = 1L; 
 
   private static final Comparator<? super Pedido> COMPARADOR 
= new Comparator<Pedido>() { 
 
       @Override 
       public int compare(Pedido pedido1, Pedido pedido2) { 
           // los pedidos más recientes  
           // son los primeros en mostrarse 
           return 
                pedido2.getInstant() 
                          .compareTo(pedido1.getInstant()); 
       } 
   }; 
 
   private final List<Pedido> losDatos; 
   private final String[] losTitulos =  
                {"Código", "Cliente", "Modo de pago",  
                "Total con IVA"...