Código
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:head> </h:head> <h:body> <h:form id="frmBiblioteca" title="ABM Biblioteca"> <p:growl id="mensaje"/> <p:panel id="pnlOpciones" header="ABM Biblioteca"> <p:menubar> <p:menuitem value="Agregar Libro"/> <p:menuitem value="Ordenar (A - Z)" actionListener="#{libroBean.ordenarAscendente()}" update="dtLibros"/> <p:menuitem value="Ordenar (Z - A)" actionListener="#{libroBean.ordenarDescendente()}" update="dtLibros" /> <p:menuitem value="Buscar Libro" /> </p:menubar> </p:panel> <p:panelGrid id="pgAgrear" columns="2"> <p:outputLabel id="lblCodigo" value="Código: "/> <p:inputNumber id="inpCodigo" value="#{libro.código}"/> <p:outputLabel id="lblISBN" value="ISBN: "/> <p:inputNumber id="inpISBN" value="#{libro.ISBN}"/> <p:outputLabel id="lblTitulo" value="Titulo: "/> <p:inputText id="inpTitulo" value="#{libro.titulo}"/> <p:outputLabel id="lblPaginas" value="Cantidad Paginas: "/> <p:inputNumber id="inpPaginas" value="#{cantPaginas}"/> <p:outputLabel id="lblTematica" value="Tematica: "/> <p:inputText id="inpTematica" value="#{libro.temática}"/> <!-- private Autor autor; private LocalDate fechaEdicion;--> </p:panelGrid> <p:dataTable id="dtLibros" var="libros" value="#{libroBean.libros}"> <p:column headerText="Codigo"> <h:outputText value="#{libros.código}"/> </p:column> <p:column headerText="ISBN"> <h:outputText value="#{libros.ISBN}"/> </p:column> <p:column headerText="Titulo"> <h:outputText value="#{libros.titulo}"/> </p:column> <p:column headerText="Cantidad Páginas"> <h:outputText value="#{libros.cantPaginas}"/> </p:column> <p:column headerText="Tematica"> <h:outputText value="#{libros.temática}"/> </p:column> <p:column headerText="Autor"> <h:outputText value="#{libros.autor.nombre} #{libros.autor.apellido}"/> </p:column> <p:column headerText="Fecha publicación"> <h:outputText value="#{libros.fechaEdicion.dayOfMonth}/#{libros.fechaEdicion.monthValue}/#{libros.fechaEdicion.year}"/> </p:column> <p:column headerText="Acción"> <p:commandButton id="btnEliminar" value="Eliminar" actionListener="#{libroBean.borrar(libros)}" update="dtLibros"/> </p:column> </p:dataTable> </h:form> </h:body> </html>
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package apliacion.dao; import aplicacion.modelo.dominio.Libro; import java.util.List; /** * * @author Ana Kéldysh */ public interface ILibroDAO{ public void agregar(Libro nuevo); public void borrar(Libro borrado); public void modificar(Libro modificado); public void ordenarAscendente(); public void ordenarDescendente(); public List<Libro> mostrarLibros(); }
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package aplicacion.controlador.bean; import apliacion.dao.ILibroDAO; import aplicacion.dao.imp.ILibroDAOImp; import aplicacion.modelo.dominio.Libro; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; /** * * @author Ana Kéldysh */ @ManagedBean @SessionScoped private Libro libro; private ILibroDAO libroDAO; private List<Libro> libros; /** * Creates a new instance of LibroBean */ public LibroBean() { libroDAO = new ILibroDAOImp(); libros = new ArrayList<>(); } public void generarLibros() { libros = libroDAO.mostrarLibros(); } @PostConstruct public void iniciarLibro() { libro = new Libro(); generarLibros(); } public void agregar(Libro nuevo) { libroDAO.agregar(nuevo); } public void borrar(Libro borrado) { libroDAO.borrar(borrado); } public void modificar(Libro modificado) { libroDAO.modificar(modificado); } public void ordenarAscendente() { libroDAO.ordenarAscendente(); } public void ordenarDescendente() { libroDAO.ordenarDescendente(); } return libroDAO.buscarLibros(buscado); } public List<Libro> mostrarLibros() { return libroDAO.mostrarLibros(); } public Libro getLibro() { return libro; } public void setLibro(Libro libro) { this.libro = libro; } public ILibroDAO getLibroDAO() { return libroDAO; } public void setLibroDAO(ILibroDAO libroDAO) { this.libroDAO = libroDAO; } @Override return "LibroBean{" + "libro=" + libro + ", libroDAO=" + libroDAO + ", libros=" + libros + '}'; } public List<Libro> getLibros() { return libros; } public void setLibros(List<Libro> libros) { this.libros = libros; } }
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package aplicacion.controlador.bean; import apliacion.dao.ILibroDAO; import aplicacion.dao.imp.ILibroDAOImp; import aplicacion.modelo.dominio.Autor; import aplicacion.modelo.dominio.Libro; import java.time.LocalDate; /** * * @author Ana Kéldysh */ public class Test { ILibroDAO lista = new ILibroDAOImp(); lista.mostrarLibros().forEach((a) -> { }); lista.borrar(new Libro(1, 1000, "Java Como Programar", 1000, "Programación", new Autor(), LocalDate.now())); lista.mostrarLibros().forEach((a) -> { }); } }
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package aplicacion.dao.imp; import apliacion.dao.ILibroDAO; import aplicacion.modelo.dominio.Libro; import aplicacion.modelo.util.ListaLibros; import java.io.Serializable; import java.util.List; /** * * @author Ana Kéldysh */ private ListaLibros libros; public ILibroDAOImp() { libros = new ListaLibros(); } @Override public void agregar(Libro nuevo) { libros.agregar(nuevo); } @Override public void borrar(Libro borrado) { libros.borrar(borrado); } @Override public void modificar(Libro modificado) { libros.modificar(modificado); } @Override public void ordenarAscendente() { libros.ordenarAscendente(); } @Override public void ordenarDescendente() { libros.ordenarDescendente(); } @Override return libros.buscarLibros(buscado); } @Override public List<Libro> mostrarLibros() { return libros.getLibros(); } }
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package aplicacion.modelo.dominio; import java.io.Serializable; /** * * @author Ana Kéldysh */ public Autor() { } this.nombre = nombre; this.apellido = apellido; this.edad = edad; this.nacionalidad = nacionalidad; } return nacionalidad; } this.nacionalidad = nacionalidad; } return nombre; } this.nombre = nombre; } return apellido; } this.apellido = apellido; } return edad; } this.edad = edad; } @Override return "Autor{" + "nombre=" + nombre + ", apellido=" + apellido + ", edad=" + edad + ", nacionalidad=" + nacionalidad + '}'; } }
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package aplicacion.modelo.dominio; import java.io.Serializable; import java.time.LocalDate; /** * * @author Ana Kéldysh */ private Autor autor; private LocalDate fechaEdicion; public Libro() { } this.código = código; this.ISBN = ISBN; this.titulo = titulo; this.cantPaginas = cantPaginas; this.temática = temática; this.autor = autor; this.fechaEdicion = fechaEdicion; } return código; } this.código = código; } return ISBN; } this.ISBN = ISBN; } return titulo; } this.titulo = titulo; } return cantPaginas; } this.cantPaginas = cantPaginas; } return temática; } this.temática = temática; } public Autor getAutor() { return autor; } public void setAutor(Autor autor) { this.autor = autor; } public LocalDate getFechaEdicion() { return fechaEdicion; } public void setFechaEdicion(LocalDate fechaEdicion) { this.fechaEdicion = fechaEdicion; } @Override return "Libro{" + "c\u00f3digo=" + código + ", ISBN=" + ISBN + ", titulo=" + titulo + ", cantPaginas=" + cantPaginas + ", tem\u00e1tica=" + temática + ", autor=" + autor + ", fechaEdicion=" + fechaEdicion + '}'; } }
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package aplicacion.modelo.util; import aplicacion.modelo.dominio.Autor; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * * @author Ana Kéldysh */ private List<Autor> autores; public ListaAutores() { autores = new ArrayList<>(); autores.add(new Autor("Vanessa", "Navarro", 34, "Argentina")); autores.add(new Autor("Ana", "Kéldysh", 15, "Argentina")); } public List<Autor> getAutores() { return autores; } public void setAutores(List<Autor> autores) { this.autores = autores; } @Override return "ListaAutores{" + "autores=" + autores + '}'; } }
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package aplicacion.modelo.util; import aplicacion.modelo.dominio.Libro; import java.io.Serializable; import java.time.LocalDate; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; /** * * @author Ana Kéldysh */ private List<Libro> libros; private ListaAutores autores; private List<Libro> auxiliar; public ListaLibros() { libros = new ArrayList<>(); autores = new ListaAutores(); auxiliar = new ArrayList<>(); libros.add(new Libro(1, 1000, "Java Como Programar", 1000, "Programación", autores.getAutores().get(0), LocalDate.now())); libros.add(new Libro(2, 2000, "C++", 1000, "Programación", autores.getAutores().get(1), LocalDate.now())); libros.add(new Libro(3, 3000, "Python", 1000, "Programación", autores.getAutores().get(1), LocalDate.now())); } public void agregar(Libro nuevo) { libros.add(nuevo); FacesContext fc = FacesContext.getCurrentInstance(); fc.addMessage(null, new FacesMessage("Agregado con exito!!")); } public void borrar(Libro borrado) { boolean encontrado = false; for (int i = 0; i < libros.size() && !encontrado; i++) { if (libros.get(i).getCódigo().equals(borrado.getCódigo())) { libros.remove(i); encontrado = true; } } if (encontrado) { FacesContext fc = FacesContext.getCurrentInstance(); fc.addMessage(null, new FacesMessage("Borrado con exito!!")); } } public void modificar(Libro modificado) { boolean encontrado = false; for (int i = 0; i < libros.size() && !encontrado; i++) { if (libros.get(i).getCódigo().equals(modificado.getCódigo())) { libros.set(i, modificado); encontrado = true; } } if (encontrado) { FacesContext fc = FacesContext.getCurrentInstance(); fc.addMessage(null, new FacesMessage("Modificado con exito!!")); } } public void ordenarAscendente() { } public void ordenarDescendente() { } auxiliar.clear(); for (int i = 0; i < libros.size(); i++) { if (libros.get(i).getTitulo().startsWith(buscado)) { auxiliar.add(libros.get(i)); } } return auxiliar; } public List<Libro> getLibros() { auxiliar.clear(); for (int i = 0; i < libros.size(); i++) { auxiliar.add(libros.get(i)); } return auxiliar; } public void setLibros(List<Libro> libros) { this.libros = libros; } @Override return "ListaLibros{" + "libros=" + libros + ", autores=" + autores + '}'; } public ListaAutores getAutores() { return autores; } public void setAutores(ListaAutores autores) { this.autores = autores; } public List<Libro> getAuxiliar() { return auxiliar; } public void setAuxiliar(List<Libro> auxiliar) { this.auxiliar = auxiliar; } }