FORMULARIO INFORMACIÓN ADICIONAL

En el siguiente artículo se explicará cómo fue implementado el código del caso FORMULARIO INFORMACIÓN ADICIONAL de la funcionalidad Formulario Para la implementación de esta funcionalidad se usó JavaEE con Prime Faces 6.0, además se usa el método GET para el envío de datos entre la plataforma web Verifíquese Cédula Almacén y la plataforma móvil Verifíquese Cédula Premium, antes de comenzar se debe descargar la base de datos y montarla en un motor de MySQL.

El código siguiente pertenece al formulario:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/template2.xhtml">
        <ui:define name="title" >
        </ui:define>
        <ui:define name="body" >
            <f:metadata>
                <f:event type="preRenderView" listener="#{formularioController.loadparameters()}"/>
            </f:metadata>
            <h:form>
                <h:outputLabel value="Color" />
                <p:colorPicker value="#{formularioController.color}" />
                <h:panelGrid columns="2">
                <h:outputLabel value="Primer Nombre" />
                <h:inputText value="#{formularioController.firstName}"/>
                <h:outputLabel value="Segundo Nombre" />
                <h:inputText value="#{formularioController.secondName}"/>
                <h:outputLabel value="Primer Apellido" />
                <h:inputText value="#{formularioController.firstSurname}"/>
                <h:outputLabel value="Segundo Apellido" />
                <h:inputText value="#{formularioController.secondSurname}"/>
                <h:outputLabel value="Número Documento" />
                <h:inputText value="#{formularioController.citizenID}"/>
                <h:outputLabel value="Tipo Documento" />
                <h:inputText value="#{formularioController.documentType}"/>
                <h:outputLabel value="País" />
                <h:inputText value="#{formularioController.country}"/>
                <h:outputLabel value="Fecha Lectura" />
                <h:inputText value="#{formularioController.readingDate}"/>
                <h:outputLabel value="Latitud" />
                <h:inputText value="#{formularioController.latitud}"/>
                <h:outputLabel value="Longitud" />
                <h:inputText value="#{formularioController.longitud}"/>
                <h:outputLabel value="Información Extra" />
                <h:inputText value="#{formularioController.extra_data}"/>
                <h:outputLabel value="combo" for="combo"/>
                <p:selectOneMenu id="combo" value="#{formularioController.combo}">
                    <f:selectItem itemLabel="Seleccione" itemValue="" />
                    <f:selectItem itemLabel="Valor 0" itemValue="valor1" />
                    <f:selectItem itemLabel="Valor 2" itemValue="Valor2" />
                    <f:selectItem itemLabel="Valor 3" itemValue="valor3" />
                </p:selectOneMenu>
                <h:outputLabel value="Adicional 1" />
                <h:inputText value="#{formularioController.adicional1}"/>
                <h:outputLabel value="Adicional 2" />
                <h:inputText value="#{formularioController.adicional2}"/>
                <h:outputLabel value="Adicional 3" />
                <h:inputText value="#{formularioController.adicional3}"/>
                <h:outputLabel value="Adicional 4" />
                <h:inputText value="#{formularioController.adicional4}"/>
                <h:outputLabel value="Adicional 5" />
                <h:inputText value="#{formularioController.adicional5}"/>
                <h:outputText value="Fecha" />
                <p:calendar id="button" value="#{formularioController.fecha}"  showOn="button" />   
                </h:panelGrid>
               
                <h:commandButton  type="submit" styleClass="apply" title="Aceptar" action="#{formularioController.redirect('Formulario')}" style="width:auto; height:auto" value="Aceptar" >
                   
                </h:commandButton>
            </h:form>
        </ui:define>
    </ui:composition>

</html>

En este formulario se muestra la información escaneada del documento para tomar esta información se usa el siguiente fragmento de código en el controlador:

public void loadparameters() {
        //Este método es el encargado de recibir los datos leídos del documento por método get
        try {
            ExternalContext context=FacesContext.getCurrentInstance().getExternalContext();
            context.setResponseCharacterEncoding("UTF-8");
            Map<String, String> params = context.getRequestParameterMap();
            firstName = params.get("orh");
            secondName = params.get("bdh");
            firstSurname = params.get("wso");
            secondSurname = params.get("pur");
            citizenID = params.get("gel");
            birthDate = params.get("poe");
            country = params.get("wad");
            documentType = params.get("qwe");
            readingDate = params.get("tyu");
            latitud = params.get("klz");
            longitud = params.get("sde");
            extra_data = params.get("xlq");
        } catch (Exception e) {
            System.out.println("ERROR: "+e.getMessage());
        }
    }

Luego de suministrados los datos adicionales y editados lo datos escaneados del documento, en caso de a ver sido necesario, se envían los datos del formulario a la aplicación móvil Verifíquese Cédula Premium usando el método GET, para esto se usa el siguiente fragmento de código en el controlador:

public String redirect(String page) throws UnsupportedEncodingException {
        //Este método se encarga de enviar por get los datos tomados de la vista
        String url = page + "?faces-redirect=true";
        //Se verifica que ningún datos sea nulo o vacío
        if(firstName != null && !firstName.equals("")){
            url += "&orh="+firstName;
        }
        if(secondName != null && !secondName.equals("")){
            url +="&bdh="+secondName;
        }
        if(firstSurname != null&& !firstSurname.equals("")){
            url += "&wso="+firstSurname;
        }
        if(secondSurname != null && !secondSurname.equals("")){
            url += "&pur="+secondSurname;
        }
        if(citizenID != null && !citizenID.equals("")){
            url += "&gel="+citizenID;
        }
        if(birthDate != null && !birthDate.equals("")){
            url += "&poe="+birthDate;
        }
        if(country != null && !country.equals("")){
            url += "&wad="+country;
        }
        if(documentType != null && !documentType.equals("")){
            url += "&qwe="+documentType;
        }
        if(readingDate != null && !readingDate.equals("")){
            url += "&tyu="+readingDate;
        }
        if(latitud != null && !latitud.equals("")){
            url += "&klz="+latitud;
        }
        if(longitud != null && !longitud.equals("")){
            url += "&sde="+longitud;
        }
        if(adicional1 != null && !adicional1.equals("")){
            url += "&adicionaluno="+adicional1;
        }
        if(adicional2 != null && !adicional2.equals("")){
            url += "&adicionaldos="+adicional2;
        }
        if(adicional3 != null && !adicional3.equals("")){
            url += "&adicionaltres="+adicional3;
        }
        if(adicional4 != null && !adicional4.equals("")){
            url += "&adicionalcuatro="+adicional4;
        }
        if(adicional5 != null && !adicional5.equals("")){
            url += "&adicionalcinco="+adicional5;
        }
        if(color != null && !color.equals("")){
            url += "&color="+color;
        }
        if(fecha != null && !fecha.equals("")){
            url += "&fecha="+fecha;
        }
        if(extra_data != null && !extra_data.equals("")){
            url += "&xlq="+URLEncoder.encode(extra_data, "UTF-8");
        }
        if(combo != null && !combo.equals("")){
            url += "&combo="+combo;
        }
        return url;
    }

El siguiente es el código completo que pertenece controlador de la vista.

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package co.venko.almacen.controller;

import co.venko.almacen.entities.Documentcategory;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

/**
*
* @author carlo
*/
@ManagedBean(name = "formularioController")
@SessionScoped
public class FormularioController {
    private Documentcategory documentcategory;
    private String adicional1="";
    private String adicional2="";
    private String adicional3="";
    private String adicional4="";
    private String adicional5="";
    private String color="";
    private Date fecha;
    private String categoryResponse="";
    private String extraResponse="";
    private String firstName="";
    private String secondName="";
    private String firstSurname="";
    private String secondSurname="";
    private String citizenID="";
    private String birthDate="";
    private String bloodType = "";
    private String bloodRH = "";
    private String country = "";
    private String documentType = "";
    private String readingDate = "";
    private String latitud = "";
    private String longitud = "";
    private String extra_data="";
    private String combo="";

    /**
     * Creates a new instance of FormularioController
     */
    public FormularioController() {
    }
   
    public void loadparameters() {
        //Este método es el encargado de tomar los datos leídos del documento por método get
        try {
            ExternalContext context=FacesContext.getCurrentInstance().getExternalContext();
            context.setResponseCharacterEncoding("UTF-8");
            Map<String, String> params = context.getRequestParameterMap();
            firstName = params.get("orh");
            secondName = params.get("bdh");
            firstSurname = params.get("wso");
            secondSurname = params.get("pur");
            citizenID = params.get("gel");
            birthDate = params.get("poe");
            country = params.get("wad");
            documentType = params.get("qwe");
            readingDate = params.get("tyu");
            latitud = params.get("klz");
            longitud = params.get("sde");
            extra_data = params.get("xlq");
        } catch (Exception e) {
            System.out.println("ERROR: "+e.getMessage());
        }
    }

    public String redirect(String page) throws UnsupportedEncodingException {
        //Este método se encarga de enviar por método get los datos tomados de la vista
        String url = page + "?faces-redirect=true";
        //Se verifica que ningún datos sea nulo o vacío
        if(firstName != null && !firstName.equals("")){
            url += "&orh="+firstName;
        }
        if(secondName != null && !secondName.equals("")){
            url +="&bdh="+secondName;
        }
        if(firstSurname != null&& !firstSurname.equals("")){
            url += "&wso="+firstSurname;
        }
        if(secondSurname != null && !secondSurname.equals("")){
            url += "&pur="+secondSurname;
        }
        if(citizenID != null && !citizenID.equals("")){
            url += "&gel="+citizenID;
        }
        if(birthDate != null && !birthDate.equals("")){
            url += "&poe="+birthDate;
        }
        if(country != null && !country.equals("")){
            url += "&wad="+country;
        }
        if(documentType != null && !documentType.equals("")){
            url += "&qwe="+documentType;
        }
        if(readingDate != null && !readingDate.equals("")){
            url += "&tyu="+readingDate;
        }
        if(latitud != null && !latitud.equals("")){
            url += "&klz="+latitud;
        }
        if(longitud != null && !longitud.equals("")){
            url += "&sde="+longitud;
        }
        if(adicional1 != null && !adicional1.equals("")){
            url += "&adicionaluno="+adicional1;
        }
        if(adicional2 != null && !adicional2.equals("")){
            url += "&adicionaldos="+adicional2;
        }
        if(adicional3 != null && !adicional3.equals("")){
            url += "&adicionaltres="+adicional3;
        }
        if(adicional4 != null && !adicional4.equals("")){
            url += "&adicionalcuatro="+adicional4;
        }
        if(adicional5 != null && !adicional5.equals("")){
            url += "&adicionalcinco="+adicional5;
        }
        if(color != null && !color.equals("")){
            url += "&color="+color;
        }
        if(fecha != null && !fecha.equals("")){
            url += "&fecha="+fecha;
        }
        if(extra_data != null && !extra_data.equals("")){
            url += "&xlq="+URLEncoder.encode(extra_data, "UTF-8");
        }
        if(combo != null && !combo.equals("")){
            url += "&combo="+combo;
        }
        return url;
    }

    public String getCombo() {
        return combo;
    }

    public void setCombo(String combo) {
        this.combo = combo;
    }   
   
    public String getCategoryResponse() {
        return categoryResponse;
    }

    public void setCategoryResponse(String categoryResponse) {
        this.categoryResponse = categoryResponse;
    }

    public String getExtraResponse() {
        return extraResponse;
    }

    public void setExtraResponse(String extraResponse) {
        this.extraResponse = extraResponse;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getSecondName() {
        return secondName;
    }

    public void setSecondName(String secondName) {
        this.secondName = secondName;
    }

    public String getFirstSurname() {
        return firstSurname;
    }

    public void setFirstSurname(String firstSurname) {
        this.firstSurname = firstSurname;
    }

    public String getSecondSurname() {
        return secondSurname;
    }

    public void setSecondSurname(String secondSurname) {
        this.secondSurname = secondSurname;
    }

    public String getCitizenID() {
        return citizenID;
    }

    public void setCitizenID(String citizenID) {
        this.citizenID = citizenID;
    }

    public String getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(String birthDate) {
        this.birthDate = birthDate;
    }

    public String getBloodType() {
        return bloodType;
    }

    public void setBloodType(String bloodType) {
        this.bloodType = bloodType;
    }

    public String getBloodRH() {
        return bloodRH;
    }

    public void setBloodRH(String bloodRH) {
        this.bloodRH = bloodRH;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getDocumentType() {
        return documentType;
    }

    public void setDocumentType(String documentType) {
        this.documentType = documentType;
    }

    public String getReadingDate() {
        return readingDate;
    }

    public void setReadingDate(String readingDate) {
        this.readingDate = readingDate;
    }

    public String getAdicional1() {
        return adicional1;
    }

    public void setAdicional1(String adicional1) {
        this.adicional1 = adicional1;
    }

    public String getAdicional2() {
        return adicional2;
    }

    public void setAdicional2(String adicional2) {
        this.adicional2 = adicional2;
    }

    public String getAdicional3() {
        return adicional3;
    }

    public void setAdicional3(String adicional3) {
        this.adicional3 = adicional3;
    }

    public String getAdicional4() {
        return adicional4;
    }

    public void setAdicional4(String adicional4) {
        this.adicional4 = adicional4;
    }

    public String getAdicional5() {
        return adicional5;
    }

    public void setAdicional5(String adicional5) {
        this.adicional5 = adicional5;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }
   
    public String getLatitud() {
        return latitud;
    }

    public void setLatitud(String latitud) {
        this.latitud = latitud;
    }

    public String getLongitud() {
        return longitud;
    }

    public void setLongitud(String longitud) {
        this.longitud = longitud;
    }

    public String getExtra_data() {
        return extra_data;
    }

    public void setExtra_data(String extra_data) {
        this.extra_data = extra_data;
    } 
}