viernes, 27 de marzo de 2015

Ejemplo: Java EE JSF+JPA - X


Continuamos construyendo ManagedBeans:

UsuariosBean.java

@ManagedBean(name="usuario")
@RequestScoped
public class UsuariosBean {

    private String nombre;
    private String login;
    private String password;
    private String email;
    private String sector;
    private String profesion;
    private String antiguedad;    
    private int selectedSector;
    private String message;
    
    public UsuariosBean() {
        message="";
        nombre="";
        login="";
        password="";
        email="";
        sector="";
        profesion="";
        antiguedad="";
        selectedSector=0;                
    }
       
    public String nuevoUsuario() {
        // WARNING !! no hacemos ningun tipo de comprobacion para no alargar el codigo del ejemplo
        UsuariosDAO us=new UsuariosDAO();
        int ant=(int)Integer.parseInt(antiguedad);
        Usuarios nuevo=new Usuarios(nombre,login,password,email,sector,profesion,ant);
        if (us.createUser(nuevo)) {
            message="¡ Usuario grabado correctamente !";
            IndexBean.usuario=nuevo;
        } else {
            message="ERROR en grabación de usuario";
        }       
        return "alta.xhtml";
    }
    
    public String volver() {
        return "index.xhtml";
    }
    // GETTERS Y SETTERS NO INCLUIDOS PARA ABREVIAR CODIGO, PERO SON NECESARIOS
}

PersonalesBean.java

@ManagedBean(name="personales")
@RequestScoped
public class PersonalesBean {

    private String nombre;
    private String login;
    private String password;
    private String email;    
    private String message;
    
    public PersonalesBean() {        
        nombre=IndexBean.usuario.getNombre();
        login=IndexBean.usuario.getLogin();
        password=IndexBean.usuario.getPassword();
        email=IndexBean.usuario.getEmail();
    }

    public String modificarUsuario() {
        // intentamos modificar el usuario utilizando los datos del
        // usuario en SessionScoped combinados con los del formulario
        UsuariosDAO us=new UsuariosDAO();
        Usuarios modUser=new Usuarios();
        // WARNING !! no hacemos ningun tipo de comprobacion para no alargar el codigo
        modUser=IndexBean.usuario;
        modUser.setNombre(nombre);
        modUser.setLogin(login);
        modUser.setPassword(password);
        modUser.setEmail(email);
        if (us.changeUser(modUser)) {
            // modificado usuario, mostramos mensaje y permanecemos en la pagina
            IndexBean.usuario=modUser;
            message="Modificación del usuario realizada correctamente";
            return "personales.xhtml";
        }
        // no es posible modificar, mostramos mensaje y permanecemos en la pagina
        message="ERROR en modificación de usuario";
        // recuperamos los datos originales
        nombre=IndexBean.usuario.getNombre();
        login=IndexBean.usuario.getLogin();
        password=IndexBean.usuario.getPassword();
        email=IndexBean.usuario.getEmail();
        return "personales.xhtml";
    }
    
    public String borrarUsuario() {
        // intentamos borrar el usuario utilizando los datos del
        // usuario en SessionScoped
        UsuariosDAO us=new UsuariosDAO();
        if (us.deleteUser(IndexBean.usuario.getId())) {
            // borrado usuario, salimos de la aplicacion poniendo usuario a null
            IndexBean.usuario=null;
            // mensaje en index de confirmacion
            IndexBean.message="usuario borrado correctamente";
            return "index.xhtml";
        }
        // no es posible borrar, mostramos mensaje y permanecemos en la pagina
        message="ERROR en borrado de usuario";
        return "personales.xhtml";
    }
    
    public String goToProfesionales() {
        // vamos a la pagina de datos profesionales
        return "profesionales.xhtml";
    }
    
    public String goOut() {
        // salimos de la aplicacion, borrando los datos del usuario activo
        IndexBean.usuario=null;
        // borramos mensaje en index
        IndexBean.message="";
        return "index.xhtml";
   }
 // GETTERS Y SETTERS NO INCLUIDOS PARA ABREVIAR CODIGO, PERO SON NECESARIOS
 }

ProfesionalesBean.java

@ManagedBean(name="profesionales")
@RequestScoped
public class ProfesionalesBean {

    private String sector;
    private String profesion;
    private String antiguedad;
    private int selectedSector;
    private String message;
    
    public ProfesionalesBean() {    
        sector=IndexBean.usuario.getSector();
        profesion=IndexBean.usuario.getProfesion();
        antiguedad=String.valueOf(IndexBean.usuario.getAntiguedad());  
        switch (sector) {
            case "Industria":
                selectedSector=1;
                break;
            case "Comercio":
                selectedSector=2;
                break;
            case "Agricultura":
                selectedSector=3;
                break;                
            case "Servicios":
                selectedSector=4;
                break;
            default:
                selectedSector=5;
                break;                
        }     
    }
    
    public String modificarUsuario() {
        // intentamos modificar el usuario utilizando los datos del
        // usuario en SessionScoped combinados con los del formulario
        UsuariosDAO us=new UsuariosDAO();
        Usuarios modUser=new Usuarios();
        // WARNING !! no hacemos ningun tipo de comprobacion para no alargar el codigo
        modUser=IndexBean.usuario;
        modUser.setProfesion(profesion);
        modUser.setAntiguedad(Integer.parseInt(antiguedad));
        modUser.setSector(sector);
        if (us.changeUser(modUser)) {
            // modificado usuario, mostramos mensaje y permanecemos en la pagina
            IndexBean.usuario=modUser;
            message="Modificación del usuario realizada correctamente";
            return "profesionales.xhtml";
        }
        // no es posible modificar, mostramos mensaje y permanecemos en la pagina
        message="ERROR en modificación de usuario";
        // recuperamos los datos originales
        sector=IndexBean.usuario.getSector();
        profesion=IndexBean.usuario.getProfesion();
        antiguedad=String.valueOf(IndexBean.usuario.getAntiguedad());      
        switch (sector) {
            case "Industria":
                selectedSector=1;
                break;
            case "Comercio":
                selectedSector=2;
                break;
            case "Agricultura":
                selectedSector=3;
                break;                
            case "Servicios":
                selectedSector=4;
                break;
            default:
                selectedSector=5;
                break;                
        }        
        return "profesionales.xhtml";
    }
    
    public String borrarUsuario() {
        // intentamos borrar el usuario utilizando los datos del
        // usuario en SessionScoped
        UsuariosDAO us=new UsuariosDAO();
        if (us.deleteUser(IndexBean.usuario.getId())) {
            // borrado usuario, salimos de la aplicacion poniendo usuario a null
            IndexBean.usuario=null;
            // mensaje en index de confirmacion
            IndexBean.message="usuario borrado correctamente";            
            return "index.xhtml";
        }
        // no es posible borrar, mostramos mensaje y permanecemos en la pagina
        message="ERROR en borrado de usuario";
        return "profesionales.xhtml";
    }
    
    public String goToPersonales() {
        // vamos a la pagina de datos profesionales
        return "personales.xhtml";
    }
    
    public String goOut() {
        // salimos de la aplicacion, borrando los datos del usuario activo
        IndexBean.usuario=null;
        // borramos mensaje en index
        IndexBean.message="";
        return "index.xhtml";
    }
 // GETTERS Y SETTERS NO INCLUIDOS PARA ABREVIAR CODIGO, PERO SON NECESARIOS
// INCLUYO, SIN EMBARGO ESTE SETTER POR EL TEMA DE LA CONVERSION INT-STRING
    public void setSelectedSector(int selectedSector) {
        this.selectedSector = selectedSector;       
        switch (selectedSector) {
            case 1:
                setSector("Industria");
                break;
            case 2:
                setSector("Comercio");
                break;
            case 3:
                setSector("Agricultura");
                break;                
            case 4:
                setSector("Servicios");
                break;
            default:
                setSector("Otros");
                break;                
        }

    }
}


RESUMEN:

  • Los atributos serán relacionados con los campos de formularios. 
  • Los métodos serán relacionados con los botones del formulario. 
  • Hemos creado un atributo message para visualizar los mensajes de error o confirmación de operaciones.
  • En el caso del selector en profesionales.xhtml, hay que observar que en la base de datos se almacena un String con el texto de la selección, pero el selector opera con un int según el elemento seleccionado. Es por ello que debemos estar traduciendo del itemValue (int) al itemLabel (String). Por ello hemos empleado un switch case a título ejemplo, aunque podríamos haber empleado métodos más eficientes. 
  • No hacemos comprobaciones de tipos ni longitud ni las comprobaciones que siempre son necesarias al enviar un formulario. ¡No lo hacemos por negligencia! Al igual que con los getters y setters, lo hacemos por abreviar y aligerar el código del ejemplo, haciéndolo más legible.

Anterior tema                                                                                         Siguiente tema

No hay comentarios:

Publicar un comentario