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.