You are on page 1of 128

AP7-AA3-Ev1-Desarrollo del Tutorial Construcción de

aplicación con Java

Claudia Milena Benavides Salazar

Servicio Nacional de Aprendizaje SENA


Pasto Nariño

Análisis y Desarrollo de Sistemas de Información


Mayo 2019
TUTORIAL CREAR APLICACIÓN JAVA

INTRODUCCIÓN 02
Sesión 1: Construyendo la base de datos 03
Sesión 2: Desarrollando la Interfaz Gráfica de Usuario (GUI) 25
Sesión 3: Creando el Modelo de la Aplicación 46
Sesión 4: Enlazando con el Controlador 56
Sesión 5: Probando el Modelo Vista Controlador MVC 70
Sesión 6: Accediendo a la Base de Datos con JDBC 78
Sesión 7: Accediendo a la Base de Datos con JPA 89
Sesión 8: Generando reportes impresos 108
TUTORIAL PARA CREAR APLICACIONES CON JAVA

INTRODUCCIÓN

El presente tutorial es una guía paso a paso sobre el desarrollo completo


de un caso de uso en el lenguaje de programación JAVA, comprende desde
el desarrollo de la base de datos hasta la generación de reportes impresos.

El caso de uso que servirá de fuente para el desarrollo de la aplicación es


“Administrar datos paciente”, caso de uso del Sistema Gestión Citas que
se ha venido desarrollando:
SESIÓN 1: CONSTRUYENDO LA BASE DE DATOS

El sistema manejador de bases de datos seleccionado para este ejemplo


es Oracle Database 10g express edition, el instalador debe ser descargado
de la siguiente ruta:

Actividades/Fase Desarrollo/ Actividad de Proyecto 7/ Materiales


Requeridos y de Apoyo/

INSTALACIÓN DE ORACLE DATABASE 10G EXPRESS EDITION

• Una vez descargado el instalador desde la plataforma o desde una


fuente externa, procedemos a su instalación haciendo doble click en el
respectivo ejecutable, con lo cual inmediatamente iniciará el proceso de
instalación:

FAVA - Formación en Ambientes Virtuales de Aprendizaje


• Luego de hacer click en el botón Siguiente, debemos aceptar los
términos de la licencia y hacer click nuevamente en Siguiente:

• Se presenta una ventana donde se indica la carpeta destino donde


quedarán los archivos de la base de datos y el espacio requerido para su
instalación. Hacemos click en Siguiente:
• Ingresamos una contraseña, la cual servirá para conectarnos como
usuario System. El usuario System o Sys es el administrador del
servidor Oracle y es quien podrá realizar todas las tareas administrativas
en el servidor Oracle. Para este ejemplo usaremos como contraseña la
palabra adsi por lo tanto debemos escribir adsi en ambas cajas de texto
y hacer click en Siguiente:

• Aparecen los datos de resumen de los cuales es recomendable


tomar nota. Hacemos click en Instalar
• Finalizado el proceso de instalación, se presenta un mensaje de con-
firmación. Hacemos click en Terminar

1. Comprobar el funcionamiento del servidor Oracle:

• Para comprobar el funcionamiento del servidor Oracle, debemos


introducir el Usuario system y la contraseña que definimos durante la
instalación adsi en la ventana de conexión a Base de Datos que se inicia al
finalizar la instalación:
• A continuación se presenta el entorno Web para la administración del
servidor Oracle donde tendremos todos los privilegios como usuario System.
Esto comprueba que el servidor está funcionando correctamente:

Para acceder a este entorno de administración Web, también lo


puede hacer:

Digitando la dirección http://localhost:8080/apex en cualquier navega-


dor Web o Ingresando desde el menú de Inicio a la Página inicial de Base de
Datos:

7
FAVA - Formación en Ambientes Virtuales de Aprendizaje
2. Creación de un usuario y su esquema de base de datos:

Para la aplicación que estamos desarrollando, debemos crear un usuario,


el cual será propietario de un esquema dentro de la base de datos Oracle
10g express edition, sobre el cual construiremos la estructura de almace-
namiento de la aplicación.

Un esquema es un espacio de almacenamiento donde


residen los objetos (tablas, vistas, índices, procedimien
tos almacenados…) que son propiedad de un usuario.

• Estando con el usuario System, seleccionamos del menú Administra-


ción Usuarios de Base de Datos Crear Usuario:

8
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Introducimos en los campos Nombre de Usuario, Contraseña y Con-
firmar Contraseña la palabra citas y hacemos click en Crear, de esta forma
habremos creado un nuevo usuario llamado citas, el cual posee una con-
traseña con su mismo nombre y es propietario del esquema citas donde se
almacenarán los objetos requeridos:

• A continuación debemos desconectarnos del usuario actual (system)


y conectarnos con el nuevo usuario (citas):
• Introducimos la palabra citas como Usuario y Contraseña

• Comprobamos que estamos dentro del sistema como el usuario


citas:

10
3. Construcción de la estructura de almacenamiento (base de datos):

Para la construcción de las tablas, campos, relaciones y restricciones de la


estructura de almacenamiento, debemos tomar como referencia el diseño
de la base de datos previamente realizado:

• Para crear las tablas seguimos el menú Explorador de Objetos


Crear Tabla

11
• Ingresamos el nombre de la tabla, los nombres de cada uno de sus
campos, sus respectivos tipos de datos, tamaños y restricciones. A
continuación se presentan los datos para la tabla PACIENTES, hacemos
click en Siguiente:

• Especificamos como clave primaria de la tabla el campo


PACIDENTIFICACION, como se aprecia en la siguiente imagen, hacemos
click en Siguiente:

12
• El siguiente paso es establecer las claves ajenas que tiene la tabla,
para el caso de la tabla PACIENTES, esta no posee claves ajenas, por lo
que solamente hacemos click en Siguiente:

• El siguiente paso es definir las restricciones que en este caso no


vamos a definir ninguna restricción especial por lo que simplemente
hacemos click en Terminar:

13
• Por último hacemos click en Crear y de esta manera habremos
terminado de crear la tabla PACIENTES de nuestra base de datos:

De la misma manera como se creó la tabla PACIENTES, Procederemos a


crear las tablas MEDICOS, CONSULTORIOS, TRATAMIENTOS y CITAS.

• Definimos la información de las columnas de la tabla MEDICOS:

14
• Establecemos su clave primaria:

• No definimos Claves Ajenas, no definimos Restricciones haciendo


click en Siguiente y por último creamos la tabla haciendo click en el botón
Crear:

• Ahora definimos la información de las columnas de la tabla


CONSULTORIOS:
En los campos numéricos (Number), la Precisión se refiere
a la cantidad máxima de dígitos permitidos y la Escala es la
cantidad de esos dígitos que pueden estar presentes después
del punto decimal. En este caso Number (3,0) significa que
se aceptan hasta 3 dígitos pero sin parte decimal.

• Establecemos su Clave Primaria:

• No definimos Claves Ajenas, no definimos Restricciones haciendo


click en Siguiente y por último creamos la tabla haciendo click en el botón
Crear:

• Para los campos TraNumero de la tabla TRATAMIENTOS y


CitNumero de la tabla CITAS, debemos crear Secuencias que ayuden a
incrementar de manera automática los valores de estos campos, con el fin
de evitar que el usuario de la aplicación tenga que ingresar los valores,
para ello seguimos el menú Explorador de Objetos Crear Secuencia:

16
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Una Secuencia en Oracle es un objeto que permite rellenar
la información de un campo de manera automática,
respondiendo a unas reglas preestablecidas. Con las
secuencias se pueden crear campos autonuméricos.

• Establecemos la configuración de la secuencia Sec_Tratamiento y


hacemos click en Siguiente y posteriormente hacemos click en Crear:

17
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Ahora creamos la tabla TRATAMIENTOS, definimos los campos:

• Definimos la Clave Primaria, asignando al campo TraNumero la


secuencia anteriormente creada Sec_Tratamiento:

• Definimos la Clave Ajena que en el caso de la tabla TRATAMIENTOS


corresponde al campo TraPaciente, el cual está asociado con el campo
pacIdentificacion de la tabla PACIENTES:

Es requerido que el tipo de dato y tamaño de un campo


definido como Clave Ajena sea exactamente igual al campo
definido como Clave Primaria al cual está asociado.

18
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Al hacer click en Agregar, podemos observar que la clave ajena
queda asignada a la tabla:
Tutorial Crear Aplicación JAVA

• Posteriormente hacemos Click en Siguiente, Terminar y Crear

Para crear la tabla CITAS, realizamos los mismos pasos que con la tabla
TRATAMIENTOS, definimos una secuencia, los campos, su Clave Primaria
y sus Claves Ajenas, que en este caso son tres (CitPaciente, CitMedico y
CitConsultorio)

• Definimos una nueva Secuencia:

• Ahora definimos los campos de la tabla CITAS:


• Luego definimos la Clave Primaria:

• Ahora definimos las Claves Ajenas, debemos tener en cuenta que


en la tabla CITAS existen tres (3) Claves Ajenas, las cuales son:

Clave Ajena Tabla de Referencia Columna de Referencia

CitPaciente PACIENTES PacIdentificación

CitMedico MEDICOS MedIdentificación

CitConsultorio CONSULTORIOS ConNumero


Para asignar cada Clave Ajena nueva, se debe hacer click en el botón
Agregar.

• Por último hacemos click en el botón Siguiente, Terminar y Crear:


• De esta forma hemos terminado de crear la estructura de
almacenamiento de nuestra aplicación, para comprobar que hemos creado
todas las tablas requeridas seguimos el siguiente menú: Explorador de
Objetos Examinar Tablas

• Verificar que se presenten todas las tablas:


• Y para verificar que las relaciones quedaron bien definidas hacemos
click en las tablas que poseen Claves Ajenas (CITAS y TRATAMIENTOS) y
posteriormente hacemos click en el enlace Modelo donde debemos
obtener los siguiente resultados:
SESIÓN 2: DESARROLLANDO LA VISTA INTERFACE
GRÁFICA DE USUARIO (GUI)

En la sesión anterior creamos la base de datos que servirá de repositorio


para almacenar la información del sistema de gestión de citas, sin embar-
go, un usuario de la aplicación como por ejemplo un Médico, no debe tener
acceso directo a la base de datos ya que sería muy difícil para el entender
cómo llevar a cabo sus funciones y sería además potencialmente peligroso
para el sistema porque la información o la base de datos estaría expuesta
a probables daños. Para evitar que esto ocurra y darle una mejor presen-
tación a la aplicación, facilitando el uso de la misma, se requiere desarro-
llar una Interface Gráfica de Usuario conocida como GUI por sus siglas en
Inglés Graphic User Interfaz. La GUI para el proyecto que venimos desa-
rrollando será realizada en el ambiente de ejecución integrado NETBEANS.

Recordemos que el caso de uso que se desarrollará en el presente tutorial


es Administrar datos Paciente:
• Después de ejecutar el Netbeans, debemos crear un nuevo
proyecto, para lo cual seguimos el menú: File New Project:

• Seleccionamos la categoría Java y el tipo de proyecto Java


Application y hacemos click en Next:
• Ingresamos el nombre del proyecto, en nuestro caso ProyectoCitas,
seleccionamos la ubicación donde deseamos guardarlo y lo establecemos
como proyecto inicial (Set as a Main Proyect), hacemos click en Finish:

• En la ventana de Proyectos debe aparecer el nuevo proyecto. Si la


ventana no está visible, puede ser accedida a través del menú:
Window Projects:
• A continuación creamos un nuevo paquete dentro del proyecto,
haciendo click derecho en ProyectoCitas y seleccionando del menú
contextual New Java Package:

• Ingresamos el nombre del paquete, en este caso vista y hacemos


click en Finish:
El objetivo de crear este paquete es almacenar en el todos los formularios
que formen parte de la interface gráfica de usuario como parte de un
patrón conocido como el modelo vista controlador, sobre el cual
profundizaremos más adelante.

DISEÑO DEL FORMULARIO PRINCIPAL

• Haciendo click derecho sobre el nuevo paquete creado,


seleccionamos del menú contextual New JFrame Form:

La aplicación será desarrollada bajo un ambiente MDI:


Multiple Document Interfaz, este tipo de aplicaciones permite
tener un formulario principal y visualizar sobre este otros
formularios secundarios que pueden estar abiertos de maner a
simultánea pero que dependen del formulario principal. En
este caso, el JFrame Form será el formulario principal

• Definimos el nombre del JFrame, en este caso PrincipalJFrame y


hacemos click en Finish:
• A continuación aparecerá un formulario vacío y una paleta de
controles, si dicha paleta no es visible, puede obtenerla siguiendo el
menú: Window Palette:
• Siguiendo el menú Window Properties tendremos acceso a la
ventana de propiedades:

• En la ventana de propiedades, haremos los siguientes cambios:


Clave Ajena Valor

Title GESTIÓN DE CITAS

Name PrincipalJFrame
• Arrastramos desde la paleta de controles un control de tipo Menu
Bar, el cual ponemos sobre el PrincipalJFrame:

• Hacemos doble click en el título File y escribimos Archivo,


posteriormente hacemos doble click en el título Edit y escribimos
Pacientes, de esta manera vamos personalizando el menú de nuestra
aplicación:
• Arrastramos un control de tipo Menu Item (jMenuItem1) sobre el
título Archivo y dos Menu Item sobre el título Pacientes (jMenuItem2 y
jMenuItem3), cambiando sus títulos por los siguientes:

Título Actual Nuevo Título

jMenuItem1 Salir

jMenuItem2 Registrar

jMenuItem3 Consultar

• De esta forma, al hacer click sobre el menú Archivo, aparecerá la


opción Salir:

• Y al hacer click sobre el Menú Pacientes, aparecerán las opciones


Registrar y Consultar:

De esta manera hemos terminado de establecer los elementos gráficos del


formulario principal de nuestra aplicación, por ahora, no introduciremos
ningún código, hasta que tengamos los demás formularios necesarios.
Para verificar el resultado parcial de la interface gráfica, hacemos click en
el botón Preview Design:

33
FAVA - Formación en Ambientes Virtuales de Aprendizaje
DISEÑO DEL FORMULARIO PARA EL REGISTRO DE PACIENTES

El formulario para el registro de pacientes y el formulario para consultar


pacientes deben ser formularios de tipo JInternalFrame, para lograr que
dependan y se desplieguen dentro del PrincipalJFrame, que será el
formulario principal de la aplicación.

• En la ventana de proyectos, haga click derecho sobre el paquete


vista y en el menú contextual seleccione la opción New JInternalFrame
Form:

34
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Ingresamos el nombre RegPacienteInternalFrame y hacemos click
en Finish:

• Al nuevo formulario creado le cambiamos la propiedad title por


Registro de Pacientes a través de la ventana Propiedades y le adicionamos
los siguientes elementos:

35
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Control Propiedad Valor

JLabel1 text Identificación:


JLabel2 text Nombres:
JLabel3 text Apellidos:
JLabel4 text Fecha de Nacimiento:
JLabel5 text Sexo:
JTextField1 text
name IdentificacionTxt
JTextField2 text
name NombresTxt
JTextField3 text
name ApellidosTxt
ButtonGroup1
JRadioButton1 text M
buttonGroup buttonGroup
JRadioButton2 text F
buttonGroup buttonGroup1
JButton1 text Registrar
name RegistrarBtn
JButton2 text Nuevo
name NuevoBtn

Puede notarse que el título Fecha de Nacimiento no tiene un control


asociado para capturar la información y aunque esta podría capturarse en
un cuadro de texto, es más adecuado emplear un control específico de
fecha, que en el caso de Netbeans no viene por defecto, razón por la cual
se explicará cómo incorporarlo a nuestro proyecto.

36
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Descargar de la siguiente dirección:
http://www.toedter.com/en/jcalendar/ el archivo jcalendar-1.4.zip

• Este archivo se descomprime en cualquier ruta y se observa que al


interior de la subcarpeta lib se encuentre el archivo jcalendar-1.4.jar:

• Hacer click derecho en cualquier espacio de la paleta de controles y


seleccionar del menú contextual la opción Palette Manager…

37
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Hacer click en el botón New Category, ingresar un nombre para la
categoría, en este caso Swing Date y hacer click en el botón OK:

• Hacer click en el botón Add from JAR y buscar el archivo


jcalendar-1.4.jar, hacer click en el botón Next:

38
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Seleccionamos los componentes que queremos cargar en la paleta
de controles, en este caso los seleccionamos todos. Cada componente es
un control que se agregará a la ficha Swing Date. Hacemos click en Next:

• Ahora seleccionamos la categoría donde queremos agregar los


nuevos controles, en este caso la categoría es Swing Date. Hacemos click
en Finish:

39
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Finalmente hacemos click en Close:

• Observamos como la nueva categoría Swing Date se ha agregado a


la paleta de controles:

40
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Ahora que disponemos de nuevos controles para el manejo de
fechas, arrastramos uno de ellos, en este caso el control JDateChooser y
lo ubicamos en el formulario de registro de clientes frente al título Fecha
de Nacimiento:

• Para verificar el resultado parcial de la interface gráfica, hacemos


click en el botón Preview Design:

41
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Observemos como los campos del formulario coinciden con los campos de
la tabla PACIENTES en la Base de Datos

DISEÑO DEL FORMULARIO PARA LA CONSULTA DE PACIENTES

Otra de las funcionalidades que se implementarán para la gestión de


pacientes es la consulta de los mismos, para ello desarrollaremos un
nuevo formulario de tipo JInternalFrame.

• Creamos un nuevo formulario de tipo JInternalFrame dentro del


paquete vista y le asignamos el nombre ConsPacienteInternalFrame:

42
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• El diseño del nuevo formulario es el siguiente:

Control Propiedad Valor

buttonGroup1
JRadioButton1 text Identificación
buttonGroup buttonGroup1
JRadioButton2 text Nombres
buttonGroup buttonGroup1
JRadioButton3 text Apellidos
buttonGroup buttonGroup1
JRadioButton4 text Sexo
buttonGroup buttonGroup1
JLabel1 text Valor a buscar
JTextfield1 text
name ValorTxt
JButton1 text Aceptar
name AceptarBtn
JTable1 name ResultadosTbl

43
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Para verificar el resultado parcial de la interface gráfica, hacemos
click en el botón Preview Design:

El paquete vista ha quedado conformado por tres formularios, el


formulario principal PrincipalJFrame que contiene el menú y los
formularios internos RegPacienteInternalFrame en el cual se va a llevar a
cabo el registro de pacientes y ConsPacienteInternalFrame donde se
podrán realizar consultas de pacientes.

44
FAVA - Formación en Ambientes Virtuales de Aprendizaje

45
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SESIÓN 3: CREANDO EL MODELO DE LA APLICACIÓN
Teniendo la Base de Datos y los formularios de la aplicación construidos (la
vista), es hora de pasar al modelo, el modelo está conformado por las
clases que forman parte del dominio de la aplicación

Recordemos nuevamente que el caso de uso que se desarrollará en el pre-


sente tutorial es Administrar datos Paciente:

Para identificar las clases que forman parte del modelo, es


necesario revisar el diagrama de clases realizado durante el
análisis y refinado durante el diseño.

46
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Para el desarrollo del sistema completo, seguramente necesitaremos
varias clases formando parte del modelo como: Paciente, Cita,
Tratamiento, Medico, sin embargo, para nuestro caso de uso particular
Administrar datos Paciente solo requeriremos la clase Paciente, encargada
de manejar la información de un determinado paciente y la clase
GestorPaciente que será la encargada de ejecutar operaciones que afectan
a varios pacientes.

CREACIÓN DE LA CLASE PACIENTE

• Crear un nuevo paquete dentro del proyecto ProyectoCitas:

• Asignarle nombre al paquete modelo y hacer click en Finish:

47
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Sobre el nuevo paquete creado modelo, hacer click derecho y
seleccionar del menú contextual la opción New Java Class:

• Ingresamos el nombre de la clase Paciente y hacemos click en


Finish:

• Al hacer click en Finish, aparece una plantilla de clase para la clase


Paciente similar a la siguiente:

48
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Borrar los comentarios e ingresar los atributos de la clase:

49
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Hacer click derecho sobre el código y seleccionar del menú
contextual la opción Refactor Encapsulate Fields:

• Seleccionamos todos los campos y hacemos click sobre el botón


Refactor:

50
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• De esta forma aparecen todos los métodos Getters y Setters
asociados a los atributos definidos en la clase Paciente:

51
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Un método Getter es aquel que retorna el valor de un
atributo, por ejemplo, getNombres es un método que retorna
los nombres de un paciente. Un método Setter es aquel que
se emplea para modificar el valor de un atributo, por ejemplo,
setNombres es un método que modifica el nombre de un
paciente. El prefijo get y set forman parte de una convención
empleada en Java conocida como JavaBeans.

• A partir de la línea de código 11, creamos el constructor de la clase


Paciente, y borrando los comentarios, el código queda de la siguiente
manera:

52
FAVA - Formación en Ambientes Virtuales de Aprendizaje
CREACIÓN DE LA CLASE GESTORPACIENTE

• Creamos una nueva clase dentro del paquete modelo llamada


GestorPaciente y hacemos click en el botón Finish:

Los códigos expuestos en este tutorial no tienen comentarios ni


siguen un estándar de codificación predefinido, sin embargo es
necesario incluir estos aspectos de calidad en el código propio.

53
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• El código de esta nueva clase es el siguiente:

54
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código:

Línea Explicación

2 Importación de la clase LinkedList para el almacenamiento de Pacientes


Declaración de la variable pacientes que será la responsable de
5
almacenar todos los pacientes registrados
En el constructor de la clase se instancia el LinkedList determinando
7.. 10
que en cada posición se almacenará un objeto de tipo Paciente
11.. 14 Método que recibe un objeto de tipo Paciente y lo guarda dentro
del LinkedList
Método que recibe un criterio de búsqueda y un valor y retorna una
15.. 37
lista de pacientes que cumplen con los parámetros recibidos
Se crea un LinkedList interno para almacenar los pacientes que
17
cumplen con los criterios de la consulta
18 Recorrido de cada uno de los pacientes registrados
Evalúa el valor del parámetro para conocer si se desea hacer la
20
búsqueda por Identificación 1, Nombres 2, Apellidos 3, Sexo 4
De acuerdo con el parámetro de búsqueda, verifica si coincide cada
22.. 33 paciente con el valor recibido. En ese caso, se agrega al LinkedList
interno resultado
36 Retorna el LinkedList interno resultado con los pacientes encontrados

De esta manera hemos finalizado la construcción de las clases del modelo


Paciente y GestorPaciente. El proyecto ProyectoCitas hasta ahora lleva la
siguiente estructura:

55
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SESIÓN 4: ENLAZANDO CON EL CONTROLADOR
Ahora que la aplicación cuenta con la Vista que proporciona los formularios
requeridos para interactuar con el usuario (PrincipalJFrame, RegPacien-
teInternalFrame y ConsPacienteInternalFrame) y cuenta con el Modelo,
conformado por las clases del dominio de la aplicación (Paciente y Gestor-
Paciente), es el momento de crear las clases del Controlador, estas clases
gestionarán las solicitudes de la Vista y darán respuesta a las mismas
recurriendo a las clases del Modelo. Este mecanismo de interacción multi-
capas se conoce como el patrón Modelo Vista Controlador (MVC).

Para poder acceder desde la clase controladora al contenido de los


campos de los formularios, estos deben permitir su acceso bien sea
a través de métodos públicos o modificando el nivel de acceso de
estos campos pasándolos de private a públicos.

56
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Abrimos el formulario RegPacienteInternalFrame que se encuentra
en el paquete vista y hacemos click derecho sobre el primer cuadro de
texto. Del menú contextual seleccionamos la opción Properties:

• De la ventana propiedades, seleccionar la ficha Code y modificar los


valores de las propiedades Variable Name y Variable Modifiers por
IdentificacionTxt y public respectivamente:

57
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Hacer click derecho en las demás cajas de texto, el control
JdateChooser y los controles JRadioButton y repetir el proceso para los
campos nombres, apellidos, fecha de nacimiento y sexo, al igual que para
los botones de Registrar y Nuevo tal como se presenta en las siguientes
imágenes:

No basta con seleccionar otra caja de texto para modificar sus


propiedades, es necesario hacer click derecho sobre ella y
seleccionar la opción properties del menú contextual.

58
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Creamos un nuevo paquete llamado controlador dentro del proyecto
ProyectoCitas:

59
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Haciendo click derecho sobre el paquete controlador recién creado,
seleccionamos del menú contextual New Java Class

• Ingresamos el nombre para la nueva clase PacienteControl y


hacemos click sobre el botón Finish:

El objetivo de esta clase es comunicarse con la vista para capturar los


datos ingresados por el usuario en el formulario de Registro de Clientes y
posteriormente con esos datos capturados comunicarse con el modelo
para crear un objeto de la clase Paciente y registrarlo a través de la clase
GestionPaciente del modelo.

60
FAVA - Formación en Ambientes Virtuales de Aprendizaje
El código expuesto no posee comentarios ni responde a un estándar
de codificación establecido. Es recomendable tener en cuenta estos
aspectos en los proyectos de acuerdo con las sugerencias del tutor.

• El código correspondiente a la clase PacienteControl es el siguiente:

61
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código:

Línea Explicación
Importación de paquetes para el manejo del evento click del botón
3,4
Registrar formulario Registro de Pacientes
Importación de la clase SimpleDataFormat para dar formato
5
a la fecha de nacimiento recibida desde la vista
ActionListener es la interfaz que se debe implementar para
7
escuchar eventos
Declaración de variables asociadas a la vista y al modelo.
9, 10, 11
El controlador debe conocer a la vista y al modelo para poder
comunicarse con ellos
El constructor de la clase controladora recibe como parámetro
13
la vista que debe controlar
15, 16 Creación de las variables asociadas a la vista y el modelo
Anotación que indica que el método actionPerformed se está
18
sobreescribiendo
Método de la interfaz ActionListener que se debe implementar.
19 Este método se ejecuta cuando se hace click en el botón Registrar
del formulario Registro de Pacientes
Verifica si fue el botón Registrar del formulario Registro de
21
Pacientes el que generó el evento
Captura de la información ingresada por el usuario en el formulario
23....32
Registro de Pacientes
Creación de un objeto de tipo Paciente a partir de los datos
33
ingresados por el usuario
Registro del paciente creado a través de la clase GestorPaciente
34
del modelo
Verifica si fue el botón Nuevo del formulario Registro de
36
Pacientes el que generó el evento
Borra los contenidos de los controles del formulario Registro de
38....44
Pacientes

Ahora que el controlador PacienteControl intermedió entre la vista y el


modelo para registrar pacientes, crearemos otro controlador que se
comunique con el modelo para extraer los datos de los pacientes
registrados y visualizarlos en la vista.

El objetivo de la nueva clase controladora es capturar la solicitud que el


usuario realiza a través del formulario Consulta de Pacientes y recibir del
modelo la información pertinente para llevarla a la vista.

62
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Al igual que ocurrió con el formulario de Registro de Pacientes, debemos
tener acceso a los elementos del formulario Consulta de Pacientes desde
el controlador.

• Hacemos click derecho en el primer control del formulario


(JRadioButton1), seleccionamos del menú contextual la opción Properties:

63
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• En la ventana de propiedades seleccionamos la ficha Code y en ella
realizamos los cambios a las propiedades Variable Name y Variable
Modifiers, ingresando los valores IdentificacionOpt y public
respectivamente:

• Modificar de la misma manera las propiedades Variable Name y


Variable Modifiers de los JRadioButton, la caja de texto, el botón y el
JTable tal como se presenta en las siguientes imágenes:

No basta con seleccionar otro control para modificar sus


propiedades, es necesario hacer click derecho sobre el y
seleccionar la opción properties del menú contextual.

64
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Ahora que ya tenemos acceso a los controles del formulario Consultar
Pacientes por ser públicos, procedemos a crear la clase controladora.

65
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Creamos una nueva clase dentro del paquete controlador con el
nombre GestorPacienteControl y hacemos click en Finish:

El código expuesto no posee comentarios ni responde a un estándar de


codificación establecido. Es recomendable tener en cuenta estos aspectos
en los proyectos de acuerdo con las sugerencias del tutor.

Explicación del código:

Línea Explicación
La clase debe poder escchar eventos de la vista, en este caso el
7
evento click del botón Aceptar del formulario Consulta de Pacientes
Declaración de variables asociadas a la vista y al modelo. El controlador
9, 10
debe conocer a la vista y al modelo para poder comunicarse con ellos.
El constructor de la clase controladora recibe como parámetro la vista
12
que debe controlar.
14, 15 Creación de las variables asociadas a la vista y el modelo
Anotación que indica que el método actionPerformed se está
17
sobreescribiendo
Método que se ejecuta cuando el usuario hace click en el botón Aceptar
18
del formulario Consulta de Pacientes
Captura del valor introducido por el usuario en la caja de texto del
20
formulario Consulta de Pacientes

66
FAVA - Formación en Ambientes Virtuales de Aprendizaje

67
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código (continuación):

Línea Explicación
Declaración e inicialización de la variable que va a indicar el criterio de
21 búsqueda seleccionado por el usuario (Identificación, Nombres, Apellidos
o Sexo) en el formulario Consulta de Pacientes
Borrado de todas las filas del TableModel asociado al JTable donde
22 se presentan los resultados de la consulta en el formulario Consulta
de Pacientes
Actualización del JTable, esto hace que el JTable quede vacío para
23, 42
poder ser cargado posteriormente con los resultados de la consulta
Captura de la opción de búsqueda seleccionada por el usuario en el
24..31 formulario Consulta de Pacientes, de acuerdo a esa opción se asigna
un valor a la variable parámetro
Captura de los pacientes devueltos por el modelo de acuerdo con los
32
criterios de búsqueda proporcionados por el usuario
Recorrido de cada uno de los pacientes retornados por el modelo a
34
partir de la consulta realizada
Asignación de los valores de cada paciente al arreglo que se cargará
36..40
en el TableModel
Adición de una nueva fila al TableModel cuyo contenido es la
41
información del arreglo

68
FAVA - Formación en Ambientes Virtuales de Aprendizaje
El paquete controlador finalmente queda conformado por dos clases
PacienteControl que recoge la información de cada paciente ingresado por
el usuario en la vista y lo registra en el modelo y la clase
GestorPacienteControl que se encarga de recibir de la vista los parámetros
de búsqueda, consultar en el modelo los pacientes que cumplen con esos
parámetros y regresar a la vista los resultados obtenidos.

• La estructura del proyecto debe ser la siguiente:

69
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SESIÓN 5: PROBANDO EL MODELO VISTA
CONTROLADOR (MVC)
Durante la sesión 2, 3 y 4 creamos los diferentes componentes que hacen
parte del Modelo Vista Controlador (MVC) Sesión 2: La vista, Sesión 3: El
modelo, Sesión 4: El controlador.

El MVC es un patrón de diseño que separa la interfaz de


usuario de la lógica y los datos.

El desarrollo de este patrón dentro de una aplicación trae


como consecuencia el uso de arquitectura multicapa, ya que
la capa de presentación está abordada por la vista, la capa
de lógica es responsabilidad del controlador y la capa de
datos está a cargo del modelo.

Las ventajas de una arquitectura multicapa es la separación


de las responsabilidades y la facilidad de mantenimiento y
adaptación de las aplicaciones.

70
FAVA - Formación en Ambientes Virtuales de Aprendizaje
En esta sesión vamos a realizar los ajustes finales a la vista para vincularla
con el controlador y así poder ejecutar la aplicación.
Inicialmente vamos a adicionar los formularios internos (Registro de
Pacientes y Consulta de Pacientes) al formulario principal.

• En el código del formulario principal incluimos las siguientes líneas:

Explicación del código:

Línea Explicación
4, 5 Declaración de objetos asociados a los formularios internos
8, 9 Instanciación de los objetos asociados a los formularios internos
10, 11 Adición de los formularios internos al formulario principal
13 Instrucción para que el formulario principal se presente maximizado

Ahora vamos a escribir el código necesario para que al hacer click en los
menús del formulario principal se presenten los formularios internos
correspondientes.

• Abrir el formulario principal en vista de diseño, hacer click en el


menú Archivo y sobre este hacer click derecho y seguir el menú Events
Action actionPerformed:

71
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• De esa manera nos ubicamos en el método que se ejecuta al hacer
click sobre el menú Salir, en ese espacio ingresamos el código para salir
de una aplicación en java:

• Repetimos el proceso para la opción de menú Registrar:

• Ingresamos el código para hacer visible el formulario Registro de


Pacientes:

• Repetimos el proceso para la opción de menú Consultar:

• Ingresamos el código para hacer visible el formulario Consulta de


Pacientes:

72
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• El código del formulario principal debe tener un aspecto semejante
al siguiente:

• El código del formulario Registro de Pacientes debe registrar a la


clase controladora que atenderá los eventos que en él se generen. A
continuación se presenta el código que debe agregarse:

73
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código:

Línea Explicación
5 Declaración del objeto que controla el formulario
10 Instanciación del objeto que controla el formulario y gestiona sus eventos
Indica que el objeto pacienteControlador es el encargado de gestionar
11, 12
los eventos que se generen en los botones Registrar y Nuevo

• El código del formulario Consulta de Pacientes de igual manera debe


registrar a la clase que le atenderá sus eventos, además de incluir el
código de configuración inicial del JTable donde se presentarán los datos
de las consultas realizadas. A continuación se presenta el código que debe
agregarse:

74
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código:

Línea Explicación
Importación de la clase DefaultTableModel que se emplea para establecer
3
la configuración del objeto JTable
7 Declaración del objeto que controla el formulario Consulta de Pacientes
8 Declaración del objeto que configura y gestiona la información del JTable
13 Instanciación del objeto que controla el formulario y gestiona sus eventos
Creación del arreglo que contiene los títulos del JTable donde se presentan
14
los resultados de las consultas
15 Instanciación del TableModel con los títulos requeridos
16 Asignación del TableModel al JTable
Indica que el objeto gestorpacienteControl es el encargado de gestionar
17 los eventos que se generen en el botón Aceptar del formulario Consulta
de Pacientes
Método que retorna el objeto TableModel asociado al JTable para ser
19.. 22
manipulado desde la clase controladora

Un objeto JTable representa un elemento gráfico en forma de


cuadrícula comúnmente usado para presentar registros de
datos. Este objeto gráfico no es manipulado directamente
sino a través de un objeto no gráfico llamado TableModel,
el TableModel es el que define los títulos y contenido del
JTable, así mismo, operaciones como insertar filas, acceder
a un determinado dato de la tabla o eliminar los datos de la
tabla, se realizan a través del TableModel que al estar
asociado al objeto JTable refleja visualmente estas
modificaciones en el mismo.

Finalmente, después de establecer desde la vista los objetos controladores


que se encargan de gestionar los eventos, solo queda faltando ejecutar la
aplicación.

• Hacemos click derecho sobre el proyecto ProyectoCitas y


seleccionamos del menú contextual la opción Clean and Build:

75
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Por último, hacemos click derecho sobzre la clase PrincipalJFrame y
seleccionamos del menú contextual la opción Run File:

76
FAVA - Formación en Ambientes Virtuales de Aprendizaje

77
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SESIÓN 6: ACCEDIENDO A LA BASE DE DATOS CON JDBC

En la sesión número 1 se construyó la base de datos en Oracle, durante


las sesiones siguientes se desarrolló la aplicación basada en el patrón MVC
Modelo Vista Controlador, sin embargo, los datos ingresados en el formu-
lario de Registro de Pacientes se pierden cuando la aplicación se cierra,
esto se da porque los datos de los pacientes registrados se están almace-
nando en variables y listas, pero no en un medio persistente como la base
de datos.

Durante la presente sesión conectaremos la aplicación que desarrollamos


con la base de datos para que la información de los pacientes registrados
no se pierda aunque se cierre la aplicación e incluso aunque se apague el
equipo.

Para la conexión y gestión de la base de datos emplearemos la API JDBC


de Java.

JDBC Java DataBase Connectivity es un estándar usado


por Java para el acceso y la manipulación de datos en
bases de datos relacionales a través de clases e interfaces,
permitiendo embeber código SQL dentro del código Java

78
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Descargar el driver JDBC para Oracle ojdbc6.jar de la siguiente
dirección:

http://www.oracle.com/technetwork/database/enterprise-editi
on/jdbc-112010-090769.html

También puede ser descargado desde la plataforma del curso en la


siguiente ruta:

Actividades/Fase Desarrollo/ Actividad de Proyecto 7/ Materiales


Requeridos y de Apoyo/

El archivo ojdbc6.jar puede ser descargado en cualquier ruta.

CONEXIÓN CON LA BASE DE DATOS DESDE NETBEANS

• En Netbeans, hacer click en el menú Window Services, aparecerá


la siguiente ventana:

79
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Hacer click derecho sobre Databases y en ella seleccionar del menú
contextual la opción New Connection…

• En la siguiente ventana, seleccionar el Driver Oracle thin, hacer click


en el botón Add, buscar y seleccionar el driver ojdbc6.jar previamente
descargado y hacer click en Abrir, luego hacer click en Next:

80
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• En la siguiente ventana, ingresar los siguientes valores de
configuración:

Ingresar el User Name: citas y el Password: citas que son los


datos de conexión con la base de datos que creamos en la sesión 1,
si los datos de conexión son diferentes, ingresar los propios.

81
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Para comprobar la conexión, hacer click en el botón Test Connection
y verificar que aparece el mensaje Connection Succeded, hacer click en
Next:

82
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Seleccionamos el esquema CITAS y hacemos click en el botón
Finish:

• Al abrir la conexión recién configurada y el esquema CITAS,


podemos observar que desde nuestra aplicación Java en Netbeans
tenemos acceso a las tablas del esquema CITAS configurado en la sesión
1 del presente tutorial:

83
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Lo anterior permite comprobar que efectivamente la aplicación que
se está desarrollando en Java tiene conexión con la Base de Datos Oracle
y reconoce sus diferentes objetos del esquema.

Cada operación o transacción que se desee realizar sobre una base de


datos desde una aplicación externa, requiere establecer una conexión, en
el caso de Java, esta conexión está configurada a través de un objeto de
la clase Connection que forma parte del paquete java.sql.

Debido a que la creación de conexiones es una actividad recurrente


cuando se trabaja con acceso a bases de datos, en el presente proyecto
crearemos una clase que se encargue de configurar, crear y retornar la
conexión con la base de datos, esta clase encapsula toda la lógica de la
conexión y solo requiere recibir unos parámetros para crear la conexión.

• Crear un nuevo paquete dentro del proyecto ProyectoCitas llamado


recurso y sobre este nuevo paquete, crear una Java Class con el nombre
de Conexión

84
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• El código de la clase Conexión es el siguiente:

85
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código:

Línea Explicación
Importación del paquete sql para hacer uso de las clases que permiten
3
hacer la conexión con la base de datos
4 Importación de la clase JOptionPane empleada para presentar un mensaje
al usuario cuando la conexión es incorrecta
8 Atributos requeridos para hacer la conexión con la base de datos
Se reciben los parámetros ip, que indica la dirección ip donde reside el
servidor de bases de datos, si es local, se define como “localhost”, los
13.. 17 parámetros usr y pass se refieren a el usuario y password de acceso al
esquema, driver y url son cadenas de conexión usadas de manera particular
para conexiones con bases de datos oracle
20 Registro del driver en la aplicación
21 Creación de la conexión con la base de datos
28.. 31 Retorna la conexión establecida
32.. 37 Cierre de la conexión creada

Una de las principales bondades del Modelo Vista Controlador


MVC es la independencia entre sus componentes, esta
independencia la vamos a evidenciar a continuación, haciendo
un cambio en el modelo dentro de la clase GestorPaciente, el
cual emplea una Lista de tipo LinkedList para almacenar los
pacientes registrados. Esta clase será modificada para que el
almacenamiento de los pacientes ya no sea en una lista sino
en la base de datos. A pesar de cambiar el modelo para que
responda a esta nueva necesidad, el controlador y la vista
permanecerán intactos.

• Abrir la clase GestorPaciente y realizar los cambios en el código que


se reflejan a continuación:

86
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código:

Línea Explicación
Declaración de un objeto de tipo Connection que recibe la conexión
9
con la base de datos

11.. 15 Constructor de la clase que envía a la clase Conexion los parámetros


específicos de la base de datos y obtiene la conexión con la misma
Se crea un objeto de tipo PreparedStatement, a partir de la conexión
20 creada en el constructor y se establece la sentencia insert, dejando los
valores de la misma para ser establecidos posteriormente
Definición de los valores que se deben insertar a través de la sentencia
21.. 25
insert
26 Ejecuta la sentencia insert sobre la base de datos

87
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código:

Línea Explicación
36 LinkedList para retornar los pacientes consultados de la base de datos
De acuerdo con el parámetro de búsqueda se configura la consulta específica
38.. 48
(buscar por la identificación, por el nombre, por el apellido o por el sexo)
20 Se ejecuta la consulta
Recorre los resultados de la consulta, con cada registro devuelto se crea un
21.. 25
paciente nuevo , el cual se almacena en el LinkedList que será retornado
Retorno del LinkedList que posee a todos los pacientes que cumplen con
26
el criterio de búsqueda enviado al método

88
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Después de realizados los cambios en la clase GestorPaciente que
corresponde al modelo, podemos compilar y ejecutar la aplicación,
notaremos que no se hace necesario realizar cambios en las otras capas
de la aplicación y que ahora el almacenamiento de los pacientes
registrados y las consultas de los mismos se realiza sobre la base de
datos.

89
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SESIÓN 7: ACCEDIENDO A LA BASE DE DATOS CON JPA

En la sesión anterior, el almacenamiento y la consulta de información sobre


la base de datos se realizó a través de JDBC Java DataBase Connectivity.

A través de JDBC pudimos observar que se hace necesario emplear senten-


cias SQL Structured Query Language como la sentencia Insert para regis-
trar un nuevo paciente en la base de datos y la sentencia Select para con-
sultar los pacientes de la base de datos que cumplieran con un determina-
do criterio de búsqueda.

En esta sesión vamos a emplear un mecanismo diferente de acceso y ges-


tión de los datos en una base de datos conocido como JPA Java Persistence
API.

El mecanismo de persistencia JPA permite a los desarrolladores


crear Clases mapeando los atributos de las mismas con
campos de una tabla en una base de datos relacional.

Este mapeo, el cual se realiza a través de anotaciones dentro


de la clase, permite abstraer el modelo de la base de datos a
nivel de aplicación, logrando mayor transparencia en el acceso
y la gestión de los datos, permitiendo que los objetos creados
en una aplicación se puedan persistir en la base de datos.

90
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Antes de iniciar, es recomendable realizar una copia de la carpeta del
proyecto ProyectoCitas, renombrar la copia como ProyectoCitas2 y abrir
esta última desde Netbeans, con esto, los cambios efectuados en el
proyecto no afectarán el proyecto respaldado.

• Para iniciar, debemos abrir el proyecto copia desde Netbeans y en el


eliminar las clases Paciente y GestorPaciente del paquete modelo,
haciendo click derecho sobre ellas y seleccionando la opción Delete:

Al eliminar las clases Paciente y GestorPaciente aparecerán unos errores


en clases del paquete controlador. Estos errores se dan por la dependencia
existente entre el controlador y el modelo, más adelante solucionaremos
dichos errores.

91
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• A continuación, creamos una unidad de persistencia, hacemos click
derecho sobre el proyecto ProyectoCitas y seleccionamos del menú
contextual la opción New Other:

92
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Seleccionamos de la ventana la categoría Persistence y el tipo de
archivo Persistence Unit y hacemos click en Next:

• Indicamos la librería de persistencia a utilizar y la conexión de base


de datos que se empleará, en nuestro caso, la conexión ya existe.
Hacemos click en Finish:

93
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Automáticamente se crea la unidad de persistencia, conformada por
un archivo xml llamado persistence.xml dentro de una carpeta META-INF.
Este archivo persistence.xml contiene información relacionada con la base
de datos y las librerías JPA:

Luego de creada la unidad de persistencia, procedemos a crear las Clases


de Entidad, estas clases son Clases Java que se mapean a tablas de la
base de datos.

• Hacemos click derecho sobre el paquete modelo, el cual debe estar


vacío y seleccionamos del menú contextual New Other:

• De la ventana emergente, seleccionamos la categoría Persistence y


el tipo de archivo Entity Classes from Database:

94
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• En la siguiente ventana se selecciona la conexión de base de datos
ya establecida anteriormente, de esta forma, se cargan las tablas de la
base de datos, seleccionamos la tabla que nos interesa en nuestra
aplicación PACIENTES y hacemos click en Next:

95
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• En la siguiente ventana, quitamos la selección de los checkBox y
hacemos click en Next:

• En la siguiente ventana dejamos las opciones por defecto y hacemos


click en Finish:

96
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Observamos que la clase Pacientes ha sido creada dentro del
paquete modelo:

• Al abrir la clase Pacientes podemos observar todo el código que se


crea de manera automática, este código contiene los atributos, los
constructores y los métodos getters y setters de la clase Pacientes
basados en los campos de la tabla PACIENTES de la base de datos.

Además de estos elementos de la clase, también se observan una serie de


clases del paquete javax.persistence importadas. Estas clases son las que
forman parte de la JPA, por último, sobresale un conjunto de signos de
arroba (@), estos elementos son anotaciones, las cuales permiten
mantener el mapeo (vínculo) entre los atributos de la clase y los campos
de la tabla PACIENTES.

97
FAVA - Formación en Ambientes Virtuales de Aprendizaje
98
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Una vez creada la Clase de Entidad, se debe crear la clase que controle a
esta entidad, es decir, requerimos de una clase que permita ejecutar
operaciones sobre los pacientes como por ejemplo agregarlos,
modificarlos o consultarlos.

• Hacemos click derecho sobre el paquete modelo y seleccionamos del


menú contextual la opción New Other, de la ventana emergente,
seleccionamos la categoría Persistence y el tipo de archivo JPA Controller
Classes from Entity Classes y hacemos click en Next:

99
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Seleccionamos la clase de entidad que existe en nuestro proyecto
Pacientes y hacemos click en el botón Next:

100
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Por último seleccionamos el paquete modelo y hacemos click en
Finish:

• Observamos como la nueva clase se agrega al paquete modelo y se


crea automáticamente un nuevo paquete llamado modelo.exceptions, el
cual contiene 3 clases de tipo excepción.

101
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• De esta manera, se crea de manera automática la clase
PacientesJpaController, esta clase contiene métodos como create, edit,
destroy y find que se emplean para insertar, modificar, eliminar y
consultar pacientes de la base de datos respectivamente.

102
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Ahora que hemos creado las clases Pacientes y
PacientesJpaController con la api JPA, solo resta hacer uso de ellas desde
las clases del paquete controlador de nuestro proyecto. Para eso,
debemos modificar algunas partes del código de las clases PacienteControl
y GestorPacienteControl del paquete controlador para que usen los
métodos de las clases Pacientes y PacientesJpaController creadas a través
del asistente.

• Abrimos la clase PacienteControl y sobre ella realizamos las


modificaciones respectivas en su código:

Explicación del código:

Línea Explicación
Declaración del objeto de tipo JpaController que permite realizar
16
operaciones contra la base de datos
21 Definición de la unidad de persistencia empleada
Creación del objeto de tipo JpaController que realizará operaciones contra
22
la base de datos
Creación de un objeto de la clase Pacientes que se encuentra mapeada
40
con la tabla Pacientes de la base de datos
41.. 45 Asignación de valores a los atributos de la clase Pacientes
Uso del objeto de tipo PacientesJpaController para insertar un nuevo
48
paciente en la tabla PACIENTES a través del método create

103
FAVA - Formación en Ambientes Virtuales de Aprendizaje
La clase PacienteControl cambió un poco su código para hacer uso de la
clase PacientesJpaController y gracias a esto, la inserción de pacientes en
la base de datos se realiza de manera más directa y sin utilizar el lenguaje
SQL.

Ahora, para presentar el resultado de la consulta que el usuario realice en


el formulario Consulta de Pacientes, debemos modificar también el código
de la clase GestorPacienteControl del paquete controlador para que utilice
la clase PacientesJpaController del paquete modelo y así pueda consultar
los datos de la tabla PACIENTES sin necesidad de emplear el lenguaje SQL.

104
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Abrimos la clase GestorPacienteControl y realizamos los siguientes
cambios en su código:

Explicación del código:

Línea Explicación
Declaración del objeto de tipo JpaController que permite realizar operaciones
11
contra la base de datos
17 Definición de la unidad de persistencia empleada
Creación del objeto de tipo JpaController que realizará operaciones contra
18
la base de datos
Se obtienen todos los pacientes de la base de datos haciendo uso del método
35
findPacientesEntities() de la clase PacientesJpaController
Recorrido de cada paciente obtenido y si coincide con el criterio y valor de
36.. 53 búsqueda, se envía al método mostrarEnTabla para que sea presentado en
el JTable del formulario Consulta de Pacientes
Método que recibe un paciente y presenta su información en el formulario
55.. 65
Consulta de Pacientes

105
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Antes de ejecutar la aplicación, es necesario agregar el driver de conexión
Oracle a nuestro proyecto, con el fin de ser reconocido por la unidad de
persistencia.

106
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Hacemos click derecho sobre la carpeta Libraries de nuestro
proyecto y seleccionamos del menú contextual la opción Add JAR/Folder…

• Buscamos y seleccionamos el archivo ojdbc6.jar que habíamos


descargado en la sesión 6, recordemos que este archivo es el driver de
conexión con oracle:

107
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Nuestro proyecto ya ha quedado listo, al ejecutarlo el funcionamiento
debe ser el mismo que obtuvimos en la sesión 6, con acceso a la base de
datos, pero en lugar de usar JDBC, usamos JPA

108
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SESIÓN 8: GENERANDO REPORTES IMPRESOS

Para finalizar el proyecto, crearemos un reporte impreso que mostrará


información obtenida de la base de datos. El reporte presentará la infor-
mación de todos los pacientes registrados.

Las herramientas que emplearemos para la creación y visualización del


reporte son: Ireport y JasperReports, estos plugins se agregan a Netbeans
formando parte de su entorno de desarrollo integrado.

Para conocer más detalles sobre ireport, puede visitar el


siguiente link:
http://es.scribd.com/doc/37388195/Manual-de-Ireport

109
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Los plugins necesarios están conformados por los siguientes
archivos:

Para descargar los plugins, acceder a la siguiente ruta en la plataforma del


curso: Actividades/Fase Desarrollo/ Actividad de Proyecto 7/
Materiales Requeridos y de Apoyo/

• Una vez descargados los archivos en cualquier ruta del equipo,


desde netbeans, seleccione el menú Tools Plugins:

110
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Seleccionamos la pestaña Downloaded y luego hacemos click en el
botón Add Plugins, posteriormente buscamos los archivos descargados y
hacemos click en el botón Abrir:

• Hacemos click en el botón Install y seguimos los pasos del asistente


para la instalación. Durante la instalación, es posible que se deba
deshabilitar el firewall desde el panel de control para que se lleve a cabo
correctamente.

111
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Al terminar la instalación, hacemos click en el botón Finish:

• Para que el nuevo plugin instalado tome efecto, se recomienda


cerrar y volver a abrir el netbeans.

• Al ingresar al netbeans, notaremos algunos elementos nuevos en su


entorno, se trata de los componentes asociados a los reportes de ireport,
ellos son el origen de datos y la ventana de salida de ireport:

112
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Ingresamos al menú Tools Libraries:

• Y allí notaremos la librería JasperReports con todos sus archivos jar


asociados:

113
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Luego de verificar lo anterior, pasaremos a realizar una prueba de
conexión del componente ireport contra la base de datos, para ello,
hacemos click en el botón de Report DataSources:

• Posteriormente, hacemos click en el botón New de la ventana de


conexiones:

• Seleccionamos Database JDBC Connection y hacemos click en el


botón Next:

114
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• En la siguiente ventana, ingresamos un nombre para nuestra
conexión que puede ser cualquiera, en este caso ReportesCitas,
seleccionamos el JDBC Driver de Oracle Oracle
(oracle.jdbc.driver.OracleDriver), ajustamos el JDBC URL
jdbc:oracle:thin:@localhost:1521:XE, ingresamos el Username y Password
citas y hacemos click en el botón Test, luego de esto nos preguntarán
nuevamente el Password, ingresamos nuevamente citas y aparecerá que la
conexión fue exitosa Connection test successful, finalmente hacemos click
en el botón Save para guardar la conexión creada:

115
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Note que en el JDC URL se cambia al final MYDATABASE por XE,
indicando con ello que nos conectaremos a una base de datos Oracle
Express.

Si al momento de seleccionar el JDBC Driver la opción de oracle aparece


en color rojo, significa que debemos asociar el driver de oracle en ireport,
esto se hace siguiendo el menú Tools Options, seleccionando la pestaña
ireport y dentro de esta la ficha Classpath y allí seleccionar el archivo jar
del driver oracle ojdbc6.jar o ojdbc14.jar:

116
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Una vez creada la conexión desde ireport con la base de datos, pasamos a
agregar algunas librerías adicionales a nuestro proyecto, estas librerías
son necesarias para que el reporte finalmente pueda ser visualizado e
impreso a través de algún medio externo como una impresora.

• Las librerías adicionales son las siguientes:

Estas librerías pueden ser descargadas de internet o desde la plataforma


del curso en la siguiente ruta: Actividades/Fase Desarrollo/ Actividad
de Proyecto 7/ Materiales Requeridos y de Apoyo/

Una vez descargadas las librerías, pasamos a agregarlas al proyecto como


lo hemos hecho antes con otras librerías, hacemos click derecho sobre la
carpeta Libraries y seleccionamos del menú contextual la opción Add
JAR/Folder, las seleccionamos y agregamos:

117
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Podemos observar que las librerías quedan formando parte del
proyecto:

Después de agregar los componentes, probar la conexión con la base de


datos y agregar las librerías necesarias, es hora de crear el reporte.

• Dentro del proyecto creamos un nuevo paquete llamado reportes,


hacemos click derecho sobre el mismo y seleccionamos del menú
contextual la opción New Other:

118
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• De la ventana emergente, seleccionamos la categoría Report y el
tipo de archivo Report Wizard y hacemos click en Next:

• Ingresamos un nombre para el reporte PacientesReport y hacemos


click en el botón Next:

119
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• En la siguiente pantalla seleccionamos la conexión anteriormente
creada ReportesCitas y escribimos la consulta SELECT * FROM PACIENTES
order by PacApellidos, ya que en nuestro reporte deseamos mostrar la
información de todos los pacientes registrados en la base de datos.
Hacemos click en el botón Next:

• En la siguiente ventana, seleccionamos todos los campos que


deseamos presentar en el reporte, en nuestro caso, todos y hacemos click
en el botón Next:

120
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• En la ventana siguiente, simplemente hacemos click en Next ya que
en este reporte no deseamos agrupar por ningún campo:

• En la ventana de Layout, seleccionamos la opción Tabular Layout y


hacemos click en el botón Next:

121
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Por último hacemos click en el botón Finish:

• Para verificar el estado parcial del reporte, hacemos click en el botón


Preview:

122
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Haciendo click en el botón Design podemos personalizar el diseño
del reporte, para este ejemplo, solamente vamos a cambiar el título del
reporte y el título de las columnas:

• Luciendo finalmente nuestro reporte así:

123
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Al tener el diseño del reporte finalizado y probado de manera
independiente, es el momento de enlazarlo con nuestra aplicación, para
ello, lo primero que vamos a hacer es crear una clase dentro del paquete
reportes que se encargue de gestionar y mostrar los reportes.

• Hacemos click derecho sobre el paquete reportes y seleccionamos


del menú contextual la opción New Java Class:

• Le asignamos el nombre GestorReportes y hacemos click en el botón


Finish:

124
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• El código de esta clase es el siguiente:

Explicación del código:

Línea Explicación

5.. 9 Importación de paquetes para la gestión y visualización de reportes

Constructor de la clase, donde se crea la conexión con la base de datos,


15.. 28
la cual queda almacenada en la variable conexion

125
FAVA - Formación en Ambientes Virtuales de Aprendizaje
Explicación del código (continuación):

Línea Explicación

33 Se obtiene la ubicación y el nombre del reporte que se desea presentar

34 Carga del reporte seleccionado

Se llenan los datos en el reporte con la información obtenida de la base de datos


35
y de acuerdo a algún parámetro, en este caso no existen parámetros null

36 Se llama al visor del reporte, asignando el reporte y sus datos

37 Se hace visible el reporte

Después de crear la clase GestorReportes con su método ejecutarReporte


debemos modificar la vista para que desde el menú archivo del formulario
principal tengamos la opción de imprimir el listado de pacientes.

• Abrimos el formulario PrincipalJFrame y al menú Archivo le


agregamos un nuevo Menu Item con el título Imprimir Pacientes
Registrados:

126
FAVA - Formación en Ambientes Virtuales de Aprendizaje
• Hacemos click derecho en el menu Item Imprimir Pacientes
Registrados y del menú contextual seleccionamos la opción Event
Action actionPerformed:

• De esta forma llegamos al evento, allí escribimos el siguiente


código:

En el código anterior, instanciamos la clase GestorReportes, invocando


posteriormente el método ejecutarReporte, donde enviamos el nombre del
reporte que deseamos ejecutar.

• Ahora probamos la aplicación y al hacer click en el menú Imprimir


Pacientes Registrados debe aparecer la vista previa del reporte y la opción
de imprimirlo:

De esta manera finalizamos nuestro tutorial de desarrollo de aplicaciones


de escritorio en Java.

127
FAVA - Formación en Ambientes Virtuales de Aprendizaje