SlideShare una empresa de Scribd logo
1 de 25
Practica 1Practica 1
Biblioteca MockitoBiblioteca Mockito
UNED 2016UNED 2016
EquipoEquipo
Alberto GómezAlberto Gómez
Ignacio CerezoIgnacio Cerezo
Federico GrazianoFederico Graziano
Ismael MartínIsmael Martín
Carlos LarrondoCarlos Larrondo
Carlos AlmarchaCarlos Almarcha
José BarbaJosé Barba
DocenteDocente
Carlos Luis SánchezCarlos Luis Sánchez
Gestión, requisitos y objetivosGestión, requisitos y objetivos
Análisis:
Punto de partida: De qué partimos?
Especificacion de requisitos: Definición exhaustiva del QUÉ
Metodología de trabajo:
Roles: Quién es quién?
Herramientas utilizadas:
Redmine -> Coordinación y gestión de tareas
SVN -> gestión de código fuente.
Reparto de Tareas
Detalle tecnico
Requisitos Globales: Afectan a toda la aplicación.
Requisitos asociados a Libros
Requisitos asociados a Socios
Requisitos asociados a Préstamos
AnálisisAnálisis
De dónde partimos?
http://62.204.199.127/JAVA_UNED/bea/browser/biblioteca_Mockito
revision 131
Requisitos
Globales:
[GBL-1]Soporte para conexion a Oracle
[GBL-2]Creación de menú CRUD en menú popup contextual
[GBL-3]Internacionalización de la aplicación
[GBL-4]Cierre ordenado de la aplicación
[GBL-5]Pruebas unitarias
[GBL-6]Creación de un HOW TO JUnit/Mockito
[GBL-7]Presentacion SlideShare
Socios
[SCS-1]Inclusión de una ficha para la modificación de SOCIOS
Prestamos
[PRT-1]Inclusión de una ficha para la inserción de PRESTAMOS
[PRT-2]Inclusión de una ficha para la modificación de PRESTAMOS
[PRT-3]Socios y libros ORDENADOS en combos
Libros
[LBR-1]Inclusión de una ficha para la inserción de PRESTAMOS
[LBR-2]Inclusión de una ficha para la modificación de PRESTAMOS
Metodología de trabajoMetodología de trabajo
Roles
Equipo
Carlos Almarcha - en adelante 'calmarcha‘
Carlos Larrondo - en adelante 'clarrondo‘
Federico Graziano - en adelante 'fgraziano‘
Ismael Martín - en adelante 'imartin‘
Ignacio Cerezo - en adelante 'icerezo‘
Responsable Producto
Carlos Luis Sánchez
Scrum Master
José Barba - en adelante 'jbarba‘
Herramientas
Redmain en www.hostedredmine.org para Coordinacion y
asignación de tareas
SVN para gestion de código fuente.
Metodología de trabajoMetodología de trabajo-Detalle-Detalle
Uso Redmine
Cada práctica un proyecto en RedMine.
Cada práctica tiene tareas, representadas como 'Issues‘
Cada tarea tiene un resposable asignado
Las tareas las asigna el SM.
Distribucion de tiempo efectivo del equipo
Lunes: Reunion con Responsable producto
Martes-Miercoles: Determinación y asignación de tareas
Miercoles: Reunion SM<->Equipo para aclarar dudas sobre tareas
asignadas
Jueves-Domingo: Tiempo efectivo de trabajo para el equipo
Reuniones
Lunes: Resp producto
Miercoles: SM y Equipo
En cualquier momento:A demanda del equipo.
Metodología de trabajo - Uso de SVNMetodología de trabajo - Uso de SVN
Repositorio SVN sobre ArchLinux versión 1.9.0-1
Estructura establecida:
<root>/practica1-BibliotecaGUI
|- branches
|- agomez
|- calmarcha
|- clarrondo
|- fgraziano
|- icerezo
|- imartin
|- jbarba
|- dist
|- trunk
branches:
ramas de desarrollo, una por miembro
cada tarea sera una copia del trunk en el branch del responsable
dist
espacio para entregas a jefe de producto
Trunk
codigo fuente para la práctica
Metodología de trabajo - Uso de SVNMetodología de trabajo - Uso de SVN
Ciclo de vida de una tarea sobre repositorio
Se crea tarea en RedMine, con responsable
Se crea rama desde 'trunk' contra
'branches/<responsable>/<id_tarea>‘
La rama creada evoluciona, y la tarea se resuelve
Se realiza 'merge' de la rama contra trunk
Beneficios
Premite paralalelizacion de tareas
Cada tarea tiene su espacio privado de trabajo
Perjuicios
El SM debe coordinar los cambios y hacer los 'merge's contra el trunk
CUIDADO CON PERDER CAMBIOS ENTRE VERSIONES!
Acceso a BBDD OracleAcceso a BBDD Oracle
Especificación de requisito
Posibilitar la conexión de la aplicación a bases de datos Oracle.
Revisión y modificación de clases con acceso a datos.
Estrategia de solución usada
Modificación de la lógica de conexión para permitir el uso de BD
Oracle. Esto se podrá realizar mediante parametrización.
PROBLEMA: El modo de generación de identificadores es diferente
en MySql (autogenerado) y Oracle (uso de objetos SECUENCIA).
SOLUCION:
Modificación de clases que implementan DAO, mediante
extensión de las existentes, permitiendo de esta manera la
inserción de registros.
Creación de un método estático que obtenga el valor de una
secuencia.
Modificaciones realizadas sobre elModificaciones realizadas sobre el
código existente (I)código existente (I)
Clase ConnectionManager (MODIFICACIÓN)
Selección de método de conexión mediante paramento en
fichero de configuración.
Ahora se permite MySQL u Oracle (SID o Service Name).
Clase CustomersManagementController (MODIFICACIÓN)
Instanciación de ICustomersDAO dependiendo del tipo
de conexión.
Clase BooksManagementController (MODIFICACIÓN)
Instanciación de IBooksDAO dependiendo del tipo de
conexión.
Modificaciones realizadas sobre elModificaciones realizadas sobre el
código existente (II)código existente (II)
Clase CustomersDAOImplOracle (CREACIÓN)
Sobre escritura del método insert para asignar el
identificador del socio mediante consulta del valor de una
secuencia.
Clase BooksDAOImplOracle (CREACIÓN)
Sobre escritura del método insert para asignar el
identificador del libro mediante consulta del valor de una
secuencia.
Clase UtilsOracle (CREACIÓN)
Incluye un método estático que devuelve el valor
(NEXTVAL) de una secuencia, a partir del nombre de la
misma.
Menú CRUD contextualMenú CRUD contextual
Especificación de requisito
Inclusión de un menú contextual para la realización de la
operaciones CRUD en el componente socios. Éstas serán:
Añadir
Editar
Eliminar
Estrategia de solución usada
Reutilización del código del controlador, realizando las
llamadas de la misma manera que lo hacen los elementos
de la botonera.
Creación de los elementos necesarios y asociación con los
métodos anteriormente comentados
Modificaciones realizadas sobre elModificaciones realizadas sobre el
código existentecódigo existente
Clase CustomerManagementView (MODIFICACIÓN)
Creación de elemento JPopMenu.
Creación de ítems que conforman el menú.
Asociación de listeners a estos ítems.
Clase CustomerManagementController (MODIFICACIÓN)
Modificación de método de gestión de listeners
Aspecto del menú contextual trasAspecto del menú contextual tras
implementación del cambioimplementación del cambio
Requisitos asociados a LibrosRequisitos asociados a Libros
Objetivo
Adecuar el proyecto Biblioteca-Mockito al MVC. En la
parte de libros se pide asemejar toda la funcionalidad en
una sola ficha respetando el modelo MVC.
Resultado
Para cumplir el objetivo, previamente se ha procedido a
entender la funcionalidad existente, hemos adquirido el
conocimiento de MVC para adecuar la practica a la
funcionalidad requerida.
Una vez adquirida los conocimientos hemos eliminado el
paquete “es.csc.biblioteca.books.gui” la vista y el
controlador de la parte Detalle asumiendo dicha
funcionalidad en la pantalla principal.
Lógica ModificadaLógica Modificada
Eliminación de Clases
BookDetailsController.java.
BookDetailsView.java.
Modificación de Clases
BooksManagementController. Adquiere la funcionalidad
de la clase eliminada BookDetailsController.java
actionPerformed
getBook
checkMandatoryFields
doClose
BooksManagementView. Adquieres la funcionalidad/métodos de
la clase eliminada BookDetailsView.java
SetOkListener SetBook getBook hideWarnin
SetCancelListener showWarningTitle showWarningTopic setEstado
Dificultades EncontradasDificultades Encontradas
Dificultades a nivel conceptual
Funcionamiento del setLayout
Funcionamiento de biblioteca Mockito para pruebas
integradas.
Otras dificultades
Problemas al cargar los datos del detalle cuando teníamos
seleccionado un libro en el multiregistro.
FUNCIONALIDADES PRESTAMOSFUNCIONALIDADES PRESTAMOS
BIBLIOTECA MOCKITOBIBLIOTECA MOCKITO
ESQUEMA BASE
REQUISITO. Detalle el requisito (objetivo a cumplir).
DESARROLLO. Breve descripción del desarrollo.
RESOLUCIÓN. Problemas encontrados y su resolución.
MODELO MVC PRESTAMOS
REQUISITO: Mantener modelo MVC de desarrollo de la aplicación del que se parte
previamente: Biblioteca_mockito.
DESARROLLO. La mayor parte del desarrollo previo es válida. La separación impuesta
por el patrón MVC está claramente definida. En la parte de Préstamos no estaba
desarrollada la ventana externa a eliminar pero si que necesitábamos incorporar
código para cubrir funcionalidad.
RESOLUCIÓN. Las clases que eran suceptibles de modificar eran las clases del
paquete es.csc.biblioteca.loans.gui: LoansManagementView y
LoansManagementController y las clases para manejar los modelos
CustomersDAOImpl y BooksDAOImpl.
Decidimos modificar exclusivamente las clases del paquete es.csc.biblioteca.loans.gui
para no interferir en el trabajo de los demás. La consecuencia será que tendremos un
par de métodos en la clase controladora "LoansManagementController" que bien
podrían estar en las clases de los paquetes de modelo.
ACCESO AL MODELO COMPLETO DE LAACCESO AL MODELO COMPLETO DE LA
APLICACIÓNAPLICACIÓN
REQUISITO: Necesidad de acceso al modelo completo de la aplicación para poder
cumplir con los requisitos funcionales y de desarrollo.
DESARROLLO. La funcionalidad de Préstamos, a diferencia de la funcionalidad de
Socios o de Libros, necesita el acceso completo al modelo. No solo se necesita
acceder al modelo de Préstamos, sino también al modelo de Socios y Libros puesto
que se debe mostrar al usuario información sobre estos modelos a través de los
componentes JComboBox.
RESOLUCIÓN.Para acceder al modelo de préstamos inicialmente se importaron las
clases:
import es.csc.biblioteca.loans.dao.ILoansDAO;
import es.csc.biblioteca.loans.dao.LoansDAOException;
import es.csc.biblioteca.loans.dao.LoansDAOImpl;
Para acceder al resto de modelos se incluyó las siguientes importaciones:
import es.csc.biblioteca.customers.dao.*;
import es.csc.biblioteca.books.dao.*;
import es.csc.biblioteca.loans.dao.LoanDTO;
ELIMINACIÓNVENTANA EXTERNA POR FICHA
INTERNA
REQUISITO: Eliminar ventana externa de administración de prestamos. Codigo previo del que se parte
en Biblioteca_mockito.
DESARROLLO. Incorporación de 8 elementos visuales swing dentro de la ventana de Préstamos
objeto de la clase LoansManagemenView. Conformación de la botonera:Añadir, Editar y Eliminar.
Aceptar y Cancelar. Nuevas funcionalidades implementada en LoansManagementController.
RESOLUCIÓN. Se mantiene el modelo MVC. Mientras la ventana de Préstamos esté abierta se
mantendrá la conexión con los modelos. Esto se realizó dentro de la clase controladora ampliando
atributos y modificando su método constructor.
CONTROL DE LA FUNCIONALIDAD DESDE LACONTROL DE LA FUNCIONALIDAD DESDE LA
BOTONERABOTONERA

REQUISITO: Solo botón "Eliminar" funciona. Seleccionando sobre la tabla de
Préstamos aquellos a ser borrado de base de datos. El resto de botones están velados
puesto que no tienen funcionalidad. Habilitar.

DESARROLLO. Del resto de botones daremos funcionalidad a "Añadir" y "Editar".
Para ello generaremos sus eventos en la clase "LoansManagementView" y
atendiendolos desde la clase "LoansManagementController".

RESOLUCIÓN. Necesitamos dos nuevos botones para un correcto manejo de la
funcionalidad: "Aceptar" y "Cancelar".
Para conocer si al Aceptar se debe añadir o corregir la edición de un préstamo,
utilizaremos una variable de control "ultimaaccion". Esto se hará en la clase de
Control de Préstamos LoansManagementController.
CONTROL DE ERRORES DE ESCRITURA ENCONTROL DE ERRORES DE ESCRITURA EN
LOS COMPONENTES DE LA FICHALOS COMPONENTES DE LA FICHA
REQUISITO: La aplicación no debe aceptar que el usuario introduzca valores en
blanco. Los errores que pueden producirse a priori son:

El usuario introduce fechas en blanco.

El usuario edita sin seleccionar ninguna columna.
DESARROLLO. Para cumplir con este requisito generaremos métodos en la clase
vista "LoansManagementView" que comprueben que el valor de los componentes es
correcto y que hay alguna fila seleccionada de la tabla.
Estos métodos serán llamados desde la clase "LoansManagementController" para
utilizarlos en la lógica de control de la actualización de Préstamos.
RESOLUCIÓN.

Error: Ordenación alfabética de los combos. Sol: incorporar el método estático
Collections.sort().

Error: Fechas de la ficha en blanco. Sol: métodos: public boolean isFechaValida()--
>(fecha inicio y fecha fin), public boolean isSelectedRow()-->seleccione un registro de
tipo prestamo.
POPUP PRESTAMOS BOTON DERECHOPOPUP PRESTAMOS BOTON DERECHO
DEL MOUSEDEL MOUSE

REQUISITO. Basándonos en el desarrollo previo de esta funcionalidad sobre clientes
(Costumers) e indicando el código modificado por nuestro Scrum Máster
implementar estas modificaciones adecuándolas a las clases y métodos definidas en
Loans.

DESARROLLO. Clases modificadas:

LoansManagementController.java

LoansManagementView..java

LoansManagementView..form

RESOLUCIÓN. La dificultad surgió a la hora de editar el codigo “protegido” de la
clase LoansManagementView.java y más concretamente en el método private void
initComponents(). No se encontró la fórmula que dispone Netbeans para poder
modificar ese código que genera automáticamente el IDE al diseñar el formulario.
Para poder editarlo se utilizó otro entorno de progración; en nuestro caso
DreamWeaver. Se modificó y tras volver abrir el fichero desde Netbeans, se confirma
que este código vuelve a ser “protegido” y no permite su edición desde este IDE.
GENERACIÓN DE PRUEBAS UNITARIASGENERACIÓN DE PRUEBAS UNITARIAS
PRESTAMOSPRESTAMOS
REQUISITO. Para las pruebas unitarias nos basamos en replicar las clases generadas para
las otras funcionalides de Socios y Libros. Se generó una clase para probar métodos de la
clase modelo "LoansDAOTest" y otra clase para probar la vista "LoansTableModel".
DESARROLLO. Las pruebas se soportan sobre las librerías JUnit y Mockito. Las pruebas
sobre la clase vista "LoansTableModel" se realizan con Mockito para evitar utilizar el
repositorio original del desarrollo que es MySQL. Mediante la librería hsqldb se genera una
base de datos en memoria simulando el entorno de Producción.
RESOLUCIÓN. La dificultad surgió a la hora adecuar el método testUpdate() de la clase
"LoansDAOTest". Estas pruebas unitarias se basan en Junit.
Error en la sentecia: LoanDTO expResult = instance.findByPrimaryKey(idPrestamo);
Detalle error: Detalle:PrestamoDTO{idPrestamo=13, idSocio=CustomerDTO{idSocio=1, dni=null,
nombre=Fernandez Najera, apellidos=Luis adfd , direccion=null, fechaAlta=null},
idLibro=LibroDTO{idLibro=1, nombre=Informatica sdaf, autor=null, tema=null}, fechaInicio=2000-01-01,
fechaFin=2015-11-21}
Sol: por determinar.
ERRORES DETECTADOS SCRUM MASTERERRORES DETECTADOS SCRUM MASTER

ERROR: Edición de prestamo sin fecha fin.
DETALLE DEL ERROR. Consola:
run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at
es.csc.biblioteca.loans.gui.LoansManagementView.setEditFicha(LoansManagementView.java:461)
At
es.csc.biblioteca.loans.gui.LoansManagementController.editLoan(LoansManagementController.jav
a:227) etc...
SOLUCIÓN. No se considera q la fecha fin puede ser nula,está en este método:
public void setEditFicha(){
java.sql.Date fecha = (java.sql.Date)this.tblLoans.getValueAt(this.tblLoans.getSelectedRow(),4);
long longfecha = fecha.getTime();
setFechaInicio(new Date(longfecha));
fecha = (java.sql.Date)this.tblLoans.getValueAt(this.tblLoans.getSelectedRow(),5);
longfecha = fecha.getTime(); <-- AQUI ESTA EL ERROR
SOL: java.sql.Date fechaFin=(fecha == null ? fecha : new java.sql.Date(fecha.getTime()) );
setFechaFin(new Date(longfecha));
}

Más contenido relacionado

La actualidad más candente

GUI Salario en java con NetBeans
GUI Salario en java con NetBeansGUI Salario en java con NetBeans
GUI Salario en java con NetBeansEmerson Garay
 
Persistencia de datos_hibernate_arquitecturas_de_software
Persistencia de datos_hibernate_arquitecturas_de_softwarePersistencia de datos_hibernate_arquitecturas_de_software
Persistencia de datos_hibernate_arquitecturas_de_softwareJose Luis Bugarin Peche
 
Documentacion struts2 laura.palma
Documentacion struts2 laura.palmaDocumentacion struts2 laura.palma
Documentacion struts2 laura.palmaLaura Palma
 
Codificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansCodificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansEmerson Garay
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver FulgueraJavier Oliver Fulguera
 
Introducción a java EE 7
Introducción a java EE 7Introducción a java EE 7
Introducción a java EE 7Carlos Camacho
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corporacion de Industrias Tecnologicas S.A.
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xmlgilhorak
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter ADWE Team
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006Samuel Marrero
 
Programación Funcional en JavaScript
Programación Funcional en JavaScriptProgramación Funcional en JavaScript
Programación Funcional en JavaScriptJavier Vélez Reyes
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEFernando Montaño
 

La actualidad más candente (20)

GUI Salario en java con NetBeans
GUI Salario en java con NetBeansGUI Salario en java con NetBeans
GUI Salario en java con NetBeans
 
Persistencia de datos_hibernate_arquitecturas_de_software
Persistencia de datos_hibernate_arquitecturas_de_softwarePersistencia de datos_hibernate_arquitecturas_de_software
Persistencia de datos_hibernate_arquitecturas_de_software
 
Documentacion struts2 laura.palma
Documentacion struts2 laura.palmaDocumentacion struts2 laura.palma
Documentacion struts2 laura.palma
 
Codificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansCodificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeans
 
Arquitectura java web
Arquitectura java webArquitectura java web
Arquitectura java web
 
Documentacion struts2
Documentacion struts2Documentacion struts2
Documentacion struts2
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
Introducción a java EE 7
Introducción a java EE 7Introducción a java EE 7
Introducción a java EE 7
 
Documentacion struts 2
Documentacion struts 2Documentacion struts 2
Documentacion struts 2
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Documentacionstruts2 luiggi
Documentacionstruts2 luiggiDocumentacionstruts2 luiggi
Documentacionstruts2 luiggi
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Frameworks Java
Frameworks JavaFrameworks Java
Frameworks Java
 
Curso Ejb3
Curso Ejb3Curso Ejb3
Curso Ejb3
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 
Programación Funcional en JavaScript
Programación Funcional en JavaScriptProgramación Funcional en JavaScript
Programación Funcional en JavaScript
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EE
 

Destacado (20)

Mockito intro
Mockito introMockito intro
Mockito intro
 
윤회 전생 (Korean)
윤회 전생 (Korean)윤회 전생 (Korean)
윤회 전생 (Korean)
 
Tics2013
Tics2013Tics2013
Tics2013
 
StråLing
StråLingStråLing
StråLing
 
Npcforceweekly4 8 july2011
Npcforceweekly4 8 july2011Npcforceweekly4 8 july2011
Npcforceweekly4 8 july2011
 
Examen Balacera
Examen BalaceraExamen Balacera
Examen Balacera
 
Karla guzmán
Karla guzmánKarla guzmán
Karla guzmán
 
INT2016 - Paul Barford (comScore) - Invalid Traffic & Viewability: what is th...
INT2016 - Paul Barford (comScore) - Invalid Traffic & Viewability: what is th...INT2016 - Paul Barford (comScore) - Invalid Traffic & Viewability: what is th...
INT2016 - Paul Barford (comScore) - Invalid Traffic & Viewability: what is th...
 
Actividad #8 innovatic
Actividad #8 innovaticActividad #8 innovatic
Actividad #8 innovatic
 
Mockito intro
Mockito introMockito intro
Mockito intro
 
MUHAMMAD SHOAIB CV
MUHAMMAD SHOAIB CVMUHAMMAD SHOAIB CV
MUHAMMAD SHOAIB CV
 
Family survey
Family surveyFamily survey
Family survey
 
Winnie the pooh y women secret 2011
Winnie the pooh y women secret 2011Winnie the pooh y women secret 2011
Winnie the pooh y women secret 2011
 
Nstp
NstpNstp
Nstp
 
Sesion12-componentes Visuales java
Sesion12-componentes Visuales javaSesion12-componentes Visuales java
Sesion12-componentes Visuales java
 
ENG 3A | Nature of Listening
ENG 3A | Nature of ListeningENG 3A | Nature of Listening
ENG 3A | Nature of Listening
 
Role of an architect
Role of an architectRole of an architect
Role of an architect
 
Mockito tutorial for beginners
Mockito tutorial for beginnersMockito tutorial for beginners
Mockito tutorial for beginners
 
3.creacion de componentes visuales
3.creacion de componentes visuales3.creacion de componentes visuales
3.creacion de componentes visuales
 
ANS (SYMPATHETIC and PARASYMPATHETIC)
ANS (SYMPATHETIC and PARASYMPATHETIC)ANS (SYMPATHETIC and PARASYMPATHETIC)
ANS (SYMPATHETIC and PARASYMPATHETIC)
 

Similar a [UNED2016] Practica 1 - Biblioteca mockito (20)

Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
MVC
MVCMVC
MVC
 
Presentación1
Presentación1Presentación1
Presentación1
 
Ruta de aprendizaje
Ruta de aprendizajeRuta de aprendizaje
Ruta de aprendizaje
 
Germán Peraferrer: Cormo Framework
Germán Peraferrer: Cormo FrameworkGermán Peraferrer: Cormo Framework
Germán Peraferrer: Cormo Framework
 
Cormo Framework
Cormo FrameworkCormo Framework
Cormo Framework
 
Patrones comportamiento
Patrones comportamientoPatrones comportamiento
Patrones comportamiento
 
ORMphp Beta v1.0 - Presentación
ORMphp Beta v1.0 - PresentaciónORMphp Beta v1.0 - Presentación
ORMphp Beta v1.0 - Presentación
 
Framework
FrameworkFramework
Framework
 
3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño
 
S01-s1-MVC.pptx
S01-s1-MVC.pptxS01-s1-MVC.pptx
S01-s1-MVC.pptx
 
PHP AJAX JAVASCRIPT MYSQL JQUERY
PHP AJAX JAVASCRIPT MYSQL JQUERYPHP AJAX JAVASCRIPT MYSQL JQUERY
PHP AJAX JAVASCRIPT MYSQL JQUERY
 
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
CURSO APLICACIONES WEB
CURSO APLICACIONES WEBCURSO APLICACIONES WEB
CURSO APLICACIONES WEB
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Manualcake
ManualcakeManualcake
Manualcake
 

Último

origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxBeatrizQuijano2
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIAFabiolaGarcia751855
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primariaWilian24
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxpvtablets2023
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxNadiaMartnez11
 

Último (20)

origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 

[UNED2016] Practica 1 - Biblioteca mockito

  • 1. Practica 1Practica 1 Biblioteca MockitoBiblioteca Mockito UNED 2016UNED 2016 EquipoEquipo Alberto GómezAlberto Gómez Ignacio CerezoIgnacio Cerezo Federico GrazianoFederico Graziano Ismael MartínIsmael Martín Carlos LarrondoCarlos Larrondo Carlos AlmarchaCarlos Almarcha José BarbaJosé Barba DocenteDocente Carlos Luis SánchezCarlos Luis Sánchez
  • 2. Gestión, requisitos y objetivosGestión, requisitos y objetivos Análisis: Punto de partida: De qué partimos? Especificacion de requisitos: Definición exhaustiva del QUÉ Metodología de trabajo: Roles: Quién es quién? Herramientas utilizadas: Redmine -> Coordinación y gestión de tareas SVN -> gestión de código fuente. Reparto de Tareas Detalle tecnico Requisitos Globales: Afectan a toda la aplicación. Requisitos asociados a Libros Requisitos asociados a Socios Requisitos asociados a Préstamos
  • 3. AnálisisAnálisis De dónde partimos? http://62.204.199.127/JAVA_UNED/bea/browser/biblioteca_Mockito revision 131 Requisitos Globales: [GBL-1]Soporte para conexion a Oracle [GBL-2]Creación de menú CRUD en menú popup contextual [GBL-3]Internacionalización de la aplicación [GBL-4]Cierre ordenado de la aplicación [GBL-5]Pruebas unitarias [GBL-6]Creación de un HOW TO JUnit/Mockito [GBL-7]Presentacion SlideShare Socios [SCS-1]Inclusión de una ficha para la modificación de SOCIOS Prestamos [PRT-1]Inclusión de una ficha para la inserción de PRESTAMOS [PRT-2]Inclusión de una ficha para la modificación de PRESTAMOS [PRT-3]Socios y libros ORDENADOS en combos Libros [LBR-1]Inclusión de una ficha para la inserción de PRESTAMOS [LBR-2]Inclusión de una ficha para la modificación de PRESTAMOS
  • 4. Metodología de trabajoMetodología de trabajo Roles Equipo Carlos Almarcha - en adelante 'calmarcha‘ Carlos Larrondo - en adelante 'clarrondo‘ Federico Graziano - en adelante 'fgraziano‘ Ismael Martín - en adelante 'imartin‘ Ignacio Cerezo - en adelante 'icerezo‘ Responsable Producto Carlos Luis Sánchez Scrum Master José Barba - en adelante 'jbarba‘ Herramientas Redmain en www.hostedredmine.org para Coordinacion y asignación de tareas SVN para gestion de código fuente.
  • 5. Metodología de trabajoMetodología de trabajo-Detalle-Detalle Uso Redmine Cada práctica un proyecto en RedMine. Cada práctica tiene tareas, representadas como 'Issues‘ Cada tarea tiene un resposable asignado Las tareas las asigna el SM. Distribucion de tiempo efectivo del equipo Lunes: Reunion con Responsable producto Martes-Miercoles: Determinación y asignación de tareas Miercoles: Reunion SM<->Equipo para aclarar dudas sobre tareas asignadas Jueves-Domingo: Tiempo efectivo de trabajo para el equipo Reuniones Lunes: Resp producto Miercoles: SM y Equipo En cualquier momento:A demanda del equipo.
  • 6. Metodología de trabajo - Uso de SVNMetodología de trabajo - Uso de SVN Repositorio SVN sobre ArchLinux versión 1.9.0-1 Estructura establecida: <root>/practica1-BibliotecaGUI |- branches |- agomez |- calmarcha |- clarrondo |- fgraziano |- icerezo |- imartin |- jbarba |- dist |- trunk branches: ramas de desarrollo, una por miembro cada tarea sera una copia del trunk en el branch del responsable dist espacio para entregas a jefe de producto Trunk codigo fuente para la práctica
  • 7. Metodología de trabajo - Uso de SVNMetodología de trabajo - Uso de SVN Ciclo de vida de una tarea sobre repositorio Se crea tarea en RedMine, con responsable Se crea rama desde 'trunk' contra 'branches/<responsable>/<id_tarea>‘ La rama creada evoluciona, y la tarea se resuelve Se realiza 'merge' de la rama contra trunk Beneficios Premite paralalelizacion de tareas Cada tarea tiene su espacio privado de trabajo Perjuicios El SM debe coordinar los cambios y hacer los 'merge's contra el trunk CUIDADO CON PERDER CAMBIOS ENTRE VERSIONES!
  • 8. Acceso a BBDD OracleAcceso a BBDD Oracle Especificación de requisito Posibilitar la conexión de la aplicación a bases de datos Oracle. Revisión y modificación de clases con acceso a datos. Estrategia de solución usada Modificación de la lógica de conexión para permitir el uso de BD Oracle. Esto se podrá realizar mediante parametrización. PROBLEMA: El modo de generación de identificadores es diferente en MySql (autogenerado) y Oracle (uso de objetos SECUENCIA). SOLUCION: Modificación de clases que implementan DAO, mediante extensión de las existentes, permitiendo de esta manera la inserción de registros. Creación de un método estático que obtenga el valor de una secuencia.
  • 9. Modificaciones realizadas sobre elModificaciones realizadas sobre el código existente (I)código existente (I) Clase ConnectionManager (MODIFICACIÓN) Selección de método de conexión mediante paramento en fichero de configuración. Ahora se permite MySQL u Oracle (SID o Service Name). Clase CustomersManagementController (MODIFICACIÓN) Instanciación de ICustomersDAO dependiendo del tipo de conexión. Clase BooksManagementController (MODIFICACIÓN) Instanciación de IBooksDAO dependiendo del tipo de conexión.
  • 10. Modificaciones realizadas sobre elModificaciones realizadas sobre el código existente (II)código existente (II) Clase CustomersDAOImplOracle (CREACIÓN) Sobre escritura del método insert para asignar el identificador del socio mediante consulta del valor de una secuencia. Clase BooksDAOImplOracle (CREACIÓN) Sobre escritura del método insert para asignar el identificador del libro mediante consulta del valor de una secuencia. Clase UtilsOracle (CREACIÓN) Incluye un método estático que devuelve el valor (NEXTVAL) de una secuencia, a partir del nombre de la misma.
  • 11. Menú CRUD contextualMenú CRUD contextual Especificación de requisito Inclusión de un menú contextual para la realización de la operaciones CRUD en el componente socios. Éstas serán: Añadir Editar Eliminar Estrategia de solución usada Reutilización del código del controlador, realizando las llamadas de la misma manera que lo hacen los elementos de la botonera. Creación de los elementos necesarios y asociación con los métodos anteriormente comentados
  • 12. Modificaciones realizadas sobre elModificaciones realizadas sobre el código existentecódigo existente Clase CustomerManagementView (MODIFICACIÓN) Creación de elemento JPopMenu. Creación de ítems que conforman el menú. Asociación de listeners a estos ítems. Clase CustomerManagementController (MODIFICACIÓN) Modificación de método de gestión de listeners
  • 13. Aspecto del menú contextual trasAspecto del menú contextual tras implementación del cambioimplementación del cambio
  • 14. Requisitos asociados a LibrosRequisitos asociados a Libros Objetivo Adecuar el proyecto Biblioteca-Mockito al MVC. En la parte de libros se pide asemejar toda la funcionalidad en una sola ficha respetando el modelo MVC. Resultado Para cumplir el objetivo, previamente se ha procedido a entender la funcionalidad existente, hemos adquirido el conocimiento de MVC para adecuar la practica a la funcionalidad requerida. Una vez adquirida los conocimientos hemos eliminado el paquete “es.csc.biblioteca.books.gui” la vista y el controlador de la parte Detalle asumiendo dicha funcionalidad en la pantalla principal.
  • 15. Lógica ModificadaLógica Modificada Eliminación de Clases BookDetailsController.java. BookDetailsView.java. Modificación de Clases BooksManagementController. Adquiere la funcionalidad de la clase eliminada BookDetailsController.java actionPerformed getBook checkMandatoryFields doClose BooksManagementView. Adquieres la funcionalidad/métodos de la clase eliminada BookDetailsView.java SetOkListener SetBook getBook hideWarnin SetCancelListener showWarningTitle showWarningTopic setEstado
  • 16. Dificultades EncontradasDificultades Encontradas Dificultades a nivel conceptual Funcionamiento del setLayout Funcionamiento de biblioteca Mockito para pruebas integradas. Otras dificultades Problemas al cargar los datos del detalle cuando teníamos seleccionado un libro en el multiregistro.
  • 17. FUNCIONALIDADES PRESTAMOSFUNCIONALIDADES PRESTAMOS BIBLIOTECA MOCKITOBIBLIOTECA MOCKITO ESQUEMA BASE REQUISITO. Detalle el requisito (objetivo a cumplir). DESARROLLO. Breve descripción del desarrollo. RESOLUCIÓN. Problemas encontrados y su resolución.
  • 18. MODELO MVC PRESTAMOS REQUISITO: Mantener modelo MVC de desarrollo de la aplicación del que se parte previamente: Biblioteca_mockito. DESARROLLO. La mayor parte del desarrollo previo es válida. La separación impuesta por el patrón MVC está claramente definida. En la parte de Préstamos no estaba desarrollada la ventana externa a eliminar pero si que necesitábamos incorporar código para cubrir funcionalidad. RESOLUCIÓN. Las clases que eran suceptibles de modificar eran las clases del paquete es.csc.biblioteca.loans.gui: LoansManagementView y LoansManagementController y las clases para manejar los modelos CustomersDAOImpl y BooksDAOImpl. Decidimos modificar exclusivamente las clases del paquete es.csc.biblioteca.loans.gui para no interferir en el trabajo de los demás. La consecuencia será que tendremos un par de métodos en la clase controladora "LoansManagementController" que bien podrían estar en las clases de los paquetes de modelo.
  • 19. ACCESO AL MODELO COMPLETO DE LAACCESO AL MODELO COMPLETO DE LA APLICACIÓNAPLICACIÓN REQUISITO: Necesidad de acceso al modelo completo de la aplicación para poder cumplir con los requisitos funcionales y de desarrollo. DESARROLLO. La funcionalidad de Préstamos, a diferencia de la funcionalidad de Socios o de Libros, necesita el acceso completo al modelo. No solo se necesita acceder al modelo de Préstamos, sino también al modelo de Socios y Libros puesto que se debe mostrar al usuario información sobre estos modelos a través de los componentes JComboBox. RESOLUCIÓN.Para acceder al modelo de préstamos inicialmente se importaron las clases: import es.csc.biblioteca.loans.dao.ILoansDAO; import es.csc.biblioteca.loans.dao.LoansDAOException; import es.csc.biblioteca.loans.dao.LoansDAOImpl; Para acceder al resto de modelos se incluyó las siguientes importaciones: import es.csc.biblioteca.customers.dao.*; import es.csc.biblioteca.books.dao.*; import es.csc.biblioteca.loans.dao.LoanDTO;
  • 20. ELIMINACIÓNVENTANA EXTERNA POR FICHA INTERNA REQUISITO: Eliminar ventana externa de administración de prestamos. Codigo previo del que se parte en Biblioteca_mockito. DESARROLLO. Incorporación de 8 elementos visuales swing dentro de la ventana de Préstamos objeto de la clase LoansManagemenView. Conformación de la botonera:Añadir, Editar y Eliminar. Aceptar y Cancelar. Nuevas funcionalidades implementada en LoansManagementController. RESOLUCIÓN. Se mantiene el modelo MVC. Mientras la ventana de Préstamos esté abierta se mantendrá la conexión con los modelos. Esto se realizó dentro de la clase controladora ampliando atributos y modificando su método constructor.
  • 21. CONTROL DE LA FUNCIONALIDAD DESDE LACONTROL DE LA FUNCIONALIDAD DESDE LA BOTONERABOTONERA  REQUISITO: Solo botón "Eliminar" funciona. Seleccionando sobre la tabla de Préstamos aquellos a ser borrado de base de datos. El resto de botones están velados puesto que no tienen funcionalidad. Habilitar.  DESARROLLO. Del resto de botones daremos funcionalidad a "Añadir" y "Editar". Para ello generaremos sus eventos en la clase "LoansManagementView" y atendiendolos desde la clase "LoansManagementController".  RESOLUCIÓN. Necesitamos dos nuevos botones para un correcto manejo de la funcionalidad: "Aceptar" y "Cancelar". Para conocer si al Aceptar se debe añadir o corregir la edición de un préstamo, utilizaremos una variable de control "ultimaaccion". Esto se hará en la clase de Control de Préstamos LoansManagementController.
  • 22. CONTROL DE ERRORES DE ESCRITURA ENCONTROL DE ERRORES DE ESCRITURA EN LOS COMPONENTES DE LA FICHALOS COMPONENTES DE LA FICHA REQUISITO: La aplicación no debe aceptar que el usuario introduzca valores en blanco. Los errores que pueden producirse a priori son:  El usuario introduce fechas en blanco.  El usuario edita sin seleccionar ninguna columna. DESARROLLO. Para cumplir con este requisito generaremos métodos en la clase vista "LoansManagementView" que comprueben que el valor de los componentes es correcto y que hay alguna fila seleccionada de la tabla. Estos métodos serán llamados desde la clase "LoansManagementController" para utilizarlos en la lógica de control de la actualización de Préstamos. RESOLUCIÓN.  Error: Ordenación alfabética de los combos. Sol: incorporar el método estático Collections.sort().  Error: Fechas de la ficha en blanco. Sol: métodos: public boolean isFechaValida()-- >(fecha inicio y fecha fin), public boolean isSelectedRow()-->seleccione un registro de tipo prestamo.
  • 23. POPUP PRESTAMOS BOTON DERECHOPOPUP PRESTAMOS BOTON DERECHO DEL MOUSEDEL MOUSE  REQUISITO. Basándonos en el desarrollo previo de esta funcionalidad sobre clientes (Costumers) e indicando el código modificado por nuestro Scrum Máster implementar estas modificaciones adecuándolas a las clases y métodos definidas en Loans.  DESARROLLO. Clases modificadas:  LoansManagementController.java  LoansManagementView..java  LoansManagementView..form  RESOLUCIÓN. La dificultad surgió a la hora de editar el codigo “protegido” de la clase LoansManagementView.java y más concretamente en el método private void initComponents(). No se encontró la fórmula que dispone Netbeans para poder modificar ese código que genera automáticamente el IDE al diseñar el formulario. Para poder editarlo se utilizó otro entorno de progración; en nuestro caso DreamWeaver. Se modificó y tras volver abrir el fichero desde Netbeans, se confirma que este código vuelve a ser “protegido” y no permite su edición desde este IDE.
  • 24. GENERACIÓN DE PRUEBAS UNITARIASGENERACIÓN DE PRUEBAS UNITARIAS PRESTAMOSPRESTAMOS REQUISITO. Para las pruebas unitarias nos basamos en replicar las clases generadas para las otras funcionalides de Socios y Libros. Se generó una clase para probar métodos de la clase modelo "LoansDAOTest" y otra clase para probar la vista "LoansTableModel". DESARROLLO. Las pruebas se soportan sobre las librerías JUnit y Mockito. Las pruebas sobre la clase vista "LoansTableModel" se realizan con Mockito para evitar utilizar el repositorio original del desarrollo que es MySQL. Mediante la librería hsqldb se genera una base de datos en memoria simulando el entorno de Producción. RESOLUCIÓN. La dificultad surgió a la hora adecuar el método testUpdate() de la clase "LoansDAOTest". Estas pruebas unitarias se basan en Junit. Error en la sentecia: LoanDTO expResult = instance.findByPrimaryKey(idPrestamo); Detalle error: Detalle:PrestamoDTO{idPrestamo=13, idSocio=CustomerDTO{idSocio=1, dni=null, nombre=Fernandez Najera, apellidos=Luis adfd , direccion=null, fechaAlta=null}, idLibro=LibroDTO{idLibro=1, nombre=Informatica sdaf, autor=null, tema=null}, fechaInicio=2000-01-01, fechaFin=2015-11-21} Sol: por determinar.
  • 25. ERRORES DETECTADOS SCRUM MASTERERRORES DETECTADOS SCRUM MASTER  ERROR: Edición de prestamo sin fecha fin. DETALLE DEL ERROR. Consola: run: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at es.csc.biblioteca.loans.gui.LoansManagementView.setEditFicha(LoansManagementView.java:461) At es.csc.biblioteca.loans.gui.LoansManagementController.editLoan(LoansManagementController.jav a:227) etc... SOLUCIÓN. No se considera q la fecha fin puede ser nula,está en este método: public void setEditFicha(){ java.sql.Date fecha = (java.sql.Date)this.tblLoans.getValueAt(this.tblLoans.getSelectedRow(),4); long longfecha = fecha.getTime(); setFechaInicio(new Date(longfecha)); fecha = (java.sql.Date)this.tblLoans.getValueAt(this.tblLoans.getSelectedRow(),5); longfecha = fecha.getTime(); <-- AQUI ESTA EL ERROR SOL: java.sql.Date fechaFin=(fecha == null ? fecha : new java.sql.Date(fecha.getTime()) ); setFechaFin(new Date(longfecha)); }