DAO GENÉRICO:
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Session;
public class Dao<T> {
private static Logger logger = Logger.getLogger(Dao.class);
private Class<T> persistentClass;
protected Session session;
public Dao(Session session, Class<T> persistentClass) {
this.session = session;
this.persistentClass = persistentClass;
}
@SuppressWarnings("unchecked")
public T load(Long id) {
logger.info("lendo " + persistentClass + " com id " + id);
return (T) session.load(persistentClass, id);
}
public void save(T t) {
logger.info("salvando " + t);
session.save(t);
}
public void delete(T t) {
logger.info("deletando " + t);
session.delete(t);
}
@SuppressWarnings("unchecked")
public List<T> list() {
logger.info("Listando todos");
return session.createCriteria(persistentClass).list();
}
public void merge(T t) {
logger.info("Salvando ou atualizando" + t);
session.merge(t);
}
}
DAO ESPECÍFICO (USUARIO)
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import br.gov.rr.setrabes.estrutura.Usuario;
public class UsuarioDao extends Dao<Usuario> {
private Logger logger = Logger.getLogger(UsuarioDao.class);
public UsuarioDao(Session session, Class<?> classe) {
super(session, Usuario.class);
}
public Usuario pesquisaUsuarioById(Long cod_usuario) {
logger.info("pesquisaUsuarioById : " + cod_usuario);
return (Usuario) session.load(Usuario.class, cod_usuario);
}
public Usuario pesquisaUsuarioGenerica(Object ob) {
logger.info("pesquisaUsuarioGenerica : " + ob);
Criteria c = session.createCriteria(Usuario.class);
c.add(Restrictions.ilike(ob + "%", ob));
c.addOrder(Order.asc((String) ob));
return (Usuario) c.uniqueResult();
}
public Usuario pesquisaUsuarioByNome(String nome) {
logger.info("pesquisaUsuarioByNome : " + nome);
Criteria c = session.createCriteria(Usuario.class);
c.add(Restrictions.ilike("nome", nome + "%"));
c.addOrder(Order.asc("nome"));
return (Usuario) c.uniqueResult();
}
@SuppressWarnings("unchecked")
public List<Usuario> pesquisaUsuarios(String nome, String cpf, String rg) {
Criteria c = session.createCriteria(Usuario.class);
c.add(Restrictions.ilike("nome", "%" + nome + "%"));
c.add(Restrictions.ilike("cpf", "%" + cpf + "%"));
c.add(Restrictions.ilike("rg", "%" + rg + "%"));
c.addOrder(Order.asc("nome"));
return c.list();
}
@SuppressWarnings("unchecked")
public List<Usuario> pesquisaUsuariosId(Long id) {
Criteria c = session.createCriteria(Usuario.class);
c.add(Restrictions.eq("id", "%" + id + "%"));
c.addOrder(Order.asc("id"));
return c.list();
}
}
AGORA A CLASSE USUARIO BEAN (OU HANDLER, TANTO FAZ..)
import java.util.ArrayList;
import java.util.List;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.faces.validator.ValidatorException;
import org.hibernate.Session;
import br.gov.rr.setrabes.dao.Dao;
import br.gov.rr.setrabes.dao.UsuarioDao;
import br.gov.rr.setrabes.estrutura.Cargahorariasemanal;
import br.gov.rr.setrabes.estrutura.Cargo;
import br.gov.rr.setrabes.estrutura.Escolaridade;
import br.gov.rr.setrabes.estrutura.Estados;
import br.gov.rr.setrabes.estrutura.MunicipiosRR;
import br.gov.rr.setrabes.estrutura.OrgaoGestor;
import br.gov.rr.setrabes.estrutura.Usuario;
import br.gov.rr.setrabes.util.HibernateUtil;
public class UsuarioHandler {
// private static final long serialVersionUID = 1818242808424001885L;
// adicionar o usuario atual
private Usuario usuario = new Usuario();
private Long id;
private HtmlSelectOneMenu cargoSelecionado;
private HtmlSelectOneMenu chsSelecionado;
private HtmlSelectOneMenu escolaridadeSelecionado;
private HtmlSelectOneMenu orgaogestorSelecionado;
private HtmlSelectOneMenu estadosSelecionado;
private HtmlSelectOneMenu municipiosrrSelecionado;
public HtmlSelectOneMenu getCargoSelecionado() {
return cargoSelecionado;
}
public void setCargoSelecionado(HtmlSelectOneMenu cargoSelecionado) {
this.cargoSelecionado = cargoSelecionado;
}
public HtmlSelectOneMenu getchsSelecionado() {
return chsSelecionado;
}
public void setChsSelecionado(HtmlSelectOneMenu chsSelecionado) {
this.chsSelecionado = chsSelecionado;
}
public HtmlSelectOneMenu getescolaridadeSelecionado() {
return escolaridadeSelecionado;
}
public void setescolaridadeSelecionado(
HtmlSelectOneMenu escolaridadeSelecionado) {
this.escolaridadeSelecionado = escolaridadeSelecionado;
}
public HtmlSelectOneMenu getorgaogestorSelecionado() {
return orgaogestorSelecionado;
}
public void setorgaogestorSelecionado(
HtmlSelectOneMenu orgaogestorSelecionado) {
this.orgaogestorSelecionado = orgaogestorSelecionado;
}
public HtmlSelectOneMenu getestadosSelecionado() {
return estadosSelecionado;
}
public void setestadosSelecionado(HtmlSelectOneMenu estadosSelecionado) {
this.estadosSelecionado = estadosSelecionado;
}
public HtmlSelectOneMenu getmunicipiosrrSelecionado() {
return municipiosrrSelecionado;
}
public void setmunicipiosrrSelecionado(
HtmlSelectOneMenu municipiosrrSelecionado) {
this.municipiosrrSelecionado = municipiosrrSelecionado;
}
public Usuario getUsuario() {
return usuario;
}
public List<Usuario> getUsuarios() {
System.out.println("lendo usuarios ...");
Session session = HibernateUtil.currentSession();
Dao<Usuario> usuarioDao = new Dao<Usuario>(session, Usuario.class);
return usuarioDao.list();
}
// select para cargoHandler
private CargoHandler pegaCargoHandler() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object c = resolver.getValue(elContext, null, "cargoHandler");
return (CargoHandler) c;
}
public List<SelectItem> getCargosParaComboBox() {
List<SelectItem> lista = new ArrayList<SelectItem>();
// usaremos o id como valor e o nome como label para os SelectItem.
CargoHandler handler = pegaCargoHandler();
for (Cargo c : handler.getCargos()) {
lista.add(new SelectItem(c.getCod_cargo(), c.getDescricao()));
}
return lista;
}
// select para chsHandler
private ChsHandler pegaChsHandler() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object chs = resolver.getValue(elContext, null, "chsHandler");
return (ChsHandler) chs;
}
public List<SelectItem> getChsParaComboBox() {
List<SelectItem> lista = new ArrayList<SelectItem>();
// usaremos o id como valor e o nome como label para os SelectItem.
ChsHandler handler = pegaChsHandler();
for (Cargahorariasemanal chs : handler.getCargahorariasemanais()) {
lista.add(new SelectItem(chs.getCod_chs(), chs.getDescricao()));
}
return lista;
}
// select para escolaridadeHandler
private EscolaridadeHandler pegaEscolaridadeHandler() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object e = resolver.getValue(elContext, null, "escolaridadeHandler");
return (EscolaridadeHandler) e;
}
public List<SelectItem> getEscolaridadeParaComboBox() {
List<SelectItem> lista = new ArrayList<SelectItem>();
// usaremos o id como valor e o nome como label para os SelectItem.
EscolaridadeHandler handler = pegaEscolaridadeHandler();
for (Escolaridade e : handler.getEscolaridades()) {
lista
.add(new SelectItem(e.getCod_escolaridade(), e
.getDescricao()));
}
return lista;
}
// select para orgaogestorHandler
private OrgaoGestorHandler pegaOrgaoGestorHandler() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object og = resolver.getValue(elContext, null, "orgaogestorHandler");
return (OrgaoGestorHandler) og;
}
public List<SelectItem> getOrgaoGestorParaComboBox() {
List<SelectItem> lista = new ArrayList<SelectItem>();
// usaremos o id como valor e o nome como label para os SelectItem.
OrgaoGestorHandler handler = pegaOrgaoGestorHandler();
for (OrgaoGestor og : handler.getOrgaosGestores()) {
lista.add(new SelectItem(og.getCod_orgaogestor(), og.getNome()));
}
return lista;
}
// select para estadosHandler
private EstadosHandler pegaEstadosHandler() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object uf = resolver.getValue(elContext, null, "estadosHandler");
return (EstadosHandler) uf;
}
public List<SelectItem> getEstadosParaComboBox() {
List<SelectItem> lista = new ArrayList<SelectItem>();
// usaremos o id como valor e o nome como label para os SelectItem.
EstadosHandler handler = pegaEstadosHandler();
for (Estados e : handler.getListaEstados()) {
lista.add(new SelectItem(e.getCod_estado(), e.getUf()));
}
return lista;
}
// select para municipiosrrHandler
private MunicipiosRRHandler pegaMunicipiosRRHandler() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object m = resolver.getValue(elContext, null, "municipiosRRHandler");
return (MunicipiosRRHandler) m;
}
public List<SelectItem> getMunicipiosRRParaComboBox() {
List<SelectItem> lista = new ArrayList<SelectItem>();
// usaremos o id como valor e o nome como label para os SelectItem.
MunicipiosRRHandler handler = pegaMunicipiosRRHandler();
for (MunicipiosRR m : handler.getListaMunicipiosRR()) {
lista
.add(new SelectItem(m.getCod_municipiosrr(), m
.getMunicipios()));
}
return lista;
}
public String salva() {
System.out.println("Adicionando: " + usuario.getNome());
System.out.println("Gestor: " + usuario.getGestor());
Session session = HibernateUtil.currentSession();
Dao<Usuario> usuarioDao = new Dao<Usuario>(session, Usuario.class);
Dao<Cargo> cargoDao = new Dao<Cargo>(session, Cargo.class);
Dao<Cargahorariasemanal> chsDao = new Dao<Cargahorariasemanal>(session,
Cargahorariasemanal.class);
Dao<Escolaridade> escolaridadeDao = new Dao<Escolaridade>(session,
Escolaridade.class);
Dao<OrgaoGestor> orgaogestorDao = new Dao<OrgaoGestor>(session,
OrgaoGestor.class);
Dao<Estados> estadosDao = new Dao<Estados>(session, Estados.class);
Dao<MunicipiosRR> municipiosrrDao = new Dao<MunicipiosRR>(session,
MunicipiosRR.class);
// cargo
Long id_cargo = Long.valueOf(cargoSelecionado.getValue().toString());
Cargo c = cargoDao.load(id_cargo);
usuario.setCargo_cod_cargo(id_cargo);
// System.out.println(cargo.getUsuario().getNome());
// chs
Long id_chs = Long.valueOf(chsSelecionado.getValue().toString());
Cargahorariasemanal chs = chsDao.load(id_chs);
usuario.setCargahorariasemana_cod_chs(id_chs);
// escolaridade
Long id_escolaridade = Long.valueOf(escolaridadeSelecionado.getValue()
.toString());
Escolaridade e = escolaridadeDao.load(id_escolaridade);
usuario.setEscolaridade_cod_escolaridade(id_escolaridade);
// orgaogestor
Long id_orgaogestor = Long.valueOf(orgaogestorSelecionado.getValue()
.toString());
OrgaoGestor og = orgaogestorDao.load(id_orgaogestor);
usuario.setOrgaogestor_cod_orgaogestor(id_orgaogestor);
// estados
Long id_estados = Long
.valueOf(estadosSelecionado.getValue().toString());
Estados uf = estadosDao.load(id_estados);
usuario.setEstados_cod_estados(id_estados);
// municipios
Long id_municipios = Long.valueOf(municipiosrrSelecionado.getValue()
.toString());
MunicipiosRR m = municipiosrrDao.load(id_municipios);
usuario.setMunicipiosrr_cod_municipiosrr(id_municipios);
usuarioDao.merge(this.usuario);
this.usuario = new Usuario();
return "sucesso";
}
public String excluir(ActionEvent event) {
System.out.println("Excluindo: " + usuario.getCod_usuario());
UIComponent link = event.getComponent();
UIParameter param = (UIParameter) link.findComponent("excluir");
Long id = (Long) param.getValue();
Session session = HibernateUtil.currentSession();
Dao<Usuario> usuarioDao = new Dao<Usuario>(session, Usuario.class);
this.usuario = usuarioDao.load(id);
usuarioDao.delete(this.usuario);
this.usuario = new Usuario();
return "excluido";
}
public String load() {
Session session = HibernateUtil.currentSession();
Dao<Usuario> usuarioDao = new Dao<Usuario>(session, Usuario.class);
this.usuario = usuarioDao.load(this.id);
return "pesquisaSucesso";
}
public List<Usuario> getListaUsuarios() {
Session session = HibernateUtil.currentSession();
UsuarioDao usuarioDao = new UsuarioDao(session, Usuario.class);
return usuarioDao.list();
}
public List<Usuario> getUsuariosByNome() {
Session session = HibernateUtil.currentSession();
UsuarioDao usuarioDao = new UsuarioDao(session, Usuario.class);
List<Usuario> lista = usuarioDao.pesquisaUsuarios(this.usuario
.getNome(), this.usuario.getCpf(), this.usuario.getRg());
return lista;
}
public void escolheUsuario(ActionEvent event) {
UIComponent link = event.getComponent();
UIParameter param = (UIParameter) link.findComponent("editCod");
Long id = (Long) param.getValue();
Session session = HibernateUtil.currentSession();
Dao<Usuario> dao = new Dao<Usuario>(session, Usuario.class);
this.usuario = dao.load(id);
}
public void validaCase(FacesContext fc, UIComponent component, Object value) {
String valor = value.toString();
if (!valor.matches("[A-Z].*")) {
throw new ValidatorException(new FacesMessage(
"Inicie o nome com letra maiúscula!"));
}
}
}