From 3c7a120314ed4bf7fa10f210c3856de8ed7190b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Cort=C3=A9s?= Date: Tue, 14 May 2019 13:07:47 -0400 Subject: [PATCH] arreglada validacion de serie ejemplar y cosas de la vista --- script.sql | 1 + src/main/java/xyz/danielcortes/App.java | 23 ++++++++++++++++--- .../libro/LibroSearchController.java | 2 +- .../repository/EjemplarRepository.java | 12 ++++++++-- .../validator/EjemplarValidator.java | 14 ++--------- 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/script.sql b/script.sql index ac4eb69..d4791d9 100644 --- a/script.sql +++ b/script.sql @@ -88,6 +88,7 @@ create table ejemplar serie varchar(255) not null, libro_id int unsigned not null, estado_id int unsigned default 1, + unique key serie_libro (serie, libro_id), foreign key (libro_id) references libro (id) on delete restrict on update cascade, foreign key (estado_id) references estado (id) on delete restrict on update cascade ); diff --git a/src/main/java/xyz/danielcortes/App.java b/src/main/java/xyz/danielcortes/App.java index f199e31..a8c8a19 100644 --- a/src/main/java/xyz/danielcortes/App.java +++ b/src/main/java/xyz/danielcortes/App.java @@ -1,5 +1,7 @@ package xyz.danielcortes; +import java.awt.Toolkit; +import java.lang.reflect.Field; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import xyz.danielcortes.controllers.LaunchController; @@ -13,12 +15,27 @@ public class App { } private static void setupLookAndFeel(){ + System.setProperty("awt.useSystemAAFontSettings","lcd"); + System.setProperty("swing.aatext", "true"); + try { - //UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); - UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); - //UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); + String windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; + String motif ="com.sun.java.swing.plaf.motif.MotifLookAndFeel"; + String nimbus = "javax.swing.plaf.nimbus.NimbusLookAndFeel"; + String metal = "javax.swing.plaf.metal.MetalLookAndFeel"; + + UIManager.setLookAndFeel(metal); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { e.printStackTrace(); } + + try { + Toolkit xToolkit = Toolkit.getDefaultToolkit(); + Field awtAppClassNameField = xToolkit.getClass().getDeclaredField("awtAppClassName"); + awtAppClassNameField.setAccessible(true); + awtAppClassNameField.set(xToolkit, "JAVA"); + } catch (IllegalAccessException | NoSuchFieldException e) { + e.printStackTrace(); + } } } diff --git a/src/main/java/xyz/danielcortes/controllers/libro/LibroSearchController.java b/src/main/java/xyz/danielcortes/controllers/libro/LibroSearchController.java index 98f3420..2a72958 100644 --- a/src/main/java/xyz/danielcortes/controllers/libro/LibroSearchController.java +++ b/src/main/java/xyz/danielcortes/controllers/libro/LibroSearchController.java @@ -110,7 +110,7 @@ public class LibroSearchController extends BaseController { if (serie == null) return; - if (!this.ejemplarValidator.validateSerie(serie)) + if (!this.ejemplarValidator.validateSerie(serie, libro.getId())) return; Ejemplar ejemplar = new Ejemplar(); diff --git a/src/main/java/xyz/danielcortes/repository/EjemplarRepository.java b/src/main/java/xyz/danielcortes/repository/EjemplarRepository.java index 128e0b6..f9c2337 100644 --- a/src/main/java/xyz/danielcortes/repository/EjemplarRepository.java +++ b/src/main/java/xyz/danielcortes/repository/EjemplarRepository.java @@ -67,10 +67,18 @@ public class EjemplarRepository { em.getTransaction().commit(); } - public boolean exists(String serie, Integer id) { - Query query = em.createQuery("SELECT count(e) FROM Ejemplar e WHERE serie = :serie and id != :id"); + public boolean exists(String serie, Integer libro_id) { + Query query = em.createQuery("SELECT count(e) FROM Ejemplar e WHERE serie = :serie and libro.id = :libro_id"); query.setParameter("serie", serie); + query.setParameter("libro_id", libro_id); + return (Long) query.getResultList().get(0) == 1; + } + + public boolean exists(String serie, Integer libro_id, Integer id) { + Query query = em.createQuery("SELECT count(e) FROM Ejemplar e WHERE id != :id and serie = :serie and libro.id = :libro_id"); query.setParameter("id", id); + query.setParameter("serie", serie); + query.setParameter("libro_id", libro_id); return (Long) query.getResultList().get(0) == 1; } } diff --git a/src/main/java/xyz/danielcortes/validator/EjemplarValidator.java b/src/main/java/xyz/danielcortes/validator/EjemplarValidator.java index 798155c..3ea9a4f 100644 --- a/src/main/java/xyz/danielcortes/validator/EjemplarValidator.java +++ b/src/main/java/xyz/danielcortes/validator/EjemplarValidator.java @@ -1,7 +1,6 @@ package xyz.danielcortes.validator; import javax.swing.JOptionPane; -import xyz.danielcortes.models.Ejemplar; import xyz.danielcortes.repository.EjemplarRepository; public class EjemplarValidator { @@ -12,7 +11,7 @@ public class EjemplarValidator { this.ejemplarRepository = ejemplarRepository; } - public boolean validateSerie(String serie) { + public boolean validateSerie(String serie, Integer libro_id) { if (serie == null) { JOptionPane.showMessageDialog( null, @@ -29,15 +28,7 @@ public class EjemplarValidator { JOptionPane.ERROR_MESSAGE); return false; } - - return true; - } - - public boolean validateSerie(String serie, Ejemplar original) { - if (!validateSerie(serie)) - return false; - - if (!ejemplarRepository.exists(serie, original.getId())) { + if (ejemplarRepository.exists(serie, libro_id)) { JOptionPane.showMessageDialog( null, "El numero de serie ya existe", @@ -48,5 +39,4 @@ public class EjemplarValidator { return true; } - }