diff --git a/src/main/java/xyz/danielcortes/controllers/autor/AutorCreateController.java b/src/main/java/xyz/danielcortes/controllers/autor/AutorCreateController.java index e87fea2..f816c91 100644 --- a/src/main/java/xyz/danielcortes/controllers/autor/AutorCreateController.java +++ b/src/main/java/xyz/danielcortes/controllers/autor/AutorCreateController.java @@ -4,6 +4,7 @@ import xyz.danielcortes.controllers.BaseController; import xyz.danielcortes.controllers.LaunchController; import xyz.danielcortes.models.Autor; import xyz.danielcortes.repository.AutorRepository; +import xyz.danielcortes.validator.AutorValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.autor.AutorCreatePanel; diff --git a/src/main/java/xyz/danielcortes/controllers/autor/AutorSearchController.java b/src/main/java/xyz/danielcortes/controllers/autor/AutorSearchController.java index 121d72b..d436a34 100644 --- a/src/main/java/xyz/danielcortes/controllers/autor/AutorSearchController.java +++ b/src/main/java/xyz/danielcortes/controllers/autor/AutorSearchController.java @@ -8,6 +8,7 @@ import xyz.danielcortes.framework.BaseTableModel; import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.models.Autor; import xyz.danielcortes.repository.AutorRepository; +import xyz.danielcortes.validator.AutorValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.autor.AutorSearchPanel; diff --git a/src/main/java/xyz/danielcortes/controllers/autor/AutorUpdateController.java b/src/main/java/xyz/danielcortes/controllers/autor/AutorUpdateController.java index 0605923..c3565f2 100644 --- a/src/main/java/xyz/danielcortes/controllers/autor/AutorUpdateController.java +++ b/src/main/java/xyz/danielcortes/controllers/autor/AutorUpdateController.java @@ -5,6 +5,7 @@ import xyz.danielcortes.controllers.LaunchController; import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.models.Autor; import xyz.danielcortes.repository.AutorRepository; +import xyz.danielcortes.validator.AutorValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.autor.AutorUpdatePanel; diff --git a/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaCreateController.java b/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaCreateController.java index 8d18474..8f1a584 100644 --- a/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaCreateController.java +++ b/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaCreateController.java @@ -4,6 +4,7 @@ import xyz.danielcortes.controllers.BaseController; import xyz.danielcortes.controllers.LaunchController; import xyz.danielcortes.models.Categoria; import xyz.danielcortes.repository.CategoriaRepository; +import xyz.danielcortes.validator.CategoriaValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.categoria.CategoriaCreatePanel; diff --git a/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaSearchController.java b/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaSearchController.java index cb34b01..ea3042a 100644 --- a/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaSearchController.java +++ b/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaSearchController.java @@ -8,6 +8,7 @@ import xyz.danielcortes.framework.BaseTableModel; import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.models.Categoria; import xyz.danielcortes.repository.CategoriaRepository; +import xyz.danielcortes.validator.CategoriaValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.categoria.CategoriaSearchPanel; diff --git a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialCreateController.java b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialCreateController.java index 0dda18b..c97f450 100644 --- a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialCreateController.java +++ b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialCreateController.java @@ -4,6 +4,7 @@ import xyz.danielcortes.controllers.BaseController; import xyz.danielcortes.controllers.LaunchController; import xyz.danielcortes.models.Editorial; import xyz.danielcortes.repository.EditorialRepository; +import xyz.danielcortes.validator.EditorialValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.editorial.EditorialCreatePanel; diff --git a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialSearchController.java b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialSearchController.java index e2ec420..feed66f 100644 --- a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialSearchController.java +++ b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialSearchController.java @@ -8,6 +8,7 @@ import xyz.danielcortes.framework.BaseTableModel; import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.models.Editorial; import xyz.danielcortes.repository.EditorialRepository; +import xyz.danielcortes.validator.EditorialValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.editorial.EditorialSearchPanel; diff --git a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialUpdateController.java b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialUpdateController.java index 3936756..ec188ed 100644 --- a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialUpdateController.java +++ b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialUpdateController.java @@ -5,6 +5,7 @@ import xyz.danielcortes.controllers.LaunchController; import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.models.Editorial; import xyz.danielcortes.repository.EditorialRepository; +import xyz.danielcortes.validator.EditorialValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.editorial.EditorialUpdatePanel; diff --git a/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaCreateController.java b/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaCreateController.java index d1e71d8..a848a0a 100644 --- a/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaCreateController.java +++ b/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaCreateController.java @@ -4,6 +4,7 @@ import xyz.danielcortes.controllers.BaseController; import xyz.danielcortes.controllers.LaunchController; import xyz.danielcortes.models.Idioma; import xyz.danielcortes.repository.IdiomaRepository; +import xyz.danielcortes.validator.IdiomaValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.idioma.IdiomaCreatePanel; diff --git a/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaSearchController.java b/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaSearchController.java index 8627347..038d320 100644 --- a/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaSearchController.java +++ b/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaSearchController.java @@ -8,6 +8,7 @@ import xyz.danielcortes.framework.BaseTableModel; import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.models.Idioma; import xyz.danielcortes.repository.IdiomaRepository; +import xyz.danielcortes.validator.IdiomaValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.idioma.IdiomaSearchPanel; diff --git a/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaUpdateController.java b/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaUpdateController.java index bd931c0..bf8ab54 100644 --- a/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaUpdateController.java +++ b/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaUpdateController.java @@ -5,6 +5,7 @@ import xyz.danielcortes.controllers.LaunchController; import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.models.Idioma; import xyz.danielcortes.repository.IdiomaRepository; +import xyz.danielcortes.validator.IdiomaValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.idioma.IdiomaUpdatePanel; diff --git a/src/main/java/xyz/danielcortes/controllers/libro/LibroCreateController.java b/src/main/java/xyz/danielcortes/controllers/libro/LibroCreateController.java index 296027a..b5c407b 100644 --- a/src/main/java/xyz/danielcortes/controllers/libro/LibroCreateController.java +++ b/src/main/java/xyz/danielcortes/controllers/libro/LibroCreateController.java @@ -18,6 +18,7 @@ import xyz.danielcortes.repository.CategoriaRepository; import xyz.danielcortes.repository.EditorialRepository; import xyz.danielcortes.repository.IdiomaRepository; import xyz.danielcortes.repository.LibroRepository; +import xyz.danielcortes.validator.LibroValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.libro.LibroCreatePanel; diff --git a/src/main/java/xyz/danielcortes/controllers/libro/LibroSearchController.java b/src/main/java/xyz/danielcortes/controllers/libro/LibroSearchController.java index 0d28ea8..973fd83 100644 --- a/src/main/java/xyz/danielcortes/controllers/libro/LibroSearchController.java +++ b/src/main/java/xyz/danielcortes/controllers/libro/LibroSearchController.java @@ -6,22 +6,31 @@ import xyz.danielcortes.controllers.BaseController; import xyz.danielcortes.controllers.LaunchController; import xyz.danielcortes.framework.BaseTableModel; import xyz.danielcortes.framework.PanelName; +import xyz.danielcortes.models.Ejemplar; import xyz.danielcortes.models.Libro; +import xyz.danielcortes.repository.EjemplarRepository; import xyz.danielcortes.repository.LibroRepository; +import xyz.danielcortes.validator.EjemplarValidator; +import xyz.danielcortes.validator.LibroValidator; import xyz.danielcortes.views.BasePanel; +import xyz.danielcortes.views.libro.LibroAgregarStockDialog; import xyz.danielcortes.views.libro.LibroSearchPanel; public class LibroSearchController extends BaseController { private LibroSearchPanel view; private LibroRepository libroRepository; - private LibroValidator validator; + private EjemplarRepository ejemplarRepository; + private LibroValidator libroValidator; + private EjemplarValidator ejemplarValidator; public LibroSearchController(LibroSearchPanel view, LaunchController parent) { super(parent); this.view = view; this.libroRepository = new LibroRepository(); - this.validator = new LibroValidator(this.libroRepository); + this.libroValidator = new LibroValidator(this.libroRepository); + this.ejemplarRepository = new EjemplarRepository(); + this.ejemplarValidator = new EjemplarValidator(this.ejemplarRepository); this.loadLibroTable(); this.setupListeners(); } @@ -41,6 +50,7 @@ public class LibroSearchController extends BaseController { this.view.getEliminarButton().addActionListener(e -> delete()); this.view.getEditarButton().addActionListener(e -> edit()); this.view.getVerButton().addActionListener(e -> view()); + this.view.getAgregarStockButton().addActionListener(e -> addStock()); } private void view() { @@ -86,6 +96,34 @@ public class LibroSearchController extends BaseController { this.loadLibroTable(libros); } + private void addStock() { + Libro libro = getSelectedLibro(); + if (libro == null) + return; + + LibroAgregarStockDialog dialog = new LibroAgregarStockDialog(); + dialog.pack(); + dialog.setLocationRelativeTo(null); + dialog.setVisible(true); + + String serie = dialog.getSerie(); + if (serie == null) + return; + + if (!this.ejemplarValidator.validateSerie(serie)) + return; + + Ejemplar ejemplar = new Ejemplar(); + ejemplar.setLibro(libro); + ejemplar.setSerie(serie); + libro.getEjemplares().add(ejemplar); + + this.ejemplarRepository.save(ejemplar); + this.libroRepository.update(libro); + + this.reload(); + } + private void loadLibroTable(List libros) { BaseTableModel model = this.view.getLibrosModel(); model.setRows(libros); diff --git a/src/main/java/xyz/danielcortes/controllers/libro/LibroUpdateController.java b/src/main/java/xyz/danielcortes/controllers/libro/LibroUpdateController.java index bc70d7d..c4bf070 100644 --- a/src/main/java/xyz/danielcortes/controllers/libro/LibroUpdateController.java +++ b/src/main/java/xyz/danielcortes/controllers/libro/LibroUpdateController.java @@ -19,6 +19,7 @@ import xyz.danielcortes.repository.CategoriaRepository; import xyz.danielcortes.repository.EditorialRepository; import xyz.danielcortes.repository.IdiomaRepository; import xyz.danielcortes.repository.LibroRepository; +import xyz.danielcortes.validator.LibroValidator; import xyz.danielcortes.views.BasePanel; import xyz.danielcortes.views.libro.LibroUpdatePanel; diff --git a/src/main/java/xyz/danielcortes/models/Ejemplar.java b/src/main/java/xyz/danielcortes/models/Ejemplar.java index 54dcc6d..820acff 100644 --- a/src/main/java/xyz/danielcortes/models/Ejemplar.java +++ b/src/main/java/xyz/danielcortes/models/Ejemplar.java @@ -2,6 +2,7 @@ package xyz.danielcortes.models; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @@ -25,7 +26,7 @@ public class Ejemplar { @JoinColumn(name = "libro_id") private Libro libro; - @ManyToOne + @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "estado_id") private Estado estado; diff --git a/src/main/java/xyz/danielcortes/models/Libro.java b/src/main/java/xyz/danielcortes/models/Libro.java index 4a0b8ce..3c0a94e 100644 --- a/src/main/java/xyz/danielcortes/models/Libro.java +++ b/src/main/java/xyz/danielcortes/models/Libro.java @@ -6,6 +6,7 @@ import java.util.Set; import javax.persistence.Column; import javax.persistence.Convert; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @@ -70,7 +71,7 @@ public class Libro { @JoinColumn(name = "editorial_id") private Editorial editorial; - @OneToMany(mappedBy = "libro") + @OneToMany(mappedBy = "libro", fetch = FetchType.EAGER, orphanRemoval = true ) private Set ejemplares; public Integer getId() { diff --git a/src/main/java/xyz/danielcortes/repository/EjemplarRepository.java b/src/main/java/xyz/danielcortes/repository/EjemplarRepository.java new file mode 100644 index 0000000..128e0b6 --- /dev/null +++ b/src/main/java/xyz/danielcortes/repository/EjemplarRepository.java @@ -0,0 +1,76 @@ +package xyz.danielcortes.repository; + +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceException; +import javax.persistence.Query; +import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; +import xyz.danielcortes.framework.PersistenceManager; +import xyz.danielcortes.models.Ejemplar; + +public class EjemplarRepository { + + private EntityManager em; + + public EjemplarRepository() { + this.em = PersistenceManager.getEntityManager(); + } + + public List getAll() { + TypedQuery query = em.createQuery("SELECT e FROM Ejemplar e", Ejemplar.class); + return query.getResultList(); + } + + public List search(String term) { + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery query = cb.createQuery(Ejemplar.class); + Root r = query.from(Ejemplar.class); + query.where( + cb.or( + cb.like(cb.lower(r.get("serie")), "%" + term.toLowerCase() + "%") + ) + ); + + return em.createQuery(query).getResultList(); + } + + public void save(Ejemplar ejemplar) { + em.getTransaction().begin(); + try { + em.persist(ejemplar); + } catch (PersistenceException e) { + e.printStackTrace(); + } + em.getTransaction().commit(); + } + + public void update(Ejemplar ejemplar) { + em.getTransaction().begin(); + try { + em.merge(ejemplar); + } catch (PersistenceException e) { + e.printStackTrace(); + } + em.getTransaction().commit(); + } + + public void delete(Ejemplar ejemplar) { + em.getTransaction().begin(); + try { + em.remove(ejemplar); + } catch (PersistenceException e) { + e.printStackTrace(); + } + 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"); + query.setParameter("serie", serie); + query.setParameter("id", id); + return (Long) query.getResultList().get(0) == 1; + } +} diff --git a/src/main/java/xyz/danielcortes/repository/LibroRepository.java b/src/main/java/xyz/danielcortes/repository/LibroRepository.java index 5dda337..b8a5a34 100644 --- a/src/main/java/xyz/danielcortes/repository/LibroRepository.java +++ b/src/main/java/xyz/danielcortes/repository/LibroRepository.java @@ -3,7 +3,6 @@ package xyz.danielcortes.repository; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceException; -import javax.persistence.Query; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -75,10 +74,4 @@ public class LibroRepository { em.getTransaction().commit(); } - public boolean exists(String serie, Integer id) { - Query query = em.createQuery("SELECT count(l) FROM Libro l WHERE serie = :serie and id != :id"); - query.setParameter("serie", serie); - query.setParameter("id", id); - return (Long) query.getResultList().get(0) == 1; - } } diff --git a/src/main/java/xyz/danielcortes/controllers/autor/AutorValidator.java b/src/main/java/xyz/danielcortes/validator/AutorValidator.java similarity index 98% rename from src/main/java/xyz/danielcortes/controllers/autor/AutorValidator.java rename to src/main/java/xyz/danielcortes/validator/AutorValidator.java index 5cf6271..e02ea6a 100644 --- a/src/main/java/xyz/danielcortes/controllers/autor/AutorValidator.java +++ b/src/main/java/xyz/danielcortes/validator/AutorValidator.java @@ -1,4 +1,4 @@ -package xyz.danielcortes.controllers.autor; +package xyz.danielcortes.validator; import javax.swing.JOptionPane; import xyz.danielcortes.models.Autor; diff --git a/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaValidator.java b/src/main/java/xyz/danielcortes/validator/CategoriaValidator.java similarity index 95% rename from src/main/java/xyz/danielcortes/controllers/categoria/CategoriaValidator.java rename to src/main/java/xyz/danielcortes/validator/CategoriaValidator.java index 0d2fcc5..e1b7d85 100644 --- a/src/main/java/xyz/danielcortes/controllers/categoria/CategoriaValidator.java +++ b/src/main/java/xyz/danielcortes/validator/CategoriaValidator.java @@ -1,4 +1,4 @@ -package xyz.danielcortes.controllers.categoria; +package xyz.danielcortes.validator; import javax.swing.JOptionPane; import xyz.danielcortes.models.Categoria; @@ -31,7 +31,6 @@ public class CategoriaValidator { return true; } - public boolean isDeleteable(Categoria categoria){ if(categoria.getLibros().size() > 0){ JOptionPane.showMessageDialog( diff --git a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialValidator.java b/src/main/java/xyz/danielcortes/validator/EditorialValidator.java similarity index 96% rename from src/main/java/xyz/danielcortes/controllers/editorial/EditorialValidator.java rename to src/main/java/xyz/danielcortes/validator/EditorialValidator.java index 15003b1..1ede5c7 100644 --- a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialValidator.java +++ b/src/main/java/xyz/danielcortes/validator/EditorialValidator.java @@ -1,4 +1,4 @@ -package xyz.danielcortes.controllers.editorial; +package xyz.danielcortes.validator; import javax.swing.JOptionPane; import xyz.danielcortes.models.Editorial; diff --git a/src/main/java/xyz/danielcortes/validator/EjemplarValidator.java b/src/main/java/xyz/danielcortes/validator/EjemplarValidator.java new file mode 100644 index 0000000..798155c --- /dev/null +++ b/src/main/java/xyz/danielcortes/validator/EjemplarValidator.java @@ -0,0 +1,52 @@ +package xyz.danielcortes.validator; + +import javax.swing.JOptionPane; +import xyz.danielcortes.models.Ejemplar; +import xyz.danielcortes.repository.EjemplarRepository; + +public class EjemplarValidator { + + private EjemplarRepository ejemplarRepository; + + public EjemplarValidator(EjemplarRepository ejemplarRepository) { + this.ejemplarRepository = ejemplarRepository; + } + + public boolean validateSerie(String serie) { + if (serie == null) { + JOptionPane.showMessageDialog( + null, + "La serie es nula", + "Error", + JOptionPane.ERROR_MESSAGE); + return false; + } + if (serie.isEmpty()) { + JOptionPane.showMessageDialog( + null, + "La serie esta vacia", + "Error", + 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())) { + JOptionPane.showMessageDialog( + null, + "El numero de serie ya existe", + "Error", + JOptionPane.ERROR_MESSAGE); + return false; + } + + return true; + } + +} diff --git a/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaValidator.java b/src/main/java/xyz/danielcortes/validator/IdiomaValidator.java similarity index 96% rename from src/main/java/xyz/danielcortes/controllers/idioma/IdiomaValidator.java rename to src/main/java/xyz/danielcortes/validator/IdiomaValidator.java index 4d0575b..6c9e439 100644 --- a/src/main/java/xyz/danielcortes/controllers/idioma/IdiomaValidator.java +++ b/src/main/java/xyz/danielcortes/validator/IdiomaValidator.java @@ -1,4 +1,4 @@ -package xyz.danielcortes.controllers.idioma; +package xyz.danielcortes.validator; import javax.swing.JOptionPane; import xyz.danielcortes.models.Idioma; diff --git a/src/main/java/xyz/danielcortes/controllers/libro/LibroValidator.java b/src/main/java/xyz/danielcortes/validator/LibroValidator.java similarity index 80% rename from src/main/java/xyz/danielcortes/controllers/libro/LibroValidator.java rename to src/main/java/xyz/danielcortes/validator/LibroValidator.java index 7a59b13..46f3c8c 100644 --- a/src/main/java/xyz/danielcortes/controllers/libro/LibroValidator.java +++ b/src/main/java/xyz/danielcortes/validator/LibroValidator.java @@ -1,4 +1,4 @@ -package xyz.danielcortes.controllers.libro; +package xyz.danielcortes.validator; import java.util.List; import java.util.Objects; @@ -15,11 +15,11 @@ public class LibroValidator { private LibroRepository libroRepository; - LibroValidator(LibroRepository libroRepository) { + public LibroValidator(LibroRepository libroRepository) { this.libroRepository = libroRepository; } - boolean validateLibro(Libro libro) { + public boolean validateLibro(Libro libro) { if (libro == null) { JOptionPane.showMessageDialog( null, @@ -32,52 +32,7 @@ public class LibroValidator { return true; } - boolean validateSerie(String serie) { - if (serie == null) { - JOptionPane.showMessageDialog( - null, - "La serie es nula", - "Error", - JOptionPane.ERROR_MESSAGE); - return false; - } - if (serie.isEmpty()) { - JOptionPane.showMessageDialog( - null, - "La serie esta vacia", - "Error", - JOptionPane.ERROR_MESSAGE); - return false; - } - if (!GeneralValidator.isLong(serie)) { - JOptionPane.showMessageDialog( - null, - "La serie no es numero valido", - "Error", - JOptionPane.ERROR_MESSAGE); - return false; - } - - return true; - } - - boolean validateSerie(String serie, Libro original) { - if (!validateSerie(serie)) - return false; - - if (libroRepository.exists(serie, original.getId())) { - JOptionPane.showMessageDialog( - null, - "El numero de serie ya existe", - "Error", - JOptionPane.ERROR_MESSAGE); - return false; - } - - return true; - } - - boolean validateISBN(String isbn) { + public boolean validateISBN(String isbn) { if (isbn == null) { JOptionPane.showMessageDialog( null, @@ -109,7 +64,7 @@ public class LibroValidator { return true; } - boolean validateTitulo(String titulo) { + public boolean validateTitulo(String titulo) { if (titulo == null) { JOptionPane.showMessageDialog( null, @@ -129,7 +84,7 @@ public class LibroValidator { return true; } - boolean validateNumeroPaginas(String numeroPaginas) { + public boolean validateNumeroPaginas(String numeroPaginas) { if (numeroPaginas == null) { JOptionPane.showMessageDialog( null, @@ -158,7 +113,7 @@ public class LibroValidator { return true; } - boolean validatePrecioReferencia(String precioReferencia) { + public boolean validatePrecioReferencia(String precioReferencia) { if (precioReferencia == null) { JOptionPane.showMessageDialog( null, @@ -187,7 +142,7 @@ public class LibroValidator { return true; } - boolean validateAnoPublicacion(String anoPublicacion) { + public boolean validateAnoPublicacion(String anoPublicacion) { if (anoPublicacion == null) { JOptionPane.showMessageDialog( null, @@ -223,7 +178,7 @@ public class LibroValidator { return true; } - boolean validateIdiomas(List idiomas) { + public boolean validateIdiomas(List idiomas) { if (idiomas.size() == 0) { JOptionPane.showMessageDialog( null, @@ -244,7 +199,7 @@ public class LibroValidator { return true; } - boolean validateAutores(List autores) { + public boolean validateAutores(List autores) { if (autores.size() == 0) { JOptionPane.showMessageDialog( null, @@ -265,7 +220,7 @@ public class LibroValidator { return true; } - boolean validateCategorias(List categorias) { + public boolean validateCategorias(List categorias) { if (categorias.size() == 0) { JOptionPane.showMessageDialog( null, @@ -286,7 +241,7 @@ public class LibroValidator { return true; } - boolean validateEditorial(Editorial editorial) { + public boolean validateEditorial(Editorial editorial) { if (editorial == null) { JOptionPane.showMessageDialog( null, diff --git a/src/main/java/xyz/danielcortes/views/libro/LibroAgregarStockDialog.form b/src/main/java/xyz/danielcortes/views/libro/LibroAgregarStockDialog.form new file mode 100644 index 0000000..e9ea0c3 --- /dev/null +++ b/src/main/java/xyz/danielcortes/views/libro/LibroAgregarStockDialog.form @@ -0,0 +1,85 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/xyz/danielcortes/views/libro/LibroAgregarStockDialog.java b/src/main/java/xyz/danielcortes/views/libro/LibroAgregarStockDialog.java new file mode 100644 index 0000000..84e2f60 --- /dev/null +++ b/src/main/java/xyz/danielcortes/views/libro/LibroAgregarStockDialog.java @@ -0,0 +1,120 @@ +package xyz.danielcortes.views.libro; + +import com.intellij.uiDesigner.core.GridConstraints; +import com.intellij.uiDesigner.core.GridLayoutManager; +import com.intellij.uiDesigner.core.Spacer; +import java.awt.Dimension; +import java.awt.Insets; +import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.KeyStroke; + +public class LibroAgregarStockDialog extends JDialog { + + private JPanel contentPane; + private JButton buttonOK; + private JButton buttonCancel; + private JTextField serieField; + + private String serie; + + public LibroAgregarStockDialog() { + setContentPane(contentPane); + setModal(true); + getRootPane().setDefaultButton(buttonOK); + + buttonOK.addActionListener(e -> onOK()); + buttonCancel.addActionListener(e -> onCancel()); + + setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + onCancel(); + } + }); + + contentPane.registerKeyboardAction(e -> onCancel(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); + } + + private void onOK() { + this.serie = this.serieField.getText(); + dispose(); + } + + private void onCancel() { + dispose(); + } + + public String getSerie() { + return this.serie; + } + + { +// GUI initializer generated by IntelliJ IDEA GUI Designer +// >>> IMPORTANT!! <<< +// DO NOT EDIT OR ADD ANY CODE HERE! + $$$setupUI$$$(); + } + + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + contentPane = new JPanel(); + contentPane.setLayout(new GridLayoutManager(2, 1, new Insets(10, 10, 10, 10), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1)); + contentPane.add(panel1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, 1, null, null, null, 0, false)); + final Spacer spacer1 = new Spacer(); + panel1.add(spacer1, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, + null, null, 0, false)); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1, true, false)); + panel1.add(panel2, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + buttonOK = new JButton(); + buttonOK.setText("OK"); + panel2.add(buttonOK, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + buttonCancel = new JButton(); + buttonCancel.setText("Cancel"); + panel2.add(buttonCancel, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JPanel panel3 = new JPanel(); + panel3.setLayout(new GridLayoutManager(3, 1, new Insets(0, 0, 0, 0), -1, -1)); + contentPane.add(panel3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + final JLabel label1 = new JLabel(); + label1.setText("Numero de Serie:"); + panel3.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + serieField = new JTextField(); + panel3.add(serieField, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer2 = new Spacer(); + panel3.add(spacer2, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, + null, null, 0, false)); + } + + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPane; + } +} diff --git a/src/main/java/xyz/danielcortes/views/libro/LibroSearchPanel.form b/src/main/java/xyz/danielcortes/views/libro/LibroSearchPanel.form index 58fbe2b..5b1c533 100644 --- a/src/main/java/xyz/danielcortes/views/libro/LibroSearchPanel.form +++ b/src/main/java/xyz/danielcortes/views/libro/LibroSearchPanel.form @@ -51,7 +51,7 @@ - + @@ -81,7 +81,7 @@ - + @@ -89,6 +89,16 @@ + + + + + + + + + + diff --git a/src/main/java/xyz/danielcortes/views/libro/LibroSearchPanel.java b/src/main/java/xyz/danielcortes/views/libro/LibroSearchPanel.java index 1b74c96..217dd37 100644 --- a/src/main/java/xyz/danielcortes/views/libro/LibroSearchPanel.java +++ b/src/main/java/xyz/danielcortes/views/libro/LibroSearchPanel.java @@ -25,6 +25,7 @@ public class LibroSearchPanel extends BasePanel { private JButton verButton; private JButton editarButton; private JButton eliminarButton; + private JButton agregarStockButton; public JTable getLibrosTable() { return librosTable; @@ -58,6 +59,10 @@ public class LibroSearchPanel extends BasePanel { return eliminarButton; } + public JButton getAgregarStockButton() { + return agregarStockButton; + } + private void createUIComponents() { this.createLibrosTable(); } @@ -117,7 +122,7 @@ public class LibroSearchPanel extends BasePanel { GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); final JPanel panel2 = new JPanel(); - panel2.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); + panel2.setLayout(new GridLayoutManager(1, 4, new Insets(0, 0, 0, 0), -1, -1)); contentPane.add(panel2, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); @@ -133,7 +138,12 @@ public class LibroSearchPanel extends BasePanel { null, 0, false)); eliminarButton = new JButton(); eliminarButton.setText("Eliminar"); - panel2.add(eliminarButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, + panel2.add(eliminarButton, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), + null, 0, false)); + agregarStockButton = new JButton(); + agregarStockButton.setText("Agregar Stock"); + panel2.add(agregarStockButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); }