Capitulo+Aplicacion+inscripcion
-
Upload
fausto-sanchez -
Category
Documents
-
view
62 -
download
1
Transcript of Capitulo+Aplicacion+inscripcion
![Page 1: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/1.jpg)
CAPITULO APLICACION INSCRIPCIÓN
Objetivo General • Crear una aplicación web para la inscripción de estudiantes a los talleres
utilizando tecnologias open-source.
Objetivo Especifico• Diseñar una aplicación web dinamica y sencilla para la inscripción de estudiantes
en los talleres• Utilizar Java Server Faces 2.0 como framework de desarrollo• Utilizar PrimeFaces como componentes jsf• Utilizar NetBeans como IDE de Desarrollo• Administrar la base de datos MySQL atraves de JDBC y un pool de conexiones• Glassfish como servidor J6EE• Sistema Operativo Centos/Linux
![Page 2: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/2.jpg)
Indice• Proyecto NetBeans• Configurar PrimeFaces en el archivo web.xml• Configurar el pool de conexión en el archivo context.xml del proyecto• Configurar el pool de conexión en Glassfish• Diseñar la aplicación•
![Page 3: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/3.jpg)
Proyecto NetBeans• Creamos un proyecto web con NetBeans y utilizamos como framework java
server faces.• Agregamos las bibliotecas primefaces, iText, y Driver MySQL
Editamos el archivo web.xml y agregamos la configuración para primefaces.
<servlet> <servlet-name>Resource Servlet</servlet-name> <servlet-class> org.primefaces.resource.ResourceServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>Resource Servlet</servlet-name> <url-pattern>/primefaces_resource/*</url-pattern> </servlet-mapping>
![Page 4: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/4.jpg)
Creamos una base de datos en Mysql llamada congreso
con el usuario: avbravopassword: denver16a
Especificamos el pool de conexiones dentro de nuestro proyecto, para ello creamos el archivo context.xml dentro de la carpeta WEB-INF.
Y agregamos la siguiente codificación, indicando el resource name, driver, usuario y password. <?xml version="1.0" encoding="utf-8"?><Context> <Resource name="jdbc/congreso" auth="Container" type="javax.sql.DataSource" username="avbravo" password="denver16a" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/congreso?autoReconnect=true" maxActive="8" maxIdle="8" /></Context>
Editamos el archivo web.xml
y agregamos la conexión <resource-ref> <res-ref-name>jdbc/congreso</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
![Page 5: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/5.jpg)
GLASSFISH
Configurar el pool en GlassFishEntramos a la administración de glassfish generalmente en el puerto 4848 desde el browser.http://localhost:4848
Para iniciar Glassfish debemos ejecutar el comando, desde la carpeta /bin de glassfish./asadmin start-domain
Damos clic en Conjunto de conexiones
Agremos la configuración
y presionamos el botón Siguiente
![Page 6: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/6.jpg)
Nos muestra la configuración básica
bajamos en la pagina, y especificamos los parametros de la conexión a la base de datos
y presionamos el botón Finalizar.
![Page 7: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/7.jpg)
Agregamos los recursos jdbc
Damos clic en el botón Nuevo...
Configuramos el jndi
Recursos terminados
![Page 8: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/8.jpg)
DISEÑO
![Page 9: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/9.jpg)
DISEÑODiseñamos nuestra aplicación con cualquier herramienta, por ejemplo Adobe DreamWeaver, lo importante es guardarlo con el formato .xhtml.Y copiamos los archivos .css e imagenes en la carpeta Web Pages
Al inicio de la pagina agregar<?xml version="1.0" encoding="UTF-8"?>
La pagina xhtml debemos agregar las etiquetas <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.prime.com.tr/ui">
y tambien agregamos <h: a head de manera que el resultado final sea similar a este.<h:head></h:head>
Si en el diseño en DreamWeaver usamos tablas debemos ubicarnos en la sección bodyText y agregar alli las etiquetas jsf correspondientes.<td class="bodyText"><p>aqui insertar las etiquetas jsf</p>
![Page 10: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/10.jpg)
SI SE GENERA ESTE ERROR
CAMBIAR EN META<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />por <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
CENTRAR LA PAGINA
En la tabla principal usamos un % en este ejemplo 85% en la propiedad width <body bgcolor="#F4FFE4"> <table width="85%" border="0" align="center" cellspacing="0" cellpadding="0">
![Page 11: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/11.jpg)
DESARROLLO
![Page 12: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/12.jpg)
CLASES
Mostramos el diseño de las clases que utilizaremos en la aplicación y la relación entre ellas.
![Page 13: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/13.jpg)
ARCHIVO DE PROPIEDADESCreamos un paquete para almacenar el archivo de propiedades.Crear el archivo le colocamos como nombre i18n o el que nosotros deseemosSeleccionar el archivo, dar click derecho y luego Add->Locale...seleccionamos el idioma a soportarSeleccionar Open del documentoDar click en New Property... para agregar nuevas propiedades
Ejemplo del archivo
Para agregarlo a nuestro códigoen el <h:head> agregamos <h:head> <f:loadBundle basename="org.avbravo.inscripcion.i18n" var="i18n" /> </h:head>
Para utilizarlo <h:outputText value="#{i18n['mensajes.titulo']}"></h:outputText>
![Page 14: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/14.jpg)
Otra solución es agregarlo en el archivo faces-config.xml, si no esta el archivo debemos crearlo.Y agregamos el contenido<?xml version='1.0' encoding='UTF-8'?>
<!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"> <application> <resource-bundle> <base-name>/org/avbravo/inscripcion/i18n</base-name> <var>i18n</var> </resource-bundle> </application></faces-config>
En el <base-name> indicamos la ruta donde esta almacenado el archivo de propiedades<var> es la variable que usaremos, y no tendremos que usar el <f:loadBundle> en las paginas.
Usar los archivos de propiedades
● En las paginas xhtmlvalue="#{i18n.titulo}"Cuando el texto incluye una estructura complejavalue="#{i18n['botones.radio.frase.exacta']}"
● En las clases
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/org/avbravo/inscripcion/i18n").getString("botones.radio.frase.exacta"));
![Page 15: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/15.jpg)
MENSAJES DEL SISTEMACREAMOS LA CLASE JsfUtil PARA MANEJAR LOS MENSAJES DE INFORMACIÓN Y DE ERROR.Creamos un nuevo archivo y seleccionamos Categoria: Java Server Faces -> Tipo de Archivos: JSF Managed Beans
import java.util.List;import javax.faces.application.FacesMessage;import javax.faces.component.UIComponent;import javax.faces.context.FacesContext;import javax.faces.convert.Converter;import javax.faces.model.SelectItem;
/** * * @author avbravo */public class JsfUtil { public static SelectItem[] getSelectItems(List<?> entities, boolean selectOne) { int size = selectOne ? entities.size() + 1 : entities.size(); SelectItem[] items = new SelectItem[size]; int i = 0; if (selectOne) { items[0] = new SelectItem("", "---"); i++; } for (Object x : entities) { items[i++] = new SelectItem(x, x.toString()); } return items; }
public static void addErrorMessage(Exception ex, String defaultMsg) { String msg = ex.getLocalizedMessage(); if (msg != null && msg.length() > 0) { addErrorMessage(defaultMsg + "-> "+msg ); } else { addErrorMessage(defaultMsg); } }
![Page 16: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/16.jpg)
public static void addErrorMessages(List<String> messages) { for (String message : messages) { addErrorMessage(message); } }
public static void addErrorMessage(String msg, String titulo) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, titulo); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static void addErrorMessage(String msg) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg); FacesContext.getCurrentInstance().addMessage(null, facesMsg); }
public static void addSuccessMessage(String msg) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg); FacesContext.getCurrentInstance().addMessage("successInfo", facesMsg); }
public static String getRequestParameter(String key) { return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key); }
public static Object getObjectFromRequestParameter(String requestParameterName, Converter converter, UIComponent component) { String theId = JsfUtil.getRequestParameter(requestParameterName); return converter.getAsObject(FacesContext.getCurrentInstance(), component, theId); }}
EJMPLOS DE USO
Usamos la clase JsfUtils.javatry{ JsfUtil.addSuccessMessage("Mensaje"); } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error");}
En las clases usando archivos de propiedadesJsfUtil.addSuccessMessage(ResourceBundle.getBundle("/org/avbravo/inscripcion/i18n").getString("boto
![Page 17: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/17.jpg)
nes.radio.frase.exacta"));
CLASE DE SESION
Creamos la clase de sesión: MySession.javaSeleccionamos JSF Managed Bean
Indicamos el alcance Scope
![Page 18: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/18.jpg)
Si creamos un bean de sesion debemos implementar de Serializable y agregamos una variable. @ManagedBean@SessionScopedpublic class MySessionBean implements Serializable { private static final long serialVersionUID = 1L;
import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Paragraph;import com.itextpdf.text.pdf.PdfWriter;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.Serializable;import java.sql.Connection;import java.sql.Date;import java.util.Locale;
import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;import javax.faces.context.FacesContext;import javax.naming.Context;import javax.naming.InitialContext;import javax.servlet.ServletContext;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import javax.sql.DataSource;
import org.avbravo.inscripcion.JsfUtil;
/** * * @author avbravo */@ManagedBean@SessionScopedpublic class MySessionBean implements Serializable {
private static final long serialVersionUID = 1L;
![Page 19: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/19.jpg)
// @ManagedProperty(value = "") private String version = "Version:0.0.12"; private java.sql.Date fechaSesion; private String iniciarSistema; static String server = "localhost:3306"; static String databaseDB = "congreso"; static String puertoDB = "3306"; static String userDB = "root"; static String passwordDB = "denver"; String driver = "org.gjt.mm.mysql.Driver"; public Connection con = null; private int idfacultad; private String ruta = "recursos/reportes/";
/** Creates a new instance of MySessionBean */ public MySessionBean() { }
public String getRuta() { return ruta; }
public void setRuta(String ruta) { this.ruta = ruta; }
public int getIdfacultad() { return idfacultad; }
public void setIdfacultad(int idfacultad) { this.idfacultad = idfacultad; }
public String getVersion() { return version; }
public void setVersion(String version) { this.version = version; }
public Date getFechaSesion() { java.util.Calendar ca = java.util.Calendar.getInstance(); fechaSesion = new java.sql.Date(ca.getTimeInMillis());
return fechaSesion; }
public void setFechaSesion(Date fechaSesion) {
![Page 20: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/20.jpg)
this.fechaSesion = fechaSesion; }
public String englishAction() { FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot().setLocale(Locale.ENGLISH);
return null; }
public String spanishAction() { FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot().setLocale(new Locale("es")); return null; }
public boolean Conectar() { try {
Context ctx = new InitialContext(); if (ctx == null) { JsfUtil.addSuccessMessage("No initial context"); return false; } DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/congreso"); if (ds == null) { JsfUtil.addSuccessMessage("No data source"); return false; }
con = ds.getConnection();
if (con == null) { System.out.println("No se pudo establecer la conexion "); return false; } return true;
} catch (Exception ex) { JsfUtil.addErrorMessage(ex, "Error"); // System.exit(1); } return false; }
![Page 21: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/21.jpg)
public void imprimir() { Document document = new Document(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { PdfWriter.getInstance(document, baos); document.open(); String msg = "Esto va a ser una buena prueba"; document.add(new Paragraph("hola mundo")); document.add(new Paragraph("aristides villarreal bravo")); document.add(new Paragraph(new java.util.Date().toString())); } catch (DocumentException ex) { JsfUtil.addErrorMessage("Error en generación de documento paraimprimir"); } document.close(); FacesContext context = FacesContext.getCurrentInstance(); Object response = context.getExternalContext().getResponse();
if (response instanceof HttpServletResponse) {
HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setContentType("application/pdf"); hsr.setHeader("Content-disposition", "attachment"); hsr.setContentLength(baos.size());
try { ServletOutputStream out = hsr.getOutputStream(); baos.writeTo(out); out.flush(); } catch (IOException ex) { JsfUtil.addErrorMessage("Error en generación de documento para imprimir"); }
//Tell JSF to skip the remaining phases of the lifecycle context.responseComplete(); } }}
![Page 22: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/22.jpg)
EXPLICACIÓN DEL MÉTODO PARA ESTABLECER LA CONEXIÓN A LA BASE DE DATOS
Obtenemos el contexto Context ctx = new InitialContext(); if (ctx == null) { JsfUtil.addSuccessMessage("No initial context"); return false; } y luego buscamos el jdni llamado jdbc/congreso y creamos un objeto DataSource DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/congreso"); if (ds == null) { JsfUtil.addSuccessMessage("No data source"); return false; }
finalmente obtenemos la conexión
con = ds.getConnection();
![Page 23: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/23.jpg)
COMO UTILIZAR LAS CLASES DE SESION
Para utilizar las clases de sesion, creamos un objetoMySessionBean mySessionBean;
y en el metodo constructor de cada clase utilizamos ELContext elContext = FacesContext.getCurrentInstance().getELContext(); mySessionBean = (MySessionBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "mySessionBean");
De esta manera podemos usar la clase y sus metodos normalmente por ejemplomySessionBean.MiMetodo();
DESTRUIR UN BEANS FacesContext context = FacesContext.getCurrentInstance(); context.getExternalContext().getSessionMap().remove("nombreDelBeanEnSesion");
![Page 24: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/24.jpg)
MODULO DE INSCRIPCIÓN DE ESTUDIANTES A TALLERESFormulario de login
luego el estudiante selecciona los talleres de un combo adjuntado a un dataTable.
cuando el ingrese nuevamente se le muestre la selección realizada
![Page 25: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/25.jpg)
Error
![Page 26: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/26.jpg)
Pasos1. Diseñamos la pagina2. Creamos una pagina xhtml en nuestro proyecto en NetBeans3. Copiamos el código de la pagina
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">4. Agregamos las etiquetas <h: al head
<h:head></h:head>
5. en la sección “bodyText” de la pagina que copiamos agregamos las etiquetas jsf
<table border="0" cellspacing="0" cellpadding="0" width="305"> <tr> <td class="pageName"><h:outputText value="#{i18n['titulo.estudiantes']}"/></td> </tr>
<td class="bodyText"><p> <h:form>
<h:outputText value="#{estudiantesBeans.iniciarSistema}"/>
<h:panelGrid columns="10" >
<h:outputText value="#{i18n['label.cedula']}"></h:outputText> <p:inputMask value="#{estudiantes.cedula}" mask="99-9999-99999" size="15"/>
<h:outputText value="No. recibo " ></h:outputText> <h:inputText value="#{estudiantes.recibopago}" required="true" size="8" />
<h:commandLink action="#{estudiantesBeans.VerificarLogin}" value="#{i18n['menu.login']}" title="#{i18n['menu.login']}"/>
<p:graphicImage value="/resources/imagenes/botones/people.gif" /> <!-- <p:growl id="growl" showDetail="true" life="3000" /> -->
</h:panelGrid> <h:panelGrid columns="4"> <h:outputText value="Ejemplo"/> <h:outputText value="06-0000-00000"/>
Etiquetas del archivo de propiedades
Configurarción inicial
Usamos una mascara de primefaces
Llamamos al método VerificarLogin()
Agregamos una imagen
![Page 27: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/27.jpg)
<h:outputText value="PE-0000-00000"/> <h:outputText value="0E-0000-00000"/> </h:panelGrid>
<h:panelGrid columns="1" cellpadding="5"> <p:commandButton value="Ayuda" onclick="dlg3.show();" type="button"/> </h:panelGrid>
<p:dialog header="Ayuda" widgetVar="dlg3" showEffect="bounce" hideEffect="explode" height="200"> <h:panelGrid columns="1"> <h:outputText value="Ingrese la cedula con el siguiente formato." /> <h:outputText value="06-0000-00000"/> <h:outputText value="PE-0000-00000"/> <h:outputText value="0E-0000-00000"/> <hr> </hr> <h:outputText value="ingrese el numero de recibo"/> <h:outputText value="Presione el boton entrar"/> <h:outputText value="Presione el boton entrar"/>
<hr></hr> <h:outputText value="Presione el boton entrar"/> <h:outputText value="Luego se muestra los talleres disponibles"/> <h:outputText value="seleccione la prioridad del taller deseado."/> </h:panelGrid> </p:dialog> <p:messages id="messages"/>
</h:form>
</p>
Dialogo de ayuda
Creamos un dialogo
Componente de mensajes
![Page 28: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/28.jpg)
Creamos unos paquetes para las clases estudiante
Creamos la clase Estudiantes.java que sera un Bean simple con los atributos correspondientes a la tabla estudiantes.
![Page 29: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/29.jpg)
import java.io.Serializable;import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;/** * * @author avbravo */@ManagedBean@SessionScopedpublic class Estudiantes implements Serializable {
private static final long serialVersionUID = 1L; private String cedula; private String nombre; private int idfacultad; private String carrera; private String telefono; private String direccion; private String email; private String grupo; private String registrado; private String recibopago;
/** Creates a new instance of Estudiantes */ public Estudiantes() { }
public Estudiantes(String cedula, String nombre, int idfacultad, String telefono, String email) { this.cedula = cedula; this.nombre = nombre; this.idfacultad = idfacultad; this.telefono = telefono; this.email = email; }
public Estudiantes(String cedula, String nombre, int idfacultad, String carrera, String telefono, String direccion, String email, String grupo, String registrado, String recibopago) { this.cedula = cedula; this.nombre = nombre; this.idfacultad = idfacultad; this.carrera = carrera; this.telefono = telefono; this.direccion = direccion; this.email = email; this.grupo = grupo; this.registrado = registrado; this.recibopago = recibopago; }
public String getGrupo() { return grupo; }
![Page 30: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/30.jpg)
public void setGrupo(String grupo) { this.grupo = grupo; }
public String getRecibopago() { return recibopago; }
public void setRecibopago(String recibopago) { this.recibopago = recibopago; }
public String getCarrera() { return carrera; }
public void setCarrera(String carrera) { this.carrera = carrera; }
public String getCedula() { return cedula; }
public void setCedula(String cedula) { this.cedula = cedula; }
public String getDireccion() { return direccion; }
public void setDireccion(String direccion) { this.direccion = direccion; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public int getIdfacultad() { return idfacultad; }
public void setIdfacultad(int idfacultad) { this.idfacultad = idfacultad; }
![Page 31: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/31.jpg)
public String getNombre() { return nombre; }
public void setNombre(String nombre) { this.nombre = nombre; }
public String getRegistrado() { return registrado; }
public void setRegistrado(String registrado) { this.registrado = registrado; }
public String getTelefono() { return telefono; }
public void setTelefono(String telefono) { this.telefono = telefono; }
public String Limpiar(){ this.cedula = ""; this.nombre = "";
this.carrera = ""; this.telefono = ""; this.direccion = ""; this.email = ""; this.grupo = ""; this.registrado = ""; this.recibopago = ""; return null;
}}
![Page 32: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/32.jpg)
Ahora creamos la clase EstudiantesBeans.java controlaremos las operaciones a realizar sobre la clase Estudiantes
import org.avbravo.inscripcion.beans.estudiantes.Estudiantes;import java.io.Serializable;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import javax.el.ELContext;import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;import javax.faces.context.FacesContext;import javax.servlet.http.HttpSession;import org.avbravo.inscripcion.JsfUtil;import org.avbravo.inscripcion.beans.InscripcionBeans;import org.avbravo.inscripcion.beans.MySessionBean;import org.avbravo.inscripcion.beans.prioridades.PrioridadesBeans;/** * @author avbravo */@ManagedBean@SessionScopedpublic class EstudiantesBeans implements Serializable {
private static final long serialVersionUID = 1L; MySessionBean mySessionBean; Estudiantes estudiantes; InscripcionBeans inscripcionBeans; PrioridadesBeans prioridadesBeans; private List<Estudiantes> estudianteslist; private Estudiantes selectedEstudiantes; boolean logeado = false; private String iniciarSistema; private boolean tieneRegistrosInscripcion = false;
/** Creates a new instance of EstudiantesBeans */ public EstudiantesBeans() { ELContext elContext = FacesContext.getCurrentInstance().getELContext(); mySessionBean = (MySessionBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "mySessionBean"); estudiantes = (Estudiantes) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "estudiantes"); prioridadesBeans = (PrioridadesBeans) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "prioridadesBeans"); inscripcionBeans = (InscripcionBeans) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "inscripcionBeans"); estudianteslist = new ArrayList<Estudiantes>(); }
Definimos los objetos
Instanciamos los objetos
Creamos una lista de la clase Estudiantes
Creamos un objeto para el estudiante seleccionado
Creamos el arreglo de estudiantes
Lo utilizamos cuando mostramos los datos en una tabla y lo seleccionamos y le damos clic a un enlace para ir a otra pagina. Se usa con dataTable.
![Page 33: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/33.jpg)
public String prepararVista() { try { estudiantes.setCedula(selectedEstudiantes.getCedula()); Consultar();
return "/administrador/registrarpago"; } catch (Exception ex) { JsfUtil.addErrorMessage(ex, "Error "); } return null;
}
public String prepararEditar() { try { estudiantes.setCedula(selectedEstudiantes.getCedula()); Consultar(); return "/administrador/estudianteseditar"; } catch (Exception ex) { JsfUtil.addErrorMessage(ex, "Error "); } return null; }
public boolean isTieneRegistrosInscripcion() { return tieneRegistrosInscripcion; }
public void setTieneRegistrosInscripcion(boolean tieneRegistrosInscripcion) { this.tieneRegistrosInscripcion = tieneRegistrosInscripcion; }
public boolean isLogeado() {
![Page 34: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/34.jpg)
return logeado; }
public void setLogeado(boolean logeado) { this.logeado = logeado; }
public String getIniciarSistema() { Limpiar(); setLogeado(false); return null; }
public void setIniciarSistema(String iniciarSistema) { this.iniciarSistema = iniciarSistema; }
public List<Estudiantes> getEstudianteslist() { return estudianteslist; }
public void setEstudianteslist(List<Estudiantes> estudianteslist) { this.estudianteslist = estudianteslist; }
public Estudiantes getSelectedEstudiantes() { return selectedEstudiantes; }
public void setSelectedEstudiantes(Estudiantes selectedEstudiantes) { this.selectedEstudiantes = selectedEstudiantes; }
public String VerificarLogin() {
try {
String recibopago = estudiantes.getRecibopago(); if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; }
String sqlquery = "select * from estudiantes where cedula = ?"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery); psquery.setString(1, estudiantes.getCedula()); ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow();
Verificamos la cedula y numero de recibo del usuario
Verificamos la conexión a la base de datos
Creamos las sentencias jdbc
Inicializamos algunos parametros
![Page 35: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/35.jpg)
if (x == 0) { JsfUtil.addErrorMessage("No existe estudiante con esa cedula: " + estudiantes.getCedula()); rs.close(); psquery.close(); mySessionBean.con.close(); return null; }
Cargar(rs); rs.close(); psquery.close(); mySessionBean.con.close(); if (estudiantes.getRecibopago().equals("") || estudiantes.getRecibopago().equals(null) || estudiantes.getRecibopago().equals("0")) { JsfUtil.addErrorMessage("Este estudiante no ha cancelado su boleto."); return null; } if (!estudiantes.getRecibopago().equals(recibopago)) { JsfUtil.addErrorMessage("Este recibo de pago no pertenece a este estudiante"); return null; } if (estudiantes.getRegistrado().toLowerCase().equals("si")) { // JsfUtil.addErrorMessage("Usted esta debidamente inscrito en los talleres."); setLogeado(true); mySessionBean.setIdfacultad(estudiantes.getIdfacultad()); inscripcionBeans.CargarListaInscripcionConsulta(estudiantes.getCedula(), estudiantes.getIdfacultad()); return "inscripcionconsulta"; } JsfUtil.addSuccessMessage("Bienvenido " + estudiantes.getNombre()); setLogeado(true);
mySessionBean.setIdfacultad(estudiantes.getIdfacultad()); rs.close(); psquery.close(); mySessionBean.con.close();
inscripcionBeans.CargarListaInscripcion();
prioridadesBeans.CargarCombo(); return "inscripcion"; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. VerificarLogin()"); }
return null;
}
public String Consultar() {
Si ya registro una inscripción cargamos la lista de su inscripción
Si no se ha inscrito cargamos la lista de todos los talleres disponibles para que seleccione.
Llamamos a la pagina inscripción
Guardamos el id de la facultad en la clase mySessionBean
![Page 36: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/36.jpg)
try { String recibopago = estudiantes.getRecibopago(); if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; }
String sqlquery = "select * from estudiantes where cedula = ?"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery); psquery.setString(1, estudiantes.getCedula()); ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); if (x == 0) { JsfUtil.addErrorMessage("No existe estudiante con esa cedula: " + estudiantes.getCedula()); mySessionBean.con.close(); Limpiar(); return null; }
Cargar(rs);
rs.close(); psquery.close();
mySessionBean.con.close();
return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. Consultar()"); }
return null;
}
private void Cargar(ResultSet rs) { try { estudiantes.setCedula(rs.getString("cedula")); estudiantes.setCarrera(rs.getString("carrera")); estudiantes.setDireccion(rs.getString("direccion")); estudiantes.setEmail(rs.getString("email")); estudiantes.setIdfacultad(rs.getInt("idfacultad")); estudiantes.setNombre(rs.getString("nombre")); estudiantes.setRegistrado(rs.getString("registrado")); estudiantes.setTelefono(rs.getString("telefono")); if (rs.getString("recibopago") == null) { estudiantes.setRecibopago(""); } else { estudiantes.setRecibopago(rs.getString("recibopago")); }
Consultamos en base a la cedula del estudiante
Carga los atributos de la clase estudiantes con los valores de los campos de las tablas
![Page 37: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/37.jpg)
} catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. VerificarLogin()"); } }
public String ActualizarRecibo() {
try { if (estudiantes.getRecibopago() == null || estudiantes.getRecibopago().equals("")) {
JsfUtil.addErrorMessage("Por favor ingrese el numero de recibo"); return null; }
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlupdate = "update estudiantes set recibopago =? where cedula =?";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setString(1, estudiantes.getRecibopago()); psquery.setString(2, estudiantes.getCedula()); int count = psquery.executeUpdate();
if (count == 0) { JsfUtil.addErrorMessage("No se pudo actualizar el numero de recibo "); mySessionBean.con.close(); return null; } psquery.close(); mySessionBean.con.close(); JsfUtil.addSuccessMessage("Se actualizo el recibo de pago "); return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. ActualizarRecibo()"); }
return null;
}
public String Eliminar() {
![Page 38: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/38.jpg)
try {
if (ConsultarSiTieneReservacion()) { JsfUtil.addErrorMessage("El estudiante tiene una reservación. No se puede eliminar"); return null; } if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlupdate = "delete from estudiantes where cedula =?";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setString(1, estudiantes.getCedula()); int count = psquery.executeUpdate();
if (count == 0) { JsfUtil.addErrorMessage("No se pudo eliminar el numero de recibo "); mySessionBean.con.close(); return null; }
psquery.close(); mySessionBean.con.close(); JsfUtil.addSuccessMessage("Se elimino el estudiante "); return "/administrador/listadoestudiantes"; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. ActualizarRecibo()"); }
return null;
}
public String Agregar() {
try {
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlupdate = "insert into estudiantes (cedula,nombre,idfacultad,carrera,telefono,direccion,email,grupo,registrado,recibopago)" + " values(?,?,?,?,?,?,?,?,?,?)";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setString(1, estudiantes.getCedula());
![Page 39: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/39.jpg)
psquery.setString(2, estudiantes.getNombre()); psquery.setInt(3, mySessionBean.getIdfacultad()); psquery.setString(4, estudiantes.getCarrera()); psquery.setString(5, estudiantes.getTelefono()); psquery.setString(6, estudiantes.getDireccion()); psquery.setString(7, estudiantes.getEmail()); psquery.setString(8, estudiantes.getGrupo()); psquery.setString(9, "no"); psquery.setString(10, estudiantes.getRecibopago()); int count = psquery.executeUpdate();
if (count == 0) { JsfUtil.addErrorMessage("No se pudo agregar el estudiantes "); mySessionBean.con.close(); return null; }
psquery.close(); mySessionBean.con.close(); JsfUtil.addSuccessMessage("Se agrego el estudiante... "); return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. Agregar()"); }
return null;
}
public String Actualizar() {
try {
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlupdate = "update estudiantes set nombre =?,idfacultad=?,carrera=?,telefono=?,direccion=?,email=?,grupo=?,registrado=?,recibopago=?" + " where cedula =?";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setString(1, estudiantes.getNombre()); psquery.setInt(2, mySessionBean.getIdfacultad()); psquery.setString(3, estudiantes.getCarrera()); psquery.setString(4, estudiantes.getTelefono()); psquery.setString(5, estudiantes.getDireccion()); psquery.setString(6, estudiantes.getEmail());
![Page 40: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/40.jpg)
psquery.setString(7, estudiantes.getGrupo()); psquery.setString(8, "no"); psquery.setString(9, estudiantes.getRecibopago()); psquery.setString(10, estudiantes.getCedula()); int count = psquery.executeUpdate();
if (count == 0) { JsfUtil.addErrorMessage("No se pudo actualizar el estudiantes "); mySessionBean.con.close(); return null; }
psquery.close(); mySessionBean.con.close(); JsfUtil.addSuccessMessage("Se actualizo el estudiante... "); return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. Agregar()"); }
return null;
}
public String Limpiar() {//estudiantes.setCedula(""); estudiantes.setCarrera(""); estudiantes.setDireccion(""); estudiantes.setEmail(""); estudiantes.setIdfacultad(0); estudiantes.setNombre(""); estudiantes.setRegistrado(""); estudiantes.setTelefono(""); estudiantes.setRecibopago(""); return null; }
public String CargarLista() {
try {
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; }
String sqlquery = "select * from estudiantes where idfacultad ='" + mySessionBean.getIdfacultad() + "'"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery);
ResultSet rs = psquery.executeQuery();
Cargamos los list de la clase estudiantes que seran usados en los dataTable
![Page 41: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/41.jpg)
rs.next(); int x = rs.getRow(); if (x == 0) { JsfUtil.addErrorMessage("No existen registros de estudiantes en esta facultad " + mySessionBean.getIdfacultad()); rs.close(); psquery.close(); mySessionBean.con.close(); return null; }
rs.beforeFirst(); estudianteslist.removeAll(estudianteslist); while (rs.next()) {
estudianteslist.add(new Estudiantes( rs.getString("cedula"), rs.getString("nombre"), rs.getInt("idfacultad"), rs.getString("carrera"), rs.getString("telefono"), rs.getString("direccion"), rs.getString("email"), rs.getString("grupo"), rs.getString("registrado"), rs.getString("recibopago")));
} rs.close(); psquery.close(); mySessionBean.con.close(); return "null"; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. CargarLista()"); }
return null;
}
public String ConsultarInscripcion() {
try { tieneRegistrosInscripcion = false; // String recibopago = estudiantes.getRecibopago(); if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlquery = "select * from estudiantes where cedula = ?";
Para crear nuevos elementos creamos objetos de la clase Estudiantes llamando a su método constructor.
Limpiamos la lista
![Page 42: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/42.jpg)
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery); psquery.setString(1, estudiantes.getCedula()); ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); if (x == 0) { JsfUtil.addErrorMessage("No existe estudiante con esa cedula: " + estudiantes.getCedula()); rs.close(); psquery.close(); mySessionBean.con.close(); return null; }
Cargar(rs); rs.close(); psquery.close(); mySessionBean.con.close();
if (estudiantes.getRegistrado().toLowerCase().equals("si")) { // JsfUtil.addErrorMessage("Usted esta debidamente inscrito en los talleres."); prioridadesBeans.CargarCombo(); mySessionBean.setIdfacultad(estudiantes.getIdfacultad()); inscripcionBeans.CargarListaInscripcionConsulta(estudiantes.getCedula(), estudiantes.getIdfacultad()); tieneRegistrosInscripcion = true; return null; } else { JsfUtil.addSuccessMessage("No tiene registrada ninguna inscripción..."); tieneRegistrosInscripcion = false; }
return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. VerificarLogin()"); }
return null;
}
public boolean ConsultarSiTieneReservacion() {
try {
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return false; }
String sqlquery = "select * from reservacion where cedula = ?"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery); psquery.setString(1, estudiantes.getCedula());
![Page 43: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/43.jpg)
ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); rs.close(); psquery.close();
mySessionBean.con.close(); if (x == 0) { return false; }
return true; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. ConsultarSiTieneReservacion()"); }
return false;
}
public String logout() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); if (session != null) { session.invalidate(); } return "/inicio"; }}
Cierra la sesión del usuario
![Page 44: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/44.jpg)
FORMULARIO DE INSCRIPCIÓN
![Page 45: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/45.jpg)
inscripcion.xhtml <h:form rendered="#{estudiantesBeans.logeado}">
<h:panelGrid columns="1" >
<h:outputText value="Nombre: #{estudiantes.nombre}"></h:outputText> <h:outputText value="Cedula: #{estudiantes.cedula} "/>
<h:outputText value="Carrera: #{estudiantes.carrera}"></h:outputText> <h:outputText value="No. Recibo: #{estudiantes.recibopago}"></h:outputText>
</h:panelGrid> <p:dashboard id="board" model="#{dashboardBean.model}" reorderListener="#{dashboardBean.handleReorder}" onReorderUpdate="growl">
</p:dashboard>
<p:panel id="noticias" toggleable="true" closable="true" style="width:850px"> <h:panelGrid columns="1"> <h:outputText value="Nota:" style="color: Red;" /> <h:outputText value="#{prioridadesBeans.mensajeReservacion1}" /> <h:outputText value="#{prioridadesBeans.mensajeReservacion2}" /> <hr></hr> </h:panelGrid> </p:panel> <p:draggable for="noticias" dashboard="board" helper="clone"/> <h:panelGrid columns="2" >
<h:commandLink action="#{inscripcionBeans.Agregar}" value="" title="Guardar" > <h:graphicImage value="/resources/imagenes/botones/save.png" width="30" height="30"/> </h:commandLink> <h:commandLink action="#{estudiantesBeans.logout}" title="#{i18n['boton.cerrar.sesion']}" > <h:graphicImage value="/resources/imagenes/botones/return.png" width="30" height="30"/> </h:commandLink>
</h:panelGrid>
<p:dataTable var="inscripcion" value="#{inscripcionBeans.inscripcionlist}" paginator="true" rows="20" dynamic="false or true" selection="#{inscripcionBeans.selectedInscripcion}" selectionMode="single" update="display" >
Componente dataTable y la variable
Objeto que sera seleccionado
Lista de objetos
Guardamos la inscripción
![Page 46: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/46.jpg)
<p:column > <f:facet name="header"> <h:outputText value="Taller" /> </f:facet>
<h:outputText value="#{inscripcion.taller}" /> </p:column>
<p:column > <f:facet name="header"> <h:outputText value="Prioridad" /> </f:facet> <h:selectOneMenu value="#{inscripcion.prioridad}"> <f:selectItems value="#{prioridadesBeans.prioridadesCombo}"/> </h:selectOneMenu>
</p:column>
<p:column > <f:facet name="header"> <h:outputText value="Lugar" /> </f:facet>
<h:outputText value="#{inscripcion.lugar}" /> </p:column> <p:column > <f:facet name="header"> <h:outputText value="Expositor" /> </f:facet>
<h:outputText value="#{inscripcion.expositor}" />
</p:column>
<p:column > <f:facet name="header"> <h:outputText value="Fecha" /> </f:facet> <h:outputText value="#{inscripcion.fecha}" /> </p:column> <p:column > <f:facet name="header">
Titulo de la columnacontenido
Objeto seleccion
Valores del combo
combo
![Page 47: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/47.jpg)
<h:outputText value="Hora" /> </f:facet> <h:panelGrid columns="3"> <h:outputText value="#{inscripcion.horainicio}" /> <h:outputText value="-"/> <h:outputText value="#{inscripcion.horaterminacion}" /> </h:panelGrid> </p:column> </p:dataTable>
<h:panelGrid columns="2" >
<h:commandLink action="#{inscripcionBeans.Agregar}" value="" title="Guardar" > <h:graphicImage value="/resources/imagenes/botones/save.png" width="30" height="30"/> </h:commandLink> <h:commandLink action="#{estudiantesBeans.logout}" title="#{i18n['boton.cerrar.sesion']}" > <h:graphicImage value="/resources/imagenes/botones/return.png" width="30" height="30"/> </h:commandLink>
</h:panelGrid> <p:messages id="messages"/> <!-- <p:growl id="growl" showDetail="true" life="3000" /> --> </h:form>
<h:form rendered="#{!estudiantesBeans.logeado}"> <h:outputText value="Acceso no autorizado"/> <h:commandLink action="#{menu.EstudiantesLogin}" value="Regresar" /> </h:form>
eventos
Mostramos esa ventana si no se ha logeado
![Page 48: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/48.jpg)
CLASE PRIORIDADESAdministra las prioridades por cada facultad para los talleres.maximo_prioridad = indica la prioridad máxima que se puede seleccionar para los talleres .maximo_reserva: Es el numero maximo hasta el que se reservaran los cupos para los talleres.Ejemplo: maximo_prioridad: 3 maximo_reserva: 2indica que solo se mostraran 3 prioridades para seleccionar. Y que solo los numeros del 1 al 2 (maximo_reserva), quedaran inscritos en los talleres.
![Page 49: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/49.jpg)
import java.io.Serializable;import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;/** * @author avbravo */@ManagedBean@SessionScopedpublic class Prioridades implements Serializable {
private static final long serialVersionUID = 1L;private int maximo_prioridad;private int maximo_reserva;private int idfacultad;
/** Creates a new instance of Prioridades */ public Prioridades() { }
public Prioridades(int maximo_prioridad, int maximo_reserva, int idfacultad) { this.maximo_prioridad = maximo_prioridad; this.maximo_reserva = maximo_reserva; this.idfacultad = idfacultad; }
public int getIdfacultad() { return idfacultad; }
public void setIdfacultad(int idfacultad) { this.idfacultad = idfacultad; }
public int getMaximo_prioridad() { return maximo_prioridad; }
public void setMaximo_prioridad(int maximo_prioridad) { this.maximo_prioridad = maximo_prioridad; }
public int getMaximo_reserva() { return maximo_reserva; }
public void setMaximo_reserva(int maximo_reserva) { this.maximo_reserva = maximo_reserva; } }
![Page 50: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/50.jpg)
Crear la clase PrioridadesBeans.javaimport java.io.Serializable;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import javax.el.ELContext;import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;import javax.faces.context.FacesContext;import javax.faces.model.SelectItem;import org.avbravo.inscripcion.JsfUtil;import org.avbravo.inscripcion.beans.MySessionBean;
/** * * @author avbravo */@ManagedBean@SessionScopedpublic class PrioridadesBeans implements Serializable {
private static final long serialVersionUID = 1L; MySessionBean mySessionBean; Prioridades prioridades; private List<Prioridades> prioridadeslist; private Prioridades selectedPrioridades; SelectItem[] prioridadesCombo; private String mensajeReservacion1; private String mensajeReservacion2; private int maximo_prioridad; private int maximo_reserva; private int idfacultad;
public String prepararVista() { try { prioridades.setIdfacultad(selectedPrioridades.getIdfacultad()); Consultar();
return "/administrador/prioridadeseditar"; } catch (Exception ex) { JsfUtil.addErrorMessage(ex, "Error "); } return null; }
public int getIdfacultad() { return idfacultad; }
Definimos los objetos para el combo
![Page 51: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/51.jpg)
public void setIdfacultad(int idfacultad) { this.idfacultad = idfacultad; }
/** Creates a new instance of EstudiantesBeans */ public PrioridadesBeans() { ELContext elContext = FacesContext.getCurrentInstance().getELContext(); mySessionBean = (MySessionBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "mySessionBean"); prioridades = (Prioridades) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "prioridades"); prioridadeslist = new ArrayList<Prioridades>();
}
public int getMaximo_prioridad() { return maximo_prioridad; }
public void setMaximo_prioridad(int maximo_prioridad) { this.maximo_prioridad = maximo_prioridad; }
public int getMaximo_reserva() { return maximo_reserva; }
public void setMaximo_reserva(int maximo_reserva) { this.maximo_reserva = maximo_reserva; }
public SelectItem[] getPrioridadesCombo() {
return prioridadesCombo; }
public String getMensajeReservacion1() { return mensajeReservacion1; }
public void setMensajeReservacion1(String mensajeReservacion1) {
this.mensajeReservacion1 = mensajeReservacion1; }
![Page 52: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/52.jpg)
public String getMensajeReservacion2() { return mensajeReservacion2; }
public void setMensajeReservacion2(String mensajeReservacion2) { this.mensajeReservacion2 = mensajeReservacion2; }
public void setPrioridadesCombo(SelectItem[] prioridadesCombo) { this.prioridadesCombo = prioridadesCombo; }
public Prioridades getPrioridades() { return prioridades; }
public void setPrioridades(Prioridades prioridades) { this.prioridades = prioridades; }
public List<Prioridades> getPrioridadeslist() { return prioridadeslist; }
public void setPrioridadeslist(List<Prioridades> prioridadeslist) { this.prioridadeslist = prioridadeslist; }
public Prioridades getSelectedPrioridades() { return selectedPrioridades; }
public void setSelectedPrioridades(Prioridades selectedPrioridades) { this.selectedPrioridades = selectedPrioridades; }
public String ConsultarPrioridades() { try { if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlquery = "select * from prioridades where idfacultad ='" + mySessionBean.getIdfacultad() + "'"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery); ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); if (x == 0) {
![Page 53: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/53.jpg)
JsfUtil.addErrorMessage("No existen registros de prioridades en esta facultad "); mySessionBean.con.close(); return null; }
rs.beforeFirst(); maximo_prioridad = 0; maximo_reserva = 0; while (rs.next()) { maximo_prioridad = rs.getInt("maximo_prioridad"); maximo_reserva = rs.getInt("maximo_reserva"); } rs.close(); psquery.close(); mySessionBean.con.close(); if (maximo_reserva == 1) { mensajeReservacion1 = "Los talleres con prioridad 1 se reservara el cupo "; mensajeReservacion2 = "Prioridad 2 a " + String.valueOf(maximo_prioridad) + " seran asignados en un proceso automatico basado en cupos disponibles."; } else { mensajeReservacion1 = "Los talleres con prioridad 1 a " + String.valueOf(maximo_reserva) + " se reservara el cupo. "; mensajeReservacion2 = "Prioridad " + String.valueOf(maximo_reserva + 1) + " a " + String.valueOf(maximo_prioridad) + " seran asignados en un proceso automatico basado en cupos disponibles."; } return "null"; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. ConsultarPrioridade()"); } return null; }
public String CargarCombo() { try { if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; }
String sqlquery = "select * from prioridades where idfacultad ='" + mySessionBean.getIdfacultad() + "'"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery);
ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); if (x == 0) { JsfUtil.addErrorMessage("No existen registros de prioridades en esta facultad "); mySessionBean.con.close();
Cargar los elementos del combo
![Page 54: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/54.jpg)
return null; }
rs.beforeFirst(); maximo_prioridad = 0; maximo_reserva = 0; while (rs.next()) {
maximo_prioridad = rs.getInt("maximo_prioridad"); maximo_reserva = rs.getInt("maximo_reserva");
}
rs.close(); psquery.close(); mySessionBean.con.close(); // prioridadesCombo[ind] = new SelectItem(rs.getString("idtaller"), rs.getString("taller")); if (maximo_reserva == 1) { mensajeReservacion1 = "Los talleres con prioridad 1 se reservara el cupo "; mensajeReservacion2 = "Prioridad 2 a " + String.valueOf(maximo_prioridad) + " seran asignados en un proceso automatico basado en cupos disponibles.";
} else { mensajeReservacion1 = "Los talleres con prioridad 1 a " + String.valueOf(maximo_reserva) + " se reservara el cupo. "; mensajeReservacion2 = "Prioridad " + String.valueOf(maximo_reserva + 1) + " a " + String.valueOf(maximo_prioridad) + " seran asignados en un proceso automatico basado en cupos disponibles."; }
prioridadesCombo = new SelectItem[maximo_prioridad + 1]; for (int i = 0; i <= maximo_prioridad; i++) { prioridadesCombo[i] = new SelectItem(String.valueOf(i), String.valueOf(i)); }
return "null"; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. CargarCombo()"); }
Mensajes que se mostraran indicando las prioridades
Definimos el tamaño de los elementos del combo
Agregamos elementos al combo
![Page 55: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/55.jpg)
return null; }
public String CargarLista() {
try {
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlquery = "select * from prioridades where idfacultad ='" + mySessionBean.getIdfacultad() + "'"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery); ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); if (x == 0) { JsfUtil.addErrorMessage("No existen registros de prioridades en esta facultad "); mySessionBean.con.close(); return null; } rs.beforeFirst(); prioridadeslist.removeAll(prioridadeslist); while (rs.next()) { prioridadeslist.add(new Prioridades( rs.getInt("maximo_prioridad"), rs.getInt("maximo_reserva"), rs.getInt("idfacultad"))); } rs.close(); psquery.close(); mySessionBean.con.close(); return "null"; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. CargarLista()"); }
return null;
}
![Page 56: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/56.jpg)
public String Consultar() {
try {
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; }
String sqlquery = "select * from prioridades where idfacultad =?"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery); psquery.setInt(1, mySessionBean.getIdfacultad()); ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); if (x == 0) { JsfUtil.addErrorMessage("No existe prioridades en esa facultad"); rs.close(); psquery.close(); mySessionBean.con.close(); Limpiar(); return null; }
Cargar(rs);
rs.close(); psquery.close(); mySessionBean.con.close(); return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. Consultar()"); }
return null;
}
private void Cargar(ResultSet rs) { try { prioridades.setMaximo_prioridad(rs.getInt("maximo_prioridad")); prioridades.setMaximo_reserva(rs.getInt("maximo_reserva")); prioridades.setIdfacultad(rs.getInt("idfacultad")); } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. Cargar()"); } }
![Page 57: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/57.jpg)
public void Limpiar() { prioridades.setMaximo_prioridad(0); prioridades.setMaximo_reserva(0); prioridades.setIdfacultad(0); }
public String Agregar() {
try {
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlupdate = "insert into prioridades (maximo_prioridad,maximo_reserva, idfacultad)" + "values(?,?,?)";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setInt(1, prioridades.getMaximo_prioridad()); psquery.setInt(2, prioridades.getMaximo_reserva()); psquery.setInt(3, mySessionBean.getIdfacultad());
int count = psquery.executeUpdate();
if (count == 0) { JsfUtil.addErrorMessage("No se pudo guardar la prioridad "); mySessionBean.con.close(); return null; }
psquery.close(); mySessionBean.con.close(); JsfUtil.addSuccessMessage("Se guardo la prioridad "); Limpiar(); return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. Agregar()"); }
return null;
}
![Page 58: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/58.jpg)
public String Editar() {
try {
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlupdate = "update prioridades set maximo_prioridad=?,maximo_reserva=?" + " where idfacultad =?";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setInt(1, prioridades.getMaximo_prioridad()); psquery.setInt(2, prioridades.getMaximo_reserva()); psquery.setInt(3, mySessionBean.getIdfacultad());
int count = psquery.executeUpdate();
if (count == 0) { JsfUtil.addErrorMessage("No se pudo actualizr el taller "); psquery.close(); mySessionBean.con.close(); return null; }
psquery.close(); mySessionBean.con.close(); JsfUtil.addSuccessMessage("Se actualizo el taller ");
return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. Actualizar()"); } return null;
}}
![Page 59: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/59.jpg)
CLASE INSCRIPCION
No tiene una tabla especifica, almacena datos para trabajar varias tablas.
![Page 60: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/60.jpg)
Creamos la clase Inscripcion.javaimport java.io.Serializable; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; /** * * @author avbravo */ @ManagedBean @SessionScoped public class Inscripcion implements Serializable { private static final long serialVersionUID = 1L; private String idtaller; private String taller; private String descripcion; private String fecha; private String horainicio; private String horaterminacion; private String lugar; private int cupos; private String abierto; private int tomados; private String expositor; private String url; private String foto; private int idfacultad; private int prioridad; /** Creates a new instance of Inscripcion */ public Inscripcion() { } public Inscripcion(String idtaller, String taller, String descripcion, String fecha, String horainicio, String horaterminacion, String lugar, int cupos, String abierto, int tomados, String expositor, String url, String foto, int idfacultad, int prioridad) { this.idtaller = idtaller; this.taller = taller; this.descripcion = descripcion; this.fecha = fecha; this.horainicio = horainicio; this.horaterminacion = horaterminacion; this.lugar = lugar; this.cupos = cupos; this.abierto = abierto; this.tomados = tomados; this.expositor = expositor; this.url = url; this.foto = foto; this.idfacultad = idfacultad; this.prioridad = prioridad; }
![Page 61: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/61.jpg)
public String getDescripcion() { return descripcion; } public void setDescripcion(String descripcion) { this.descripcion = descripcion; }
public String getFoto() { return foto; } public void setFoto(String foto) { this.foto = foto; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getAbierto() { return abierto; } public void setAbierto(String abierto) { this.abierto = abierto; } public int getCupos() { return cupos; }
public void setCupos(int cupos) { this.cupos = cupos; } public String getExpositor() { return expositor; }
public void setExpositor(String expositor) { this.expositor = expositor; }
public String getFecha() { return fecha; } public void setFecha(String fecha) { this.fecha = fecha; } public String getHorainicio() { return horainicio; }
![Page 62: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/62.jpg)
public void setHorainicio(String horainicio) { this.horainicio = horainicio; } public String getHoraterminacion() { return horaterminacion; }
public void setHoraterminacion(String horaterminacion) { this.horaterminacion = horaterminacion; } public int getIdfacultad() { return idfacultad; } public void setIdfacultad(int idfacultad) { this.idfacultad = idfacultad; } public String getIdtaller() { return idtaller; } public void setIdtaller(String idtaller) { this.idtaller = idtaller; } public String getLugar() { return lugar; } public void setLugar(String lugar) { this.lugar = lugar; } public int getPrioridad() { return prioridad; } public void setPrioridad(int prioridad) { this.prioridad = prioridad; } public String getTaller() { return taller; } public void setTaller(String taller) { this.taller = taller; } public int getTomados() { return tomados; } public void setTomados(int tomados) { this.tomados = tomados; } }
![Page 63: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/63.jpg)
InscripcionBeans.javaimport org.avbravo.inscripcion.beans.talleres.TalleresBeans;import org.avbravo.inscripcion.beans.Inscripcion;import org.avbravo.inscripcion.beans.estudiantes.Estudiantes;import java.io.Serializable;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import javax.el.ELContext;import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;import javax.faces.context.FacesContext;import org.avbravo.inscripcion.JsfUtil;import org.avbravo.inscripcion.beans.prioridades.PrioridadesBeans;
/** * * @author avbravo */@ManagedBean@SessionScopedpublic class InscripcionBeans implements Serializable {
private static final long serialVersionUID = 1L; MySessionBean mySessionBean; Inscripcion inscripcion; Estudiantes estudiantes; TalleresBeans talleresBeans; PrioridadesBeans prioridadesBeans; private List<Inscripcion> inscripcionlist; private Inscripcion selectedInscripcion;
/** Creates a new instance of InscripcionBeans */ public InscripcionBeans() { ELContext elContext = FacesContext.getCurrentInstance().getELContext();
mySessionBean = (MySessionBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "mySessionBean"); inscripcion = (Inscripcion) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "inscripcion"); estudiantes = (Estudiantes) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "estudiantes"); talleresBeans = (TalleresBeans) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "talleresBeans"); prioridadesBeans = (PrioridadesBeans)
![Page 64: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/64.jpg)
FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "prioridadesBeans"); inscripcionlist = new ArrayList<Inscripcion>();
}
public Inscripcion getSelectedInscripcion() { return selectedInscripcion; }
public void setSelectedInscripcion(Inscripcion selectedInscripcion) { this.selectedInscripcion = selectedInscripcion; }
public Inscripcion getInscripcion() { return inscripcion; }
public void setInscripcion(Inscripcion inscripcion) { this.inscripcion = inscripcion; }
public List<Inscripcion> getInscripcionlist() { return inscripcionlist; }
public void setInscripcionlist(List<Inscripcion> inscripcionlist) { this.inscripcionlist = inscripcionlist; }
public String CargarListaInscripcion() {
try {
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
mySessionBean = (MySessionBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "mySessionBean");
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; }
String sqlquery = "select * from talleres where tomados < cupos and abierto='si' and idfacultad ='" + estudiantes.getIdfacultad() + "'"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery);
![Page 65: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/65.jpg)
ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); if (x == 0) { JsfUtil.addErrorMessage("No existen registros de talleres en esta facultad "); mySessionBean.con.close(); return null; }
rs.beforeFirst(); inscripcionlist.removeAll(inscripcionlist);
while (rs.next()) {
inscripcionlist.add(new Inscripcion( rs.getString("idtaller"), rs.getString("taller"), rs.getString("descripcion"), rs.getString("fecha"), rs.getString("horainicio"), rs.getString("horaterminacion"), rs.getString("lugar"), rs.getInt("cupos"), rs.getString("abierto"), rs.getInt("tomados"), rs.getString("expositor"), rs.getString("url"), rs.getString("foto"), rs.getInt("idfacultad"), 0));
} rs.close(); psquery.close(); mySessionBean.con.close(); return "null"; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. CargarListaInscripcion()"); }
return null;
}
/* * muestra al estudiante la reservacion que el hizo * */
![Page 66: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/66.jpg)
public String CargarListaInscripcionConsulta(String lcedula, int lidfacultad) {
try { prioridadesBeans.ConsultarPrioridades();
if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; }
String sqlquery = "select talleres.*,reservacion.prioridad from talleres,reservacion " + " where abierto ='si' and talleres.idtaller= reservacion.idtaller " + " and talleres.idfacultad ='" + lidfacultad + "' " + " and talleres.idfacultad = reservacion.idfacultad " + " and reservacion.cedula='" + lcedula + "' " + " order by prioridad"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery);
ResultSet rs = psquery.executeQuery(); rs.next(); int x = rs.getRow(); if (x == 0) { JsfUtil.addErrorMessage("No existen registros de talleres en esta facultad "); mySessionBean.con.close(); return null; } rs.beforeFirst(); inscripcionlist.removeAll(inscripcionlist); while (rs.next()) { inscripcionlist.add(new Inscripcion( rs.getString("idtaller"), rs.getString("taller"), rs.getString("descripcion"), rs.getString("fecha"), rs.getString("horainicio"), rs.getString("horaterminacion"), rs.getString("lugar"), rs.getInt("cupos"), rs.getString("abierto"), rs.getInt("tomados"), rs.getString("expositor"), rs.getString("url"), rs.getString("foto"), rs.getInt("idfacultad"), rs.getInt("prioridad"))); }
rs.close(); psquery.close();
![Page 67: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/67.jpg)
mySessionBean.con.close(); return null; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. CargarListaInscripcion()"); } return null; }
public String Agregar() { try { /* * recorremos el list */ if (inscripcionlist == null) { JsfUtil.addErrorMessage("No hay registros para procesar"); return null; }
int tseleccion[] = new int[prioridadesBeans.getMaximo_prioridad() + 1]; for (int i = 0; i < inscripcionlist.size(); i++) { Inscripcion id = inscripcionlist.get(i); tseleccion[id.getPrioridad()]++; }
Creamos un arreglo para verificar que no se repitan las prioridades
Recorremos la lista
Obtenemos cada seleccion y la convertimos a la clase Inscripcion para manipular los atributos
Obtenemos la prioridad
![Page 68: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/68.jpg)
//se toma 1 porque 0 se asume que no es prioridad boolean selecciono = false; for (int i = 1; i <= prioridadesBeans.getMaximo_prioridad(); i++) { if (tseleccion[i] > 1) { JsfUtil.addErrorMessage("Solo debe seleccionar una prioridad " + String.valueOf(i)); return null; } if (tseleccion[i] == 1) { selecciono = true; } } if (selecciono == false) { JsfUtil.addErrorMessage("Debe seleccionar por lo menos un taller"); return null; } String sqlinsert = "insert into reservacion (cedula,idtaller,prioridad," + "idfacultad,fecha)" + "values(?,?,?,?,?)"; for (int i = 0; i < inscripcionlist.size(); i++) { Inscripcion id = inscripcionlist.get(i); if (id.getPrioridad() > 0) { GuardarRegistro(sqlinsert, id.getIdtaller(), id.getPrioridad()); if (id.getPrioridad() <= prioridadesBeans.getMaximo_reserva()) { //actualizo el taller con los inscritos prioridad 1 talleresBeans.ActualizarCuposTomados(id.getIdtaller(), estudiantes.getIdfacultad()); }
} }
ActualizarInscrito(); CargarListaInscripcionConsulta(estudiantes.getCedula(), estudiantes.getIdfacultad()); JsfUtil.addSuccessMessage("Se guardo exitosamente la inscripcion "); Limpiar(); return "inscripcionconsulta"; } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. Agregar()"); } return null; }
private void GuardarRegistro(String sqlinsert, String idtaller, int prioridad) { try { if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return; } java.util.Calendar ca = java.util.Calendar.getInstance();
Si es mayor de uno enviamos el mensaje
Recorremos la lista , lo convertimos a la clase y obtenemos los atributos para guardarlos en la tabla.
![Page 69: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/69.jpg)
java.sql.Date mydate = new java.sql.Date(ca.getTimeInMillis());
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlinsert); psquery.setString(1, estudiantes.getCedula()); psquery.setString(2, idtaller); psquery.setInt(3, prioridad); psquery.setInt(4, estudiantes.getIdfacultad()); psquery.setDate(5, mydate);
int count = psquery.executeUpdate();
if (count == 0) { JsfUtil.addErrorMessage("No se pudo guardar la inscripcion "); mySessionBean.con.close(); return; }
psquery.close(); mySessionBean.con.close(); } catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. GuardarRegistro()"); }
}
public String ActualizarInscrito() {
try { if (mySessionBean.Conectar() == false) { JsfUtil.addErrorMessage("No se pudo conectar a la base de datos"); return null; } String sqlupdate = "update estudiantes set registrado ='si' where cedula =?"; PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate); psquery.setString(1, estudiantes.getCedula()); int count = psquery.executeUpdate();
if (count == 0) { JsfUtil.addErrorMessage("No se pudo actualizar el registro de estudiantes "); mySessionBean.con.close(); return null; } psquery.close(); mySessionBean.con.close(); return null;
![Page 70: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/70.jpg)
} catch (Exception e) { JsfUtil.addErrorMessage(e, "Error. ActualizarInscrito()"); } return null; } public String EliminarInscripcion() { try { /* * recorremos el list */ if (inscripcionlist == null) { JsfUtil.addErrorMessage("No hay registros para procesar"); return null; } prioridadesBeans.ConsultarPrioridades(); for (int i = 0; i < inscripcionlist.size(); i++) { Inscripcion id = inscripcionlist.get(i); if (id.getPrioridad() > 0 && id.getPrioridad() <= prioridadesBeans.getMaximo_reserva()) { // reducir el cupo ActualizarCupos(id.getIdtaller()); }
}//se toma 1 porque 0 se asume que no es prioridad
ActualizarNoInscrito(); EliminarRegistroReservacion(); JsfUtil.addSuccessMessage("Se elimino la inscripcion de los talleres"); return "/administrador/administradormenu"; } catch (Exception e) {
JsfUtil.addErrorMessage(e, "Error. EliminarInscripcion()");
}
return null;
}
public void Limpiar() {
inscripcion.setIdtaller("");
inscripcion.setTaller("");
inscripcion.setDescripcion("");
//inscripcion.setFecha();
inscripcion.setHorainicio("");
inscripcion.setHoraterminacion("");
inscripcion.setLugar("");
![Page 71: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/71.jpg)
inscripcion.setCupos(0);
inscripcion.setAbierto("");
inscripcion.setTomados(0);
inscripcion.setExpositor("");
inscripcion.setUrl("");
inscripcion.setFoto("");
inscripcion.setIdfacultad(0);
inscripcion.setPrioridad(0);
}
public String ActualizarNoInscrito() {
try {
if (mySessionBean.Conectar() == false) {
JsfUtil.addErrorMessage("No se pudo conectar a la base de datos");
return null;
}
String sqlupdate = "update estudiantes set registrado ='no' where cedula =?";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setString(1, estudiantes.getCedula());
int count = psquery.executeUpdate();
if (count == 0) {
JsfUtil.addErrorMessage("No se pudo actualizar el registro de estudiantes ");
mySessionBean.con.close();
return null;
}
psquery.close();
mySessionBean.con.close();
// JsfUtil.addSuccessMessage("Se actualizo el recibo de pago ");
return null;
} catch (Exception e) {
JsfUtil.addErrorMessage(e, "Error. ActualizarNoInscrito()");
}
return null;
}
![Page 72: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/72.jpg)
public String EliminarRegistroReservacion() {
try {
if (mySessionBean.Conectar() == false) {
JsfUtil.addErrorMessage("No se pudo conectar a la base de datos");
return null;
}
String sqlupdate = "delete from reservacion where cedula =?";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setString(1, estudiantes.getCedula());
int count = psquery.executeUpdate();
if (count == 0) {
JsfUtil.addErrorMessage("No se pudo eliminar la reservacion ");
mySessionBean.con.close();
return null;
}
psquery.close();
mySessionBean.con.close();
return null;
} catch (Exception e) {
JsfUtil.addErrorMessage(e, "Error. EliminarRegistroReservacion()");
}
return null;
}
public String ActualizarCupos(String lidtaller) {
try {
if (mySessionBean.Conectar() == false) {
JsfUtil.addErrorMessage("No se pudo conectar a la base de datos");
return null;
}
String sqlupdate = "update talleres set tomados =tomados - 1 where idtaller =? and idfacultad =?";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlupdate);
psquery.setString(1, lidtaller);
psquery.setInt(2, mySessionBean.getIdfacultad());
![Page 73: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/73.jpg)
int count = psquery.executeUpdate();
if (count == 0) {
JsfUtil.addErrorMessage("No se pudo actualizar el registro de estudiantes ");
mySessionBean.con.close();
return null;
}
psquery.close();
mySessionBean.con.close();
// JsfUtil.addSuccessMessage("Se actualizo el recibo de pago ");
return null;
} catch (Exception e) {
JsfUtil.addErrorMessage(e, "Error. ActualizarCupos()");
}
return null;
}
}
![Page 74: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/74.jpg)
Administrar Facultad
![Page 75: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/75.jpg)
Clase Facultad.java
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
/**
* @author avbravo
*/
@ManagedBean
@SessionScoped
public class Facultad implements Serializable {
private static final long serialVersionUID = 1L;
private int idfacultad;
private String facultad;
private String logo;
private String url;
/** Creates a new instance of Facultad */
public Facultad() {
}
public Facultad(int idfacultad, String facultad, String logo, String url) {
this.idfacultad = idfacultad;
this.facultad = facultad;
this.logo = logo;
this.url = url;
}
public String getFacultad() {
![Page 76: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/76.jpg)
return facultad;
}
public void setFacultad(String facultad) {
this.facultad = facultad;
}
public int getIdfacultad() {
return idfacultad;
}
public void setIdfacultad(int idfacultad) {
this.idfacultad = idfacultad;
}
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
![Page 77: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/77.jpg)
Clase FacultadBeans.java
import org.avbravo.inscripcion.beans.facultad.Facultad;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.el.ELContext;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.avbravo.inscripcion.JsfUtil;
import org.avbravo.inscripcion.beans.MySessionBean;
/**
* @author avbravo
*/
@ManagedBean
@SessionScoped
public class FacultadBeans implements Serializable {
private static final long serialVersionUID = 1L;
MySessionBean mySessionBean;
Facultad facultad;
SelectItem[] facultadesCombo;
/** Creates a new instance of FacultadBeans */
public FacultadBeans() {
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
mySessionBean = (MySessionBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null,
![Page 78: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/78.jpg)
"mySessionBean");
facultad = (Facultad) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "facultad");
}
public SelectItem[] getFacultadesCombo() {
return facultadesCombo;
}
public void setFacultadesCombo(SelectItem[] facultadesCombo) {
this.facultadesCombo = facultadesCombo;
}
public String CargarCombo() {
try {
if (mySessionBean.Conectar() == false) {
JsfUtil.addErrorMessage("No se pudo conectar a la base de datos");
return null;
}
String sqlquery = "select * from facultad ";
PreparedStatement psquery = mySessionBean.con.prepareStatement(sqlquery);
ResultSet rs = psquery.executeQuery();
rs.next();
int x = rs.getRow();
if (x == 0) {
JsfUtil.addErrorMessage("No existen registros de facultades ");
mySessionBean.con.close();
return null;
}
rs.last();
int n = rs.getRow();
Cargar el combo
Numero de registros en la tabla
![Page 79: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/79.jpg)
facultadesCombo = new SelectItem[n];
rs.beforeFirst();
int contador = 0;
while (rs.next()) {
facultadesCombo[contador] = new SelectItem(String.valueOf(rs.getInt("idfacultad")), rs.getString("facultad"));
contador++;
}
rs.close();
psquery.close();
mySessionBean.con.close();
return "null";
} catch (Exception e) {
JsfUtil.addErrorMessage(e, "Error. CargarCombo()");
}
return null;
}
}
Definimos el tamaño del combo
Agregamos los elementos al combo
![Page 80: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/80.jpg)
EJEMPLO DE USO
<h:outputText value="Facultad"/>
<h:selectOneMenu value="#{usuariosRegistros.idfacultad}">
<f:selectItems value="#{facultadBeans.facultadesCombo}"/>
<!--
<f:ajax render="o pcionActual"/>
-->
</h:selectOneMenu>
![Page 81: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/81.jpg)
DEFINIENDO EL MENU
Creamos una clase MENU.JAVA
import org.avbravo.inscripcion.beans.talleres.TalleresBeans;
import org.avbravo.inscripcion.beans.estudiantes.EstudiantesBeans;
import javax.el.ELContext;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.avbravo.inscripcion.beans.facultad.FacultadBeans;
import org.avbravo.inscripcion.beans.prioridades.PrioridadesBeans;
import org.avbravo.inscripcion.beans.usuarios.UsuariosBeans;
/**
* @author avbravo
*/
@ManagedBean
@RequestScoped
public class Menu {
EstudiantesBeans estudiantesBeans;
FacultadBeans facultadBeans;
TalleresBeans talleresBeans;
PrioridadesBeans prioridadesBeans;
UsuariosBeans usuariosBeans;
/** Creates a new instance of Menu */
public Menu() {
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
Instanciamos las clases
![Page 82: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/82.jpg)
estudiantesBeans = (EstudiantesBeans) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "estudiantesBeans");
facultadBeans = (FacultadBeans) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "facultadBeans");
talleresBeans = (TalleresBeans) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "talleresBeans");
prioridadesBeans = (PrioridadesBeans) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "prioridadesBeans");
usuariosBeans = (UsuariosBeans) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "usuariosBeans");
}
/*
* Regresar
*/
public String RegresarMenuAdministrador() {
return "/administrador/administradormenu";
}
/*
* adminitrador
*/
public String RegistrarPago() {
return "/administrador/registrarpago";
}
public String AdministradorLogin() {
return "/administrador";
}
public String EditarInscripcion() {
return "/administrador/editarinscripcion"; }
Llamamos las clases
![Page 83: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/83.jpg)
public String Reportes() {
return "/administrador/reportesestudiantestalleres";
}
public String ListadoUsuarios() {
usuariosBeans.CargarLista();
return "/administrador/listadousuarios";
}
public String UsuariosAgregar() {
facultadBeans.CargarCombo();
return "/administrador/usuariosagregar";
}
/*
* Estudiantes
*/
public String EstudiantesLogin() {
return "inicio";
}
public String ListadoEstudiantes() {
estudiantesBeans.CargarLista();
return "/administrador/listadoestudiantes";
}
public String AgregarEstudiantes() {
estudiantesBeans.Limpiar();
return "/administrador/estudiantesagregar";
}
public String ListadoTalleres() {
Cuando usamos dataTable, cargamos la lista antes de llamar a la pagina.
Cargamos el combo
![Page 84: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/84.jpg)
talleresBeans.CargarLista();
return "/administrador/listadotalleres";
}
public String ListadoEstudiantesTalleres() {
talleresBeans.CargarCombo();
return "/administrador/listadoestudiantestalleres";
}
public String ListadoEstudiantesSoloReservacion() {
talleresBeans.CargarCombo();
return "/administrador/listadoestudiantessoloreservacion";
}
public String TalleresAgregar() {
return "/administrador/talleresagregar";
}
public String TallerAsignarAutomaticamente() {
return "/administrador/talleresasignarautomaticamente";
}
public String ListadoPrioridades() {
prioridadesBeans.CargarLista();
return "/administrador/listadoprioridades";
}
public String PrioridadesAgregar() {
return "/administrador/prioridadesagregar";
}
}
![Page 85: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/85.jpg)
Pagina menuadministrador.xhtml
<h:form rendered="#{usuariosBeans.logeado}">
<h:panelGrid columns ="2">
<h:outputText value="Usuario: #{usuarios.nombre}"/>
<h:commandLink action="#{usuariosBeans.logout}" value="" title="Cerrar Sesion">
<h:graphicImage value="/resources/imagenes/botones/logout.png" width="30" height="30"/>
</h:commandLink>
</h:panelGrid>
<h:panelGrid columns ="1" >
<h:commandLink action="#{menu.RegistrarPago}" value="Registrar Pago" />
<h:commandLink action="#{menu.ListadoEstudiantes}" value="Listado Estudiantes" />
<h:commandLink action="#{menu.AgregarEstudiantes}" value="Agregar Estudiantes" />
<h:commandLink action="#{menu.EditarInscripcion}" value="Editar Inscripcion" />
</h:panelGrid>
<hr>
</hr>
<h:panelGrid columns ="1" >
<h:commandLink action="#{menu.TalleresAgregar}" value="Agregar Talleres" />
<h:commandLink action="#{menu.ListadoTalleres}" value="Listado Talleres" />
<h:commandLink action="#{menu.ListadoEstudiantesTalleres}" value="Listado Estudiantes x Talleres" />
<h:commandLink action="#{menu.ListadoEstudiantesSoloReservacion}" value="Listado Estudiantes Solo Reservaron" />
<h:commandLink action="#{menu.TallerAsignarAutomaticamente}" value="Asignar Cupos automaticamente" />
</h:panelGrid>
<hr>
</hr>
<h:panelGrid columns ="1" >
![Page 86: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/86.jpg)
<h:commandLink action="#{menu.PrioridadesAgregar}" value="Registrar Prioridades" />
<h:commandLink action="#{menu.ListadoPrioridades}" value="Listado Prioridades" />
</h:panelGrid>
<hr>
</hr>
<h:panelGrid columns ="1" >
<p:graphicImage value="/resources/imagenes/botones/user.png" />
<h:commandLink action="#{menu.UsuariosAgregar}" value="Registrar Usuarios" />
<h:commandLink action="#{menu.ListadoUsuarios}" value="Listado Usuarios" />
</h:panelGrid>
<p:messages id="messages"/>
<!--
<p:growl id="growl" showDetail="true" life="3000" />
-->
</h:form>
<h:form rendered="#{!usuariosBeans.logeado}">
<h:outputText value="Acceso no autorizado"/>
<h:commandLink action="#{menu.AdministradorLogin}" value="Regresar" />
</h:form>
![Page 87: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/87.jpg)
Agregamos el carrusel
El carrusel no funciona bien con Google Chrome
<h:form prependId="false">
<h3>Talleres</h3>
<p:carousel value="#{listaTalleres.tallereslist}" var="car" rows="2" itemStyleClass="carItem"
effect="easeInStrong" circular="true" autoPlayInterval="2000">
<p:column>
<h:panelGrid columns="1" style="width:100%" cellpadding="5" >
<h:outputText value="Taller: #{car.taller}" />
<h:outputText value="Expositor: #{car.expositor}" />
<h:outputText value="Url: #{car.url}" />
<h:outputText value="Lugar: #{car.lugar}" />
<h:outputText value="Fecha: #{car.fecha}" />
<h:outputText value="Inicia: #{car.horainicio}" />
![Page 88: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/88.jpg)
<h:outputText value="Termina: #{car.horaterminacion}" />
<p:graphicImage value="/images/cars/#{car.foto}.jpg"/>
<p:commandLink update="carDetail" oncomplete="carDialog.show()" title="View Detail">
<p:graphicImage value="/images/search.png"/>
<f:setPropertyActionListener value="#{car}"
target="#{tableBean.selectedCar}" />
</p:commandLink>
</h:panelGrid>
</p:column>
</p:carousel>
</h:form>
![Page 89: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/89.jpg)
UTILIZAR THEMES
Pasos:
1. Descargar los temas desde
http://www.primefaces.org/themes.html
2. Editar el archivo web.xml y agregar
<context-param>
<param-name>primefaces.skin</param-name>
<param-value>none</param-value>
</context-param>
3. Descomprimir la carpeta de temas y copiarla en /resources/skin
4. En el <h:head de la pagina agregar
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/skin/humanity/skin.css"/>
si existe otro <link podemos agregarlo debajo.
![Page 90: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/90.jpg)
GENERAR REPORTES Y PDF CON ITEXT
Con iText podemos crear pdf con este framework además de gestionar completamente el pdf.Es ideal para usar con couchdb ya que los datos seran obtenidos desde clases en java y no desde una base de datos.
Descargar iText desdehttp://itextpdf.com/
Agregamos la libreria iText-5.0.4.jar
![Page 91: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/91.jpg)
En la clase TalleresBeans.java incorporamos el codigo de imprimir public void imprimir() { Document document = new Document(PageSize.LETTER); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { PdfWriter.getInstance(document, baos); //METADATA document.addTitle("estudiantes por talleres"); document.addSubject("Listado de los estudiantes inscritos "); document.addKeywords("Metadata, iText, talleres, estudiantes"); document.addCreator("My program using iText"); document.addAuthor("inscripcion web applicacion"); document.addHeader("Expires", "0"); //BaseFont bf_symbol = BaseFont.createFont(BaseFont.SYMBOL, "Cp1252", false); //HeaderFooter header = new HeaderFooter( new Phrase("This is a header without a page number", new Font(bf_symbol)), false); //header.setAlignment(Element.ALIGN_CENTER); //document.setHeader(header); document.open();
document.add(new Paragraph(" ESTUDIANTES INSCRITOS")); document.add(new Paragraph("Taller: " + talleres.getTaller())); document.add(new Paragraph("Expositor: " + talleres.getExpositor())); document.add(new Paragraph("Fecha: " + talleres.getFecha())); document.add(new Paragraph("Hora Inicio: " + talleres.getHorainicio() + " Hora Terminacion: " + talleres.getHoraterminacion())); document.add(new Paragraph("Lugar: " + talleres.getLugar())); document.add(new Paragraph("---------------------------------")); //document.add(new Paragraph(new java.util.Date().toString()));
PdfPTable table = new PdfPTable(4); PdfPCell cell = new PdfPCell(new Paragraph("inscritros")); cell.setColspan(4); table.addCell(cell); table.addCell("Nombre"); table.addCell("Cedula"); table.addCell("Telefono"); table.addCell("Email");
for (int i = 0; i < talleresEstudianteslist.size(); i++) { Estudiantes id = talleresEstudianteslist.get(i);// tseleccion[id.getPrioridad()]++; table.addCell(id.getNombre()); table.addCell(id.getCedula()); table.addCell(id.getTelefono()); table.addCell(id.getEmail()); // document.add(new Paragraph(id.getNombre() + " " + id.getCedula() + " " + id.getTelefono() + " " + id.getEmail()));
![Page 92: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/92.jpg)
} document.add(table); } catch (Exception ex) { JsfUtil.addErrorMessage("Error en generación de documento paraimprimir"); } document.close(); FacesContext context = FacesContext.getCurrentInstance(); Object response = context.getExternalContext().getResponse();
if (response instanceof HttpServletResponse) {
HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setContentType("application/pdf"); hsr.setHeader("Content-disposition", "attachment"); hsr.setContentLength(baos.size());
try { ServletOutputStream out = hsr.getOutputStream(); baos.writeTo(out); out.flush(); } catch (IOException ex) { JsfUtil.addErrorMessage("Error en generación de documento para imprimir"); }
//Tell JSF to skip the remaining phases of the lifecycle context.responseComplete(); } }
![Page 93: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/93.jpg)
Al darle clic en la opción imprimir podemos descargar el pdf
![Page 94: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/94.jpg)
CONTROL DE VERSIONES
![Page 95: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/95.jpg)
Control de VersionesControl de versiones nos permite alogar nuestro codigo en repositorios y tener multiples versiones del mismo, de forma que podamos acceder a versiones previas y trabajar en grandes equipos de desarrolladores ubicados en lugares distantes.
Utilizaremos google code como repositorio de nuestro codigo
1. Crear una cuenta en google code
1.1 Entrar a
http://code.google.com/hosting/
1.2 Dar clic en Create New Project
1.3 Colocamos los datos referentes al proyecto
1.4 Indicamos el sistema de control de versiones,
1.5 Hacer clic en Create Project
![Page 96: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/96.jpg)
1.6 Ahora damos clic en Source
1.7 Damos un clic en googlecode password, para que se nos genere un password
1.8 Cuando se agrega código al proyecto podemos consultarlos en Source ->Browse
Source->Changes permite ver los cambios realizados al código
![Page 97: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/97.jpg)
CREAR OTROS USUARIOS PARA EL PROYECTO
1. Entrar a
http://code.google.com/p/inscripcion
como administrador
2. En Administer, Project Members, agregar la dirección de correo electrónico.
3. Ahora el nuevo usuario, debe logearse en
http://code.google.com/p/inscripcion
3.1 Entra a Sources y consulta su password
Dar un clic en googlecode.com password
4.
5. Se muestra el password Generado
![Page 98: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/98.jpg)
ISSUES TRACKING
Manejo de errores
Seleccionamos Issues
Dar clic en new issue
selecionamos el tipo de issue
Dar clic en new issue
selecionamos el tipo de issue
Le asignamos más información
![Page 99: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/99.jpg)
![Page 100: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/100.jpg)
SUBVERSION
Pasos de Instalación
1. Instalar Subversión en Ubuntu
1.1 Ejecutar
sudo apt-get install subversion
1.2 Instalar subversion-tools
2. Probar si esta instalado
svn --version
3. Integración con NetBeans
3.1 Si el IDE no detecta el directorio donde esta instalado subversion le indicamos el siguiente path. /usr/bin/
Entramos a Miscellaneous->Versioning->Subversion
![Page 101: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/101.jpg)
Entramos a Miscellaneous->Versioning->Subversion
y colocamos como path /usr/bin/
También
podemos administrar las conexiones, dar click en Manage Connection Settings
Nos muestra las conexiones que podemos editar o eliminar
Nota:
Es importante marcar la casilla, cuando estamos creando el proyecto para permitir hacer commit de las librerías.
![Page 102: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/102.jpg)
Con esto nos aseguramos de que las librerias que usemos en nuestro proyecto serán incluidas en el commit.
![Page 103: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/103.jpg)
Gestionar el codigo desde NetBeans
Seleccionamos el proyecto y luego en el menu TEAM -Subversion ->Import into Repository
Nota:Utilizar una resolución de Pantalla de 1024x768 como recomendación.
Si nos muestra la pantalla, verifiquemos que hemos colocado /usr/bin/
Ahora se muestra la venta del repositorio
![Page 104: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/104.jpg)
Copiamos el URL hasta el trunk,
https://inscripcion.googlecode.com/svn/trunk/
escribimos el usuario y password.
Esperamos unos segundos
Reintentarlo varias veces, si hay problema de conexion
Escribimos un mensaje y presionamos el boton Siguiente
![Page 105: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/105.jpg)
Ahora seleccionamos la carpeta del repositorio e indicamos el mensaje
Presionar el botón siguiente
![Page 106: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/106.jpg)
Luego nos muestra todos los archivos que serán subidos al repositorio y presionamos el botón Finalizar.
En la barra se indica el progreso del commit
![Page 107: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/107.jpg)
Al terminar el Commit se muestra en la ventana de tareas de NetBeans.
Ahora vamos al repositorio en google -Sources->Browse->trunk y observamos el codigo de nuestro proyecto
![Page 108: Capitulo+Aplicacion+inscripcion](https://reader034.fdocuments.ec/reader034/viewer/2022042522/55cf9de9550346d033afcf7f/html5/thumbnails/108.jpg)
BAJAR EL CODIGO FUENTE EN OTRA PC
Abrir NetBeans y seleccionar Team->Subversion->>Checkout
En la ventana Extracción colocamos el url
https://inscripcion.googlecode.com/svn/trunk/
Ahora indicamos la versión del repositorio y las carpetas
cuando termina nos envía la descarga nos envía el mensaje para abrir el proyecto.