1
MANUAL DEL
PROGRAMADOR
2
Tabla de contenido
INTRODUCCIÓN .................................................................................................................. 4
1. PROGRAMACIÓN .................................................................................................... 5 2. LIBRERÍAS ............................................................................................................... 6
3. WEB PAGES ............................................................................................................ 7
3.1 crupclub ............................................................................................................... 7
3.2 Club……………………………………………………………………………………......9
3.3 Deportista………………………………………………………………………………..10
3.4 Eventos…………………………………………………………………………………..12
3.5 Index……………………………………………………………………………………...13
3.6 Persona ………………………………………………………………………………….13
3.7 Principal …………………………………………………………………………………16
3.8 Solicitud delegado …………………………………………………………………….16
3.9 Solicitud organizador ....................................................................................... 19
4. PAQUETE BEAN…………………………………………………………………………….22
4.1 Archivos bean.java…………………………………………………………………….23
4.2 Ciudad bean.java……………………………………………………………………….24
4.3 club Bean.java…………………………………………………………………………..25
4.4 Defensabean…………………………………………………………………………….26
4.5 departamentobean……………………………………………………………………..27
4.6 Deportista bean.java…………………………………………………………………..27
4.7Evento bean.java………………………………………………………………………..29
4.8 inscripción bean.java………………………………………………………………….30
4.9 juez bean.java…………………………………………………………………………...31
4.10 persona bean.java…………………………………………………………………….32
4.11 pirámides bean.java…………………………………………………………………..33
3
TABLA DE ILUSTRACIONES
Ilustración 1 CRUP CLUB ................................................................................................................9
Ilustración 2 CLUB ......................................................................................................................... 10
Ilustración 3 CLASE DEPORTISTA ............................................................................................ 11
Ilustración 4 CLASE EVENTOS ................................................................................................... 12
Ilustración 5 CLASE INDEX ......................................................................................................... 13
Ilustración 6 CLASE PERSONA .................................................................................................. 15
Ilustración 7 CLASE PRINCIPAL ................................................................................................. 16
Ilustración 8 CLASE SOLICITUD DELEGADO ......................................................................... 18
Ilustración 9 CLASE SOLICITUD ORGANIZADOR .................................................................. 21
Ilustración 10 CLASE ARCHIVO BEAN ..................................................................................... 23
Ilustración 11 CLASE CIUDAD BEAN ........................................................................................ 24
Ilustración 12 CLASE CLUB ......................................................................................................... 25
Ilustración 13 CLASE DEFENSA BEAN ..................................................................................... 26
Ilustración 14 CLASE DEPARTAMENTO BEAN ...................................................................... 27
Ilustración 15 CLASE DEPORTISTA BEAN .............................................................................. 28
Ilustración 16 CLASE EVENTO BEAN ....................................................................................... 29
Ilustración 17CLASE INSCRIPCION BEAN ............................................................................ 30
Ilustración 18 CLASE JUEZ BEAN.............................................................................................. 31
Ilustración 19 CLASE PERSONA BEAN .................................................................................... 32
Ilustración 20 CLASE PIRAMIDES BEAN .................................................................................. 33
4
Introducción
El propósito de este manual del programador, es dar a conocer al lector los códigos
fuentes del programa realizado. Para ello tratamos de la forma más concisa de
explicar cada uno de los códigos, junto con la programación utilizada en el desarrollo
del software, esto con el fin de que el usuario pueda modificar a gusto alguno de los
valores y parámetros de las funciones que se encuentran expuestas en la
programación de sistema SOC-HKD (sistema de información para la inscripción y
clasificación de participantes en campeonatos de hapkido).
5
1. PROGRAMACIÓN
Este proyecto está dividido en cuatro partes importantes para el funcionamiento del
sistema de información, tiene cuatro paquetes que funcionan de la siguiente manera:
Paquete bean: Son los que hacen la conexión entre la vista y la base de
datos.
Paquete converter: Ayudar hacer conversiones para mostrar en tablas.
Paquete dao: Es la conexión de la base de datos.
Paquete model: Son las clases modelo de la base de datos.
Estos paquetes tienen consigo una serie de clases que le dan el funcionamiento al
sistema se explicara lo más detallado posible las clases más importantes.
6
2. LIBRERIAS
En total fueron 8 librerías las que se utilizaron para el desarrollo de este sistema las
cuales son:
Com.mysql.jdbc_5.1.5.jar: esta es la encargada de hacer la conexión de
base de datos.
Primefaces- 5.0.jar: Esta librería es la encargada de traer el framework
Primefaces.
Commons-fileupload- 1.3.1.jar: Esta es la encargada de guardar los
archivos grandes.
Commons –io- 2.5.jar: Esta es la encargada de guardar los archivos
grandes.
Omnifaces-1.8.3.jar: Omnifaces es una biblioteca de utilidades para jsf 2,
que se centra en los servicios públicos que facilitan las tareas cotidianas con
la API JSF estándar. Omnifaces es una respuesta a los problemas
recurrentes con frecuencia encontrados durante las edades de desarrollo de
jsf profesional del Development equipo ya partir de preguntas que se hacen
sobre el desbordamiento de pila
Atmosphere-rutime-2.1.5.jar: El Marco atmósfera contiene componentes de
cliente y servidor para crear aplicaciones web asincrónicos. La mayoría de los
marcos populares están apoyando ya sea Ambiente o compatible de forma
nativa por el marco. El Marco Ambiente soporta todos los navegadores y
servidores .
Commons-lang 3-3.3.2.jar: Apache commons Lang, es un conjunto de
clases de utilidad de java para las clases que se encuentran en la jerarquía de
java.lang, o se consideran tan estándar como para justificar la existencia del
java.lang.
Slf4j-api-1.6.1.jar: módulo slf4j, los artefactos javadoc correspondientes se
pueden descargar desde el repositorio central de Maven como javadoc
.jararchivos.
7
3. WEB PAGES
Este paquete contiene las vistas o interfaces del sistema de información, este
paquete maneja 9 clases XHTML las cuales son.
3.1 crupclub: En esta clase esta guardada la vista del crup club.
<Body> <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> <ui:define name="content"> <f:event type="preRenderView" listener="#{clubBean.listar('F')}"/> <h:form id ="frm"> <p:commandButton value="Nuevo" actionListener="#{clubBean.setAccion('Registrar')}" action="#{clubBean.limpiar()}" oncomplete="PF('wdIgDatos').show();" update=":dlgDatos" /> <p:dataTable id="data" value="#{clubBean.lstClub}" var="club"> <p:column headerText="Nit"> <p:outputLabel value="#{club.nit}"/> </p:column> <p:column headerText="Nombre"> <p:outputLabel value="#{club.nombre}"/> </p:column> <p:column headerText="Dirección"> <p:outputLabel value="#{club.direccion}"/> </p:column> <p:column headerText="Barrio"> <p:outputLabel value="#{club.barrio}"/> </p:column> <p:column headerText="Telefono"> <p:outputLabel value="#{club.telefono}"/> </p:column> <p:column headerText="Modificar"> <h:outputLink> <p:commandLink value="Modificar" actionListener="#{clubBean.leerID(club)}" oncomplete="PF('wdIgDatos').show();" update=":dlgDatos" /> </h:outputLink> </p:column> <p:column headerText="Eliminar"> <p:commandLink value="Eliminar" actionListener="#{clubBean.eliminar(club)}" update="data"/> </p:column>
8
</p:dataTable> </h:form> <p:dialog header="Datos" widgetVar="wdIgDatos" id="dlgDatos"> <h:form> <p:messages id="msgs" /> <h:panelGrid columns="3" cellpadding="5"> <p:outputLabel for="Nit" value="Nit:" /> <p:inputText id="Nit" value="#{clubBean.club.nit}" maxlength="15" required="true" > <f:validateLength minimum="2" /> <p:ajax update="msgNit" event="keyup" /> </p:inputText> <p:message for="Nit" id="msgNit" display="icon" /> <p:outputLabel for="Nombre" value="Nombre:" /> <p:inputText id="Nombre" value="#{clubBean.club.nombre}" required="true"> <f:validateLength minimum="2" /> <p:ajax update="msgNombre" event="keyup" /> </p:inputText> <p:message for="Nombre" id="msgNombre" display="icon" /> <p:outputLabel for="Direccion" value="Dirección:" /> <p:inputText id="Direccion" value="#{clubBean.club.direccion}" required="true"> <f:validateLength minimum="2" /> <p:ajax update="msgDireccion" event="keyup" /> </p:inputText> <p:message for="Direccion" id="msgDireccion" display="icon" /> <p:outputLabel for="Barrio" value="Barrio:" /> <p:inputText id="Barrio" value="#{clubBean.club.barrio}" required="true"> <f:validateLength minimum="2" /> <p:ajax update="msgBarrio" event="keyup" /> </p:inputText> <p:message for="Barrio" id="msgBarrio" display="icon" /> <p:outputLabel for="telefono" value="Telefono:" /> <p:inputText id="telefono" value="#{clubBean.club.telefono}" required="true" maxlength="10"> <f:validateLength minimum="7" /> <p:ajax update="msgtelefono" event="keyup" /> </p:inputText> <p:message for="telefono" id="msgtelefono" display="icon" /> </h:panelGrid> <p:commandButton value="#{clubBean.accion}" actionListener="#{clubBean.operar()}" oncomplete="PF('wdIgDatos').hide();"
9
update=":frm:data"/> <p:commandButton value="Cancelar" immediate="true" actionListener="#{clubBean.limpiar()}" oncomplete="PF('wdIgDatos').hide();"/> </h:form> </p:dialog> </ui:define> </ui:composition> </body>
Ilustración 1 CRUP CLUB
3.2 Club: En esta clase esta guardada la vista del club donde se manejara la las
inserciones de datos de los clubes.
<body> <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> <ui:define name="content"> <f:event type="preRenderView" listener="#{clubBean.listar('F')}"/> <h2 align="center">Clubes Inscritos</h2> <p:accordionPanel value="#{clubBean.lstClub}" var="club"> <p:tab title="Club - #{club.nombre}"> <p:panelGrid columns="2" > <f:facet name="header"> <h:outputLabel value="Imagen del Club..." /> </f:facet> <p:outputLabel value="Nit: "/> <p:outputLabel value="#{club.nit}"/> <p:outputLabel value="Nombre: "/> <p:outputLabel value="#{club.nombre}"/> <p:outputLabel value="Dirección: "/> <p:outputLabel value="#{club.direccion}"/> <p:outputLabel value="Barrio: "/> <p:outputLabel value="#{club.barrio}"/> <p:outputLabel value="Telefono: "/> <p:outputLabel value="#{club.telefono}"/> </p:panelGrid>
10
</p:tab> </p:accordionPanel> </ui:define> </ui:composition> </body>
Ilustración 2 CLUB
3.3 Deportista: En esta clase esta guardada la vista del deportista donde se
manejara toda la información como inserción, actualización y eliminación de
deportistas.
<body> <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> <ui:define name="content"> <f:event type="preRenderView" listener="#{clubBean.listar('F')}"/> <f:event type="preRenderView" listener="#{deportistaBean.listar('F')}"/> <h2 align="center">Filtro de Deportistas Inscritos</h2> <h:form id="datos"> <p:dataTable id="data" value="#{deportistaBean.lstDeportista}" var="deportista" emptyMessage="No se encontro ningun registro !!" widgetVar="depoTable" filteredValue="#{deportistaBean.filterDeportista}"> <p:column headerText="Nombre" filterBy="#{deportista.nombre}" filterMatchMode="contains"> <p:outputLabel value="#{deportista.nombre}"/> </p:column> <p:column headerText="Apellido" filterBy="#{deportista.apellido1}" filterMatchMode="contains"> <p:outputLabel value="#{deportista.apellido1}"/> </p:column> <p:column headerText="S. Apellido" filterBy="#{deportista.apellido2}" filterMatchMode="contains"> <p:outputLabel value="#{deportista.apellido2}"/> </p:column> <p:column headerText="Genero" filterBy="#{deportista.genero}" filterMatchMode="equals"> <f:facet name="filter"> <p:selectOneButton onchange="PF('depoTable').filter()"> <f:selectItem itemLabel="M/F" itemValue="" /> <f:selectItem itemLabel="M" itemValue="G0002" /> <f:selectItem itemLabel="F" itemValue="G0001" />
11
</p:selectOneButton> </f:facet> <p:outputLabel value="#{deportista.genero }"> <f:converter converterId="generoConverter"/> </p:outputLabel> </p:column> <p:column headerText="Fecha Nacimiento"> <p:outputLabel value="#{deportista.f_naci}"/> </p:column> <p:column headerText="Club" filterBy="#{deportista.club.nit}"> <f:facet name="filter"> <p:selectOneMenu id="Club" onchange="PF('depoTable').filter()" converter="omnifaces.SelectItemsConverter"> <f:selectItem noSelectionOption="true" itemLabel="Seleccione uno" itemValue=""/> <f:selectItems value="#{clubBean.lstClub}" var="club" itemLabel="#{club.nombre}" itemValue="#{club.nit}"/> </p:selectOneMenu> </f:facet> <p:outputLabel value="#{deportista.club.nombre}"/> </p:column> <p:column headerText="Grado" filterBy="#{deportista.grado}"> <f:facet name="filter"> <p:selectOneMenu id="Grado" onchange="PF('depoTable').filter()"> <f:selectItem noSelectionOption="true" itemLabel="Seleccione uno" itemValue=""/> <f:selectItem itemLabel="Principiante" itemValue="Gr001"/> <f:selectItem itemLabel="Intermedio" itemValue="Gr002"/> <f:selectItem itemLabel="Avanzado" itemValue="Gr003"/> <f:selectItem itemLabel="Inter-Avanzado" itemValue="Gr004"/> </p:selectOneMenu> </f:facet> <p:outputLabel value="#{deportista.grado}"> <f:converter converterId="gradoConverter"/> </p:outputLabel> </p:column> </p:dataTable> </h:form> </ui:define> </ui:composition> </body>
Ilustración 3 CLASE DEPORTISTA
12
3.4 Eventos: En esta clase se manejara toda la información sobre las vistas de los
eventos como lo es la inserción, modificación y eliminación.
<body> <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> <ui:define name="content"> <f:event type="preRenderView" listener="#{eventoBean.listar('F')}"/> <h2 align="center">Eventos registrados</h2> <p:accordionPanel id="dataEvent" value="#{eventoBean.lstEvento}" var="even" > <p:tab title="#{even.nombre}, Organizador: #{even.usuario.nombre} #{even.usuario.apellido1}"> <h:panelGrid columns="2" cellpadding="10"> <h:outputText value="imagen Campeonato...." /> <h:panelGrid columns="2" style="width:100%" > <h3>Fecha:</h3> <h:outputText value="#{even.fecha_Ini}, #{even.fecha_Fin}" /> <h:outputLabel><h3>Lugar :</h3></h:outputLabel> <h:outputText value="#{even.lugar}, #{even.ciudad.descripcion}, #{even.ciudad.departamento.descripcion}"/> <h:outputLabel ><h3>Direccion :</h3></h:outputLabel> <h:outputText value="#{even.direccion}"/> <h:outputLabel> <h1>Datos de contacto</h1> </h:outputLabel> <h:column/> <h:outputLabel ><h3>Telefono :</h3></h:outputLabel> <h:outputText value="#{even.usuario.telefono}"/> <h:outputLabel ><h3>Correo :</h3></h:outputLabel> <h:outputText value="#{even.usuario.correo}"/> </h:panelGrid> </h:panelGrid> </p:tab> </p:accordionPanel> </ui:define> </ui:composition> </body>
Ilustración 4 CLASE EVENTOS
13
3.5 Index: Esta es la clase donde corre la plantilla índex.
1< h:body> 2 <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> 3 4 <ui:define name="content"> 5 <h:form> 6 <p: commandLink value="Ir" action="principal? Faces-redirect=true"/> 7 </h:form> 8 </ui:define> 9 10 </ui:composition> 11 <!-- <h:form> 12 <p:commandLink value="Ir" action="principal?faces-redirect=true"/> 13 </h:form>--> 14 15 16 </h:body>
Ilustración 5 CLASE INDEX
3.6 Persona: En esta clase esta guardada la vista de persona donde se manejara
toda la información como inserción, actualización y eliminación de este.
<body> <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> <ui:define name="content"> <f:event type="preRenderView" listener="#{personaBean.listar('F')}"/> <h:form id ="frm"> <p:commandButton value="Nuevo" actionListener="#{personaBean.setAccion('Registrar')}" action="#{personaBean.limpiar()}" oncomplete="PF('wdIgDatos').show();" update=":dlgDatos" /> <p:dataTable id="data" value="#{personaBean.lstPersona}" var="persona"> <p:column headerText="Identificación"> <p:outputLabel value="#{persona.id}"/> </p:column> <p:column headerText="Nombre"> <p:outputLabel value="#{persona.nombre}"/> </p:column> <p:column headerText="Apellido"> <p:outputLabel value="#{persona.apellido1}"/> </p:column> <p:column headerText="S. Apellido"> <p:outputLabel value="#{persona.apellido2}"/> </p:column> <p:column headerText="Genero"> <p:outputLabel value="#{persona.genero}">
14
<f:converter converterId="generoConverter"/> </p:outputLabel> </p:column> <p:column headerText="Fecha Nacimiento"> <p:outputLabel value="#{persona.f_naci}"/> </p:column> <p:column headerText="Telefono"> <p:outputLabel value="#{persona.telefono}"/> </p:column> <p:column headerText="Modificar"> <h:outputLink> <p:commandLink value="Modificar" actionListener="#{personaBean.leerID(persona)}" oncomplete="PF('wdIgDatos').show();" update=":dlgDatos" /> </h:outputLink> </p:column> <p:column headerText="Eliminar"> <p:commandLink value="Eliminar" actionListener="#{personaBean.eliminar(persona)}" update="data"/> </p:column> </p:dataTable> </h:form> <p:dialog header="Datos" widgetVar="wdIgDatos" id="dlgDatos"> <h:form> <p:messages id="msgs" /> <p:inputText value="#{personaBean.id}" maxlength="12"/> <p:commandButton value="Verificar" actionListener="#{personaBean.verificar()}" update="person"/> <p:commandButton value="Cancelar" immediate="true" actionListener="#{personaBean.limpiar()}" update="person"/> <h:panelGrid id="person" columns="3" cellpadding="5"> <p:outputLabel for="Id" value="Identificación:" /> <p:inputText id="Id" value="#{personaBean.persona.id}" maxlength="11" required="true" disabled="#{personaBean.ex}"> <f:validateLength minimum="2" /> <p:ajax update="msgId" event="keyup" /> </p:inputText> <p:message for="Id" id="msgId" display="icon" /> <p:outputLabel for="Nombre" value="Nombre:" /> <p:inputText id="Nombre" value="#{personaBean.persona.nombre}" label="Firstname" required="true" disabled="#{personaBean.ex}"> <f:validateLength minimum="2" /> <p:ajax update="msgNombre" event="keyup" /> </p:inputText> <p:message for="Nombre" id="msgNombre" display="icon" /> <p:outputLabel for="Apellido1" value="Primer Apellido:" /> <p:inputText id="Apellido1" value="#{personaBean.persona.apellido1}" label="Lastname" required="true" disabled="#{personaBean.ex}"> <f:validateLength minimum="2" /> <p:ajax update="msgApellido1" event="keyup" /> </p:inputText> <p:message for="Apellido1" id="msgApellido1" display="icon" />
15
<p:outputLabel for="Apellido2" value="Segundo Apellido:" /> <p:inputText id="Apellido2" value="#{personaBean.persona.apellido2}" disabled="#{personaBean.ex}"> <f:validateLength /> <p:ajax update="msgApellido2" event="keyup" /> </p:inputText> <p:message for="Apellido2" id="msgApellido2" display="icon" /> <p:outputLabel for="Genero" value="Genero:" /> <p:selectOneMenu id="Genero" value="#{personaBean.persona.genero}" disabled="#{personaBean.ex}"> <f:selectItem noSelectionOption="true" itemLabel="Seleccione uno" itemValue=""/> <f:selectItem itemLabel="MASCULINO" itemValue="G0002"/> <f:selectItem itemLabel="FEMENINO" itemValue="G0001"/> <p:ajax update="msgGenero" event="keyup" /> </p:selectOneMenu> <p:message for="Genero" id="msgGenero" display="icon" /> <p:outputLabel for="fecha" value="Fecha Nacimiento:" /> <p:inputMask id="fecha" value="#{personaBean.persona.f_naci}" required="true" mask="9999-99-99" disabled="#{personaBean.ex}"> <f:validateLength minimum="2" /> <p:ajax update="msgfecha" event="keyup" /> </p:inputMask> <p:message for="fecha" id="msgfecha" display="icon" /> <p:outputLabel for="telefono" value="Telefono:" /> <p:inputText id="telefono" value="#{personaBean.persona.telefono}" required="true" maxlength="10" disabled="#{personaBean.ex}"> <f:validateLength minimum="7" /> <p:ajax update="msgtelefono" event="keyup" /> </p:inputText> <p:message for="telefono" id="msgtelefono" display="icon" /> </h:panelGrid> <p:commandButton value="#{personaBean.accion}" action Listener="#{personaBean.operar()}" oncomplete="PF('wdIgDatos').hide();" update=":frm:data"/> <p:commandButton value="Cancelar" immediate="true" actionListener="#{personaBean.limpiar()}" oncomplete="PF('wdIgDatos').hide();"/> </h:form> </p:dialog> </ui:define> </ui:composition> </body>
Ilustración 6 CLASE PERSONA
16
3.7 Principal: En esta clase esta la plantilla principal del sistema.
<body> <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> <ui:define name="content"> <h:panelGrid columns="2" cellspacing="20"> <p:graphicImage value="/resources/images/hapkido.jpg"/> <h:panelGrid columns="1" cellspacing="20"> <p style="font-family: fantasy, serif;font-size: 20px;">Hapkido</p> <p:outputLabel value="El hapkido es un arte marcial coreano moderno adaptado hacia la defensa personal militar y civil. El término se puede interpretar como «el camino de la unión con la energía universal»."/> <p:outputLabel value="Esta disciplina se puede describir como un arte híbrido, físico y energético, donde la fuerza física, por si misma no es un requisito primordial, y donde mayor importancia tiene el movimiento del propio cuerpo (cadenas cinéticas), la respiración, la flexibilidad, la sensibilidad, y la velocidad de acción al efectuar las diferentes técnicas, aunque su entrenamiento es muy vigoroso y exigente. Con el hapkido se busca la formación del individuo como persona dispuesta a la defensa de si mismo, de su familia y de su país."/> </h:panelGrid> </h:panelGrid> </ui:define> </ui:composition> </body>
Ilustración 7 CLASE PRINCIPAL
3.8 Solicitud delegado: En esta clase esta guardada la vista del delegado donde se
manejara toda la información como inserción, actualización y eliminación de este.
<body> <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> <ui:define name="content"> <f:event type="preRenderView" listener="#{solicitudBean.asignarTipo('D','F')}"/> <h2 align="center">Solicitud Usuario...Delegado</h2> <div align="center"> <h:form id="form" > <p:growl id="msgmsg" autoUpdate="true" showDetail="true"/> <p:panelGrid id="panel1" > <f:facet name="header"> <p:row> <p:column colspan="1"><h2 align="center">Datos Delegado</h2></p:column> <p:column colspan="1"><h2 align="center">Datos del Club</h2></p:column> </p:row> <p:row> <p:column colspan="1" > <h:panelGrid columns="3" cellpadding="5">
17
<p:outputLabel for="Id" value="Identificación (T.I. / C.C.):" /> <p:inputText id="Id" value="#{solicitudBean.usuario.id}" maxlength="11" required="true" > <p:ajax update="msgId" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Id" id="msgId" display="icon" /> <p:outputLabel for="Nombre" value="Nombre:" /> <p:inputText id="Nombre" value="#{solicitudBean.usuario.nombre}" label="Firstname" required="true"> <p:ajax update="msgNombre" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Nombre" id="msgNombre" display="icon" /> <p:outputLabel for="Apellido1" value="Primer Apellido:" /> <p:inputText id="Apellido1" value="#{solicitudBean.usuario.apellido1}" label="Lastname" required="true"> <p:ajax update="msgApellido1" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Apellido1" id="msgApellido1" display="icon" /> <p:outputLabel for="Apellido2" value="Segundo Apellido:" /> <p:inputText id="Apellido2" value="#{solicitudBean.usuario.apellido2}" > <p:ajax update="msgApellido2" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Apellido2" id="msgApellido2" display="icon" /> <p:outputLabel for="Genero" value="Genero:" /> <p:selectOneMenu id="Genero" value="#{solicitudBean.usuario.genero}" required="true"> <f:selectItem noSelectionOption="true" itemLabel="Seleccione uno" itemValue=""/> <f:selectItem itemLabel="MASCULINO" itemValue="G0002"/> <f:selectItem itemLabel="FEMENINO" itemValue="G0001"/> <p:ajax update="msgGenero" event="keyup" ignoreAutoUpdate="true"/> </p:selectOneMenu> <p:message for="Genero" id="msgGenero" display="icon" /> <p:outputLabel for="fecha" value="Fecha Nacimiento:" /> <p:inputMask id="fecha" value="#{solicitudBean.usuario.f_naci}" required="true" mask="9999-99-99"> <p:ajax update="msgfecha" event="keyup" ignoreAutoUpdate="true"/> </p:inputMask> <p:message for="fecha" id="msgfecha" display="icon" /> <p:outputLabel for="telefono" value="Telefono Personal:" /> <p:inputText id="telefono" value="#{solicitudBean.usuario.telefono}" required="true" maxlength="10"> <f:validateLength minimum="7" /> <p:ajax update="msgtelefono" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="telefono" id="msgtelefono" display="icon" /> <p:outputLabel for="Correo" value="Correo:" /> <p:inputText id="Correo" value="#{solicitudBean.usuario.correo}" required="true" requiredMessage="Por favor, ingrese su correo electronico" validatorMessage="Esto no es un correo electronico"> <f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-
18
Za-z0-9]+)*(\.[A-Za-z]{2,})$" /> <p:ajax update="msgCorreo" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Correo" id="msgCorreo" display="icon" /> <h:outputLabel for="txtUsuario" value="Usuario: *"/> <p:inputText id = "txtUsuario" value= "#{solicitudBean.usuario.usuario}" required= "true" placeholder="Usuario"> <p:ajax update="msgUsu" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="txtUsuario" id="msgUsu" display="icon" /> <h:outputLabel value="Nota: " style="color: seagreen"/> <h:outputLabel value="La contraseña puede contener " style="color: seagreen"/> <p:dataTable id="solicitud" value="#{solicitudBean.usuario}" var="usuari" emptyMessage="No se encontro ninguna Usuario !!"> <p:column headerText="Usuario"> <p:outputLabel value="#{usuari.usuario}"/> </p:column> <p:column headerText="Tipo"> <p:outputLabel value="#{usuari.tipo}"> <f:converter converterId="tipoConverter"/> </p:outputLabel> </p:column> <p:column headerText="Estado"> <p:outputLabel value="#{usuari.estado}"/> </p:column> </p:dataTable> </h:form> </p:dialog> </ui:define> </ui:composition> </body>
Ilustración 8 CLASE SOLICITUD DELEGADO
19
3.9 Solicitud organizador: En esta clase esta guardada la vista del organizador
donde se manejara toda la información como inserción, actualización y
eliminación de organizador.
<body> <ui:composition template="./WEB-INF/templates/plantilla.xhtml"> <ui:define name="content"> <f:event type="preRenderView" listener="#{solicitudBean.asignarTipo('O','F')}"/> <h2 align="center">Solicitud Usuario...Organizador</h2> <div align="center"> <p:growl id="msgmsg" autoUpdate="true" showDetail="true"/> <h:form id="Organi" > <p:panelGrid id="panel1" > <f:facet name="header"> <p:row> <p:column colspan="1"><h2 align="center">Datos Organizador</h2></p:column> </p:row> <p:row> <p:column colspan="2" style="text-align: center"> <p:inputText value="#{solicitudBean.id}" maxlength="12"/> <p:commandButton value="Verificar" actionListener="#{solicitudBean.verificarExistencia()}" update="Organi"/> <p:commandButton value="Cancelar" immediate="true" actionListener="#{solicitudBean.limpiar()}" update=":Organi"/> <h:outputText id="rs" value="#{solicitudBean.s}" /> <h:panelGrid id="panel" columns="3" cellpadding="5"> <p:outputLabel for="Id" value="Identificación (T.I. / C.C.):" /> <p:inputText id="Id" value="#{solicitudBean.usuario.id}" maxlength="11" required="true" disabled="#{solicitudBean.ex}"> <f:validateLength minimum="2" /> <p:ajax update="msgId" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Id" id="msgId" display="icon" /> <p:outputLabel for="Nombre" value="Nombre:" /> <p:inputText id="Nombre" value="#{solicitudBean.usuario.nombre}" label="Firstname" required="true" disabled="#{solicitudBean.ex}"> <f:validateLength minimum="2" /> <p:ajax update="msgNombre" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Nombre" id="msgNombre" display="icon" /> <p:outputLabel for="Apellido1" value="Primer Apellido:" /> <p:inputText id="Apellido1" value="#{solicitudBean.usuario.apellido1}" label="Lastname" required="true" disabled="#{solicitudBean.ex}"> <f:validateLength minimum="2" /> <p:ajax update="msgApellido1" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Apellido1" id="msgApellido1" display="icon" />
20
<p:outputLabel for="Apellido2" value="Segundo Apellido:" /> <p:inputText id="Apellido2" value="#{solicitudBean.usuario.apellido2}" disabled="#{solicitudBean.ex}"> <f:validateLength /> <p:ajax update="msgApellido2" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Apellido2" id="msgApellido2" display="icon" /> <p:outputLabel for="Genero" value="Genero:" /> <p:selectOneMenu id="Genero" value="#{solicitudBean.usuario.genero}" disabled="#{solicitudBean.ex}"> <f:selectItem noSelectionOption="true" itemLabel="Seleccione uno" itemValue=""/> <f:selectItem itemLabel="MASCULINO" itemValue="G0002"/> <f:selectItem itemLabel="FEMENINO" itemValue="G0001"/> <p:ajax update="msgGenero" event="keyup" ignoreAutoUpdate="true"/> </p:selectOneMenu> <p:message for="Genero" id="msgGenero" display="icon" /> <p:outputLabel for="fecha" value="Fecha Nacimiento:" /> <p:inputMask id="fecha" value="#{solicitudBean.usuario.f_naci}" required="true" mask="9999-99-99" disabled="#{solicitudBean.ex}"> <f:validateLength minimum="2" /> <p:ajax update="msgfecha" event="keyup" ignoreAutoUpdate="true"/> </p:inputMask> <p:message for="fecha" id="msgfecha" display="icon" /> <p:outputLabel for="telefono" value="Telefono:" /> <p:inputText id="telefono" value="#{solicitudBean.usuario.telefono}" required="true" maxlength="10" disabled="#{solicitudBean.ex}"> <f:validateLength minimum="7" /> <p:ajax update="msgtelefono" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="telefono" id="msgtelefono" display="icon" /> </h:panelGrid> <h:panelGrid id="panelu" columns="3" cellpadding="5"> <p:outputLabel for="Correo" value="Correo:" /> <p:inputText id="Correo" value="#{solicitudBean.usuario.correo}" required="true" disabled="#{solicitudBean.ex2}" requiredMessage="Por favor, ingrese su correo electronico" validatorMessage="Esto no es un correo electronico"> <f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" /> <p:ajax update="msgCorreo" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="Correo" id="msgCorreo" display="icon" /> <h:outputLabel for="txtUsuario" value="Usuario: *"/> <p:inputText id = "txtUsuario" value= "#{solicitudBean.usuario.usuario}" required= "true" placeholder="Usuario" disabled="#{solicitudBean.ex2}"> <p:ajax update="msgUsu" event="keyup" ignoreAutoUpdate="true"/> </p:inputText> <p:message for="txtUsuario" id="msgUsu" display="icon" />
21
<h:outputLabel value="Nota: " style="color: seagreen"/> <h:outputLabel value="La contraseña puede contener " style="color: seagreen"/> <h:outputLabel value="Numeros, Letras y signos puntuacion." style="color: seagreen"/> <h:outputLabel for="pwd1" value="Contraseña: *" /> <p:password id="pwd1" value="#{solicitudBean.usuario.contrasena}" match="pwd2" label="Contraseña" required="true" requiredMessage="Escriba la contraseña!!" placeholder="Contraseña" disabled="#{solicitudBean.ex2}"> <p:ajax update="msgCon" event="keyup" ignoreAutoUpdate="true"/> </p:password> <p:message for="pwd1" id="msgCon" display="icon" /> <h:outputLabel for="pwd2" value="Repita la contraseña: " /> <p:password id="pwd2" value="#{solicitudBean.usuario.contrasena}" label="RepiteContraseña" required="true" placeholder="Repita Contraseña" validatorMessage="Las contraseñas no coinciden!!..." disabled="#{solicitudBean.ex2}"> <p:ajax update="msgCon2" event="keyup" ignoreAutoUpdate="true"/> </p:password> <p:message for="pwd2" id="msgCon2" display="icon" /> </h:panelGrid> <p:column/> <p:commandButton value="Solicitar" actionListener="#{solicitudBean.registrar()}" update="Organi"/> <p:commandButton value="Cancelar" actionListener="#{solicitudBean.limpiar()}" </div> <p:dataTable id="solicitud" value="#{solicitudBean.usuario}" var="usuari" emptyMessage="No se encontro ninguna Usuario !!"> <p:column headerText="Usuario"> <p:outputLabel value="#{usuari.usuario}"/> </p:column> <p:column headerText="Tipo"> <p:outputLabel value="#{usuari.tipo}"> <f:converter converterId="tipoConverter"/> </p:outputLabel> </p:column> <p:column headerText="Estado"> <p:outputLabel value="#{usuari.estado}"/> </p:column> </p:dataTable> </ui:composition> </body>
Ilustración 9 CLASE SOLICITUD ORGANIZADOR
22
4. PAQUETE BEAN.
Bean es un componente hecho en software que se puede reutilizar y que puede ser manipulado visualmente por una herramienta de programación en lenguaje Java.
Para ello, se define un interfaz para el momento del diseño que permite a la herramienta de programación o IDE, interrogar al componente y conocer las propiedades que define y los tipos de sucesos que puede generar en respuesta a diversas acciones.
Aunque los beans individuales pueden variar ampliamente en funcionalidad desde los más simples a los más complejos, todos ellos comparten las siguientes características:
Introspection: Permite analizar a la herramienta de programación o IDE como trabaja el bean
Customization: El programador puede alterar la apariencia y la conducta del bean.
Events: Informa al IDE de los sucesos que puede generar en respuesta a las acciones del usuario o del sistema, y también los sucesos que puede manejar.
Properties: Permite cambiar los valores de las propiedades del bean para personalizarlo (customization).
Persistence: Se puede guardar el estado de los beans que han sido personalizados por el programador, cambiando los valores de sus propiedades.
Este paquete consta de unas clases las cuales serán explicadas de la manera más resumida.
23
4.1 Archivos bean.java.
En esta clase guardaremos los archivos o manuales de usuario que se utilizaran
para que los usuarios tengan facilidad y puedan entender el sistema de informacion.
public void cargar() throws Exception{ ArchivoDAO dao; try{ dao = new ArchivoDAO(); if(file != null){ dao.archivo(file); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"¡¡Archivo Subido!!",null)); }else{ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Debe seleccionar un archivo!!",null)); } } catch (Exception e) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error!!",null)); throw e; } } public void descargar(String s) throws Exception { ArchivoDAO dao; try { dao = new ArchivoDAO(); this.dou = dao.leer(s); FacesMessage msg = new FacesMessage("Descarga exitosa!! ", null); FacesContext.getCurrentInstance().addMessage(null, msg); } catch (Exception e) { throw e ; } }
Ilustración 10 CLASE ARCHIVO BEAN
24
4.2 Ciudad bean.java
En esta clase se manejara los registros modificación y eliminación de las ciudades.
public void registrar() throws Exception{ CiudadDAO dao; try { dao= new CiudadDAO(); ciudad.setDepartamento(departamento); dao.registrar(ciudad); this.listar("V"); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"La ciudad fue ingresada!!",null)); this.setReg(true); this.limpiar(); } catch (Exception e) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error!!",null)); throw e; } }
public void eliminar(Ciudad ciu) throws Exception{ CiudadDAO dao; try{ dao= new CiudadDAO(); dao.eliminar(ciu); this.listar("V"); }catch(Exception e){ throw e; } }
Ilustración 11 CLASE CIUDAD BEAN
25
4.3 club Bean.java:
En esta clase se manejara los registros modificación y eliminación de los clubes.
public void registrar () throws Exception{
ClubDAO dao;
try {
dao= new ClubDAO();
dao.registrar(club);
this.listar("V");
//this.save();
} catch (Exception e) {
throw e;
}
}
public void modificar() throws Exception{
ClubDAO dao;
try{
dao = new ClubDAO();
dao.modificar(club);
this.listar("V");
this.ha = true;
}catch(Exception e){
throw e;
}
}
public void eliminar(Club clu) throws Exception{
ClubDAO dao;
try{
dao= new ClubDAO();
dao.eliminar(clu);
this.listar("V");
}catch(Exception e){
throw e;
}
}
Ilustración 12 CLASE CLUB
26
4.4 Defensabean
En esta clase mostraremos la clasificación y categorías específicas que se
manejaran en el sistema hay que tener en cuenta que hay más métodos pero en
esta ocasión describiremos los más importantes de este.
public void clasificar() throws Exception{
Podium;
try {
for(int i=0; i < this.lstpodiumDef.size(); i++){
if(!"Sin Premiar".equals(lstpodiumDef.get(i).getEstado())){
podium = new Podium();
podium = lstpodiumDef.get(i);
this.lstpodiumDefP.add(podium);
lstpodiumDef.remove(i);
}
}
} catch (Exception e) {
throw e;
}
}
private void mostrarCategoria(String codigo) throws Exception {
try {
DefensaDAO dao = new DefensaDAO();
if(eventoaux.getCodigo() == 0){
defensa = dao.listarCategoria(null, juezLog.getEvento(), codigo);
}else{
defensa = dao.listarCategoria(eventoaux, null, codigo);
}
} catch (Exception e) {
throw e;
}
}
Ilustración 13 CLASE DEFENSA BEAN
27
4.5 departamentobean
En esta clase mostraremos el método eliminación que es el encargado de limpiar.
public void eliminar(Departamento dep) throws Exception{ DepartamentoDAO dao; try{ dao= new DepartamentoDAO(); dao.eliminar(dep); this.listar("V"); }catch(Exception e){ throw e; } } Ilustración 14 CLASE DEPARTAMENTO BEAN
4.6 Deportista bean.java
En esta clase se manejara los registros modificación y eliminación de los deportistas.
private void modificar() throws Exception{ DeportistaDAO dao; Fechas calcular; String categoria=""; try{ dao= new DeportistaDAO(); calcular = new Fechas(); categoria = calcular.categoria(deportista.getF_naci()); if( categoria.equals("Junior") || categoria.equals("Juvenil") || categoria.equals("Senior") || categoria.equals("Master") || categoria.equals("Master1") || categoria.equals("Master2") ){ if(deportista.getGrado().equals("Gr002") || deportista.getGrado().equals("Gr003")){ deportista.setGrado("Gr004"); } } dao.modificar(deportista); this.listar("V");
28
}catch(Exception e){ throw e; } } public void registrar() throws Exception{ DeportistaDAO dao; Fechas calcular; String categoria=""; try { dao= new DeportistaDAO(); calcular = new Fechas(); categoria = calcular.categoria(deportista.getF_naci()); if( categoria.equals("Junior") || categoria.equals("Juvenil") || categoria.equals("Senior") || categoria.equals("Master") || categoria.equals("Master1") || categoria.equals("Master2") ){ if(deportista.getGrado().equals("Gr002") || deportista.getGrado().equals("Gr003")){ deportista.setGrado("Gr004"); } } if(s.equals("Información Registrada Pero no como Deportista")){ dao.registrarDep(deportista); }else if(s.equals("Deportista no registrado")){ dao.registrar(deportista); } this.listar("V"); this.limpiar(); } catch (Exception e) { throw e; } } public void eliminar(Deportista dep) throws Exception{ DeportistaDAO dao; try{ dao= new DeportistaDAO(); dao.eliminar(dep); this.listar("V"); }catch(Exception e){ throw e; } } Ilustración 15 CLASE DEPORTISTA BEAN
29
4.7 Evento bean.java
En esta clase se manejara los registros modificación y eliminación de los deportistas.
public void registrar () throws Exception{
EventoDAO dao;
try {
dao= new EventoDAO();
System.out.println("usuario: "+usuario.getCodigo());
evento.setUsuario(usuario);
dao.registrar(evento);
this.listar("V");
this.limpiar();
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO,"¡¡¡Evento creado!!!",null));
} catch (Exception e) {
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_WARN,"¡¡¡Error!!!",null));
throw e;
}
}
public void modificar() throws Exception{
EventoDAO dao;
try{
dao= new EventoDAO();
dao.modificar(evento);
this.listar("V");
}catch(Exception e){
throw e;
}
}
Ilustración 16 CLASE EVENTO BEAN
30
4.8 inscripción bean.java
En esta clase podemos ver las operaciones que pueden hacer los jueces para ser
más resumido en este caso ellos pueden ser inscritos y pueden ser eliminados.
public boolean inscribirJuez(Evento event,EventoAux eventa, Deportista Depo, JuezDAO dao; boolean accion = false; try { dao = new JuezDAO(); if(eventa == null){ dao.inscribirJuez(event, null, Depo, tipo); this.limpiar(); }else if(event == null){ dao.inscribirJuez(null, eventa, Depo, tipo); this.limpiar(); } } catch (Exception e) { throw e; } return accion; } public void modificar() throws Exception{ InscripcionDAO dao; try{ dao = new InscripcionDAO(); dao.modificar(inscripcion); this.listar("V","E"); this.listar("V","N"); }catch(Exception e){ throw e; } } public void leerID(Inscripcion inscri) throws Exception{ InscripcionDAO dao; Inscripcion temp; try{ dao= new InscripcionDAO(); if(evento != null){ inscri.setEvento(evento); } temp = dao.leerID(inscri); if (temp != null){ this.inscripcion= temp; }else{ System.out.println("inscripcion leerId SI esta vacio"); } }catch(Exception e){ throw e; }
} Ilustración 17CLASE INSCRIPCION BEAN
31
4.9 juez bean.java
Aquí podemos ya claramente ver como es la inscripción y la asignación de datos de
los jueces inscritos.
public void asignarJuez(Juez juez, String tipo) throws Exception{ try { this.juez = juez; usu.setTipo(tipo); System.out.println("usutipo: "+ usu.getTipo()); } catch (Exception e) { throw e; } } public void inscribirJueces() throws Exception{ try { if(this.juez != null){ if(juez.getTipo() == "" || juez.getTipo() == null){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Seleccione un tipo de Juez para poder inscribirlo",null)); }else{ if(juez.getTipo() == "J" && lstJefe.size() == 1){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Recuerde que ya hay un Jefe de jueces",null)); }else{ inscripcionBean.inscribirJuez(null, eventoaux, juez.getDepo(), juez.getTipo()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Inscripción de juez correcta",null)); } } }else{ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Debe Seleccionar al Juez para poder inscribirlo",null)); } } catch (Exception e) { throw e; } } Ilustración 18 CLASE JUEZ BEAN
32
4.10 persona bean.java
En esta clase podemos ver varios métodos pero los más importantes son la
inscripción, modificación y eliminación de datos.
private void registrar () throws Exception{
PersonaDAO dao;
try {
dao= new PersonaDAO();
dao.registrar(persona);
this.listar("V");
//this.save();
} catch (Exception e) {
throw e;
}
}
public void modificar() throws Exception{
PersonaDAO dao;
try{
dao= new PersonaDAO();
dao.modificar(persona);
this.listar("V");
}catch(Exception e){
throw e;
}
}
public void eliminar(Persona per) throws Exception{
PersonaDAO dao;
try{
dao= new PersonaDAO();
dao.eliminar(per);
this.listar("V");
}catch(Exception e){
throw e;
}
} Ilustración 19 CLASE PERSONA BEAN
33
4.11 pirámides bean.java
Por ultimo esta es una de las clases más importantes que nos ayuda a hacer la
clasificación de combates a través de árboles con este método se puede hacer una
pirámide que nos permita saber cómo son las formaciones para los combates.
public void clasificar() throws Exception{ Podium podium; try { for(int i=0; i < this.lstpodiumComb.size(); i++){ if(!"Sin Premiar".equals(lstpodiumComb.get(i).getEstado())){ podium = new Podium(); podium = lstpodiumComb.get(i); this.lstpodiumCombP.add(podium); lstpodiumComb.remove(i); i = -1; } } } catch (Exception e) { throw e; } } public void listarDesc(String valor) throws Exception{ try { if(valor.equals("F")){ if (isPostBack()==false){ DescalificacionDAO ldao = new DescalificacionDAO(); lstdescalificacion = ldao.listar("combate"); this.ganos[0] = "Rojo"; this.ganos[1] = "Azul"; } }else{ DescalificacionDAO ldao = new DescalificacionDAO(); lstdescalificacion = ldao.listar("combate"); this.ganos[0] = "Rojo"; this.ganos[1] = "Azul"; } } catch (Exception e) { throw e; } } Ilustración 20 CLASE PIRAMIDES BEAN
34