Bom, a autenticação esta funcionando perfeitamente, agora eu pretendo botar o nome do funcionário logado no canto superior da tela, mas pesquisei e não achei ainda nada que funcione no meu sistema. Segue as classes
Funcionario
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.br.CPF;
@Entity
@Table(name = "tb_funcionarios")
@NamedQueries({
@NamedQuery(name = "Funcionario.listar", query = "SELECT funcionario FROM Funcionario funcionario" ),
@NamedQuery(name = "Funcionario.buscarPorCodigo", query = "SELECT funcionario FROM Funcionario funcionario WHERE funcionario.codigo = :codigo" ),
@NamedQuery(name = "Funcionario.logar", query = "SELECT funcionario FROM Funcionario funcionario WHERE funcionario.cpf = :cpf AND funcionario.senha = :senha"),
@NamedQuery(name = "Funcionario.buscarPorNome", query = "SELECT funcionario FROM Funcionario funcionario WHERE funcionario.nome = :nome" )
})
public class Funcionario {
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
@Column(name = "fun_codigo")
private Long codigo;
@NotEmpty(message = "Insira o Nome")
@Column(name = "fun_nome", length = 50, nullable = false)
private String nome;
@CPF(message = "CPF Incorreto")
@Column(name = "fun_cpf", length = 14, nullable = false, unique = true)
private String cpf;
@NotEmpty(message = "Insira a Senha")
@Size(min = 5, max = 15, message = "Sua senha deve conter de 5 a 15 caracteres")
@Column(name = "fun_senha", length = 50, nullable = false)
private String senha;
@NotEmpty(message = "Insira um cargo")
@Column(name = "fun_funcao", length = 50, nullable = false)
private String funcao;
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getFuncao() {
return funcao;
}
public void setFuncao(String funcao) {
this.funcao = funcao;
}
@Override
public String toString() {
return "Funcionario [codigo=" + codigo + ", nome=" + nome + ", cpf=" + cpf + ", senha=" + senha + ", funcao="
+ funcao + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Funcionario other = (Funcionario) obj;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
return true;
}
}
FuncionarioDAO
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.Vendas.domain.Funcionario;
import br.com.Vendas.util.HibernateUtil;
public class FuncionariosDAO {
public void salvar(Funcionario funcionario) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction(); // abrindo a transação
sessao.save(funcionario);
transacao.commit(); // confirmando a transação
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback(); // desfaz a transação
}
}
finally {
sessao.close();
}
}
@SuppressWarnings("unchecked")
public List<Funcionario> listar() {
Session sessao = HibernateUtil.getSessionFactory().openSession();
List<Funcionario> funcionario = null;
try {
Query consulta = sessao.getNamedQuery("Funcionario.listar");
funcionario = consulta.list();
} catch (RuntimeException ex) {
throw ex;
}
finally {
sessao.close();
}
return funcionario;
}
public Funcionario buscarPorCodigo(Long codigo) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Funcionario funcionario = null;
try {
Query consulta = sessao.getNamedQuery("Funcionario.buscarPorCodigo");
consulta.setLong("codigo", codigo);
funcionario = (Funcionario) consulta.uniqueResult();
} catch (RuntimeException ex) {
throw ex;
}
finally {
sessao.close();
}
return funcionario;
}
public Funcionario buscarPorNome(String nome) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Funcionario funcionario = null;
try {
Query consulta = sessao.getNamedQuery("Funcionario.buscarPorNome");
consulta.setString("nome", nome);
funcionario = (Funcionario) consulta.uniqueResult();
} catch (RuntimeException ex) {
throw ex;
}
finally {
sessao.close();
}
return funcionario;
}
public void excluir(Funcionario funcionario) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction(); // abrindo a transação
sessao.delete(funcionario);
transacao.commit(); // confirmando a transação
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback(); // desfaz a transação
}
}
finally {
sessao.close();
}
}
public Funcionario autenticar(String cpf, String senha) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Funcionario funcionario = null;
try {
// Executa a query de consulta
Query consulta = sessao.getNamedQuery("Funcionario.logar");
// Recebe os dados informados
consulta.setString("cpf", cpf);
consulta.setString("senha", senha);
// Cria consulta do funcionário
funcionario = (Funcionario) consulta.uniqueResult();
} catch (RuntimeException ex) {
throw ex;
} finally {
sessao.close();
}
return funcionario;
}
public void editar(Funcionario funcionario) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction(); // abrindo a transação
sessao.update(funcionario);
transacao.commit(); // confirmando a transação
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback(); // desfaz a transação
}
}
finally {
sessao.close();
}
}
}
FuncionarioBean
import java.io.IOException;
import java.util.ArrayList;
import org.hibernate.Session;
import org.omnifaces.util.Faces;
import org.omnifaces.util.Messages;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import br.com.Vendas.DAO.FuncionariosDAO;
import br.com.Vendas.domain.Funcionario;
import br.com.Vendas.util.JSFUtil;
@ManagedBean(name = "MBFuncionarios")
@ViewScoped
public class FuncionariosBean {
private Funcionario funcionario = new Funcionario();
private FuncionariosDAO fdao = new FuncionariosDAO();
private ArrayList<Funcionario> itens;
private ArrayList<Funcionario> itensFiltrados;
private String acao;
private String nome;
private Long codigo;
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public String getAcao() {
return acao;
}
public void setAcao(String acao) {
this.acao = acao;
}
public Funcionario getFuncionario() {
return funcionario;
}
//
public void setFuncionario(Funcionario funcionario) {
this.funcionario = funcionario;
}
public ArrayList<Funcionario> getItens() {
return itens;
}
public void setItens(ArrayList<Funcionario> itens) {
this.itens = itens;
}
public ArrayList<Funcionario> getItensFiltrados() {
return itensFiltrados;
}
public void setItensFiltrados(ArrayList<Funcionario> itensFiltrados) {
this.itensFiltrados = itensFiltrados;
}
// @PostConstruct
public void prepararPesquisa() {
try {
FuncionariosDAO fdao = new FuncionariosDAO();
itens = (ArrayList<Funcionario>) fdao.listar();
} catch (RuntimeException e) {
JSFUtil.adicionarMensagemErro("ex.getMessage()");
e.printStackTrace();
}
}
public void carregarCadastro() {
try {
if (codigo != null) {
FuncionariosDAO fdao = new FuncionariosDAO();
funcionario = fdao.buscarPorCodigo(codigo);
} else {
funcionario = new Funcionario();
}
} catch (RuntimeException e) {
JSFUtil.adicionarMensagemErro("ex.getMessage()");
e.printStackTrace();
}
}
public void carregarNome() {
try {
if (nome != null) {
FuncionariosDAO fdao = new FuncionariosDAO();
funcionario = fdao.buscarPorNome(nome);
} else {
funcionario = new Funcionario();
}
} catch (RuntimeException e) {
JSFUtil.adicionarMensagemErro("ex.getMessage()");
e.printStackTrace();
}
}
public void novo() {
funcionario = new Funcionario();
}
public void salvar() {
try {
FuncionariosDAO fdao = new FuncionariosDAO();
fdao.salvar(funcionario);
funcionario = new Funcionario();
JSFUtil.adicionarMensagemSucesso("Funcionário salvo com sucesso!");
} catch (RuntimeException e) {
JSFUtil.adicionarMensagemErro("ex.getMessage()");
e.printStackTrace();
}
}
public void excluir() {
try {
fdao.excluir(funcionario);
JSFUtil.adicionarMensagemSucesso("Funcionário excluido com sucesso!");
} catch (RuntimeException e) {
JSFUtil.adicionarMensagemErro("Não é possível excluir um funcionário que tenha uma venda associado!");
e.printStackTrace();
}
}
public void autenticar() {
try {
// Recebe login e senha do usuário e chama método DAO para autenticar
funcionario = fdao.autenticar(funcionario.getCpf(), (funcionario.getSenha()));
// Verifica se o funcionário é nulo ou diferente
if (funcionario == null) {
JSFUtil.adicionarMensagemErro("Usuário ou senha invalida");
} else {
// Redireciona para página principal após autenticar o funcionário.
FacesContext.getCurrentInstance().getExternalContext().redirect("principal.xhtml");
}
} catch (IOException erro) {
erro.printStackTrace();
Messages.addGlobalError(erro.getMessage());
}
}
public void editar() {
try {
FuncionariosDAO fdao = new FuncionariosDAO();
fdao.editar(funcionario);
JSFUtil.adicionarMensagemSucesso("Funcionário editado com sucesso!");
} catch (RuntimeException e) {
JSFUtil.adicionarMensagemErro("ex.getMessage()");
e.printStackTrace();
}
}
}
Template
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:insert name="metadata" />
<h:head>
<link rel="shortcut icon" href="../resources/images/favicon.ico" />
<h:outputStylesheet library="css" name="style.css" />
<h:outputScript library="js" name="scripts.js" />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cronus - Software de gestão</title>
</h:head>
<h:body>
<p:growl id="msgGlobal" />
<h:body>
<p:layout fullPage="true">
<p:layoutUnit header="Sistema de Vendas" position="north"
resizable="false" closable="false" collapsible="false">
<h:graphicImage url="../resources/images/sistema.jpg"/>
<p:toolbar style="height:39px;">
<f:facet name="left">
<p:outputLabel value="Colocar o nome do Funcionario Logado"
style="position: relative;left: 1360px;" />
<p:commandButton action="/pages/autenticacao.xhtml" value="Sair"
style="height:39px;width:90px; text-align:center;position: relative;left: 1370px;"/>
</f:facet>
</p:toolbar>
</p:layoutUnit>
<p:layoutUnit header="Copyright 2019 - Todos os direitos reservados. Feito por Jackson F. Magnabosco"
position="south" resizable="false" closable="false" collapsible="false">
</p:layoutUnit>
<p:layoutUnit header="Menu Inicial" size="200" position="west"
resizable="false" closable="false" collapsible="false">
<h:form>
<p:panelMenu
style="background-image: url('../images/sistema.jpg');">
<p:submenu label="Arquivo">
<p:menuitem value="Página Principal"
outcome="/pages/principal.xhtml" />
<p:menuitem value="Sobre"
outcome="/pages/sobre.xhtml" />
<p:menuitem value="Sair"
outcome="/pages/autenticacao.xhtml" />
</p:submenu>
<p:submenu label="Cadastros">
<p:menuitem value="Produtos"
outcome="/pages/produtoPesquisa.xhtml" />
<p:menuitem value="Fornecedores"
outcome="/pages/fornecedorPesquisa.xhtml" />
<p:menuitem value="Funcionários"
outcome="/pages/funcionarioPesquisa.xhtml" />
</p:submenu>
<p:submenu label="Vendas">
<p:menuitem value="Nova Venda"
outcome="/pages/vendaCadastro.xhtml" />
</p:submenu>
<p:submenu label="Relatórios"></p:submenu>
</p:panelMenu>
</h:form>
</p:layoutUnit>
<p:layoutUnit position="east" size="200" header="Mensagens"
style="text-align:center;" resizable="false" closable="false "
collapsible="true" effect="drop">
</p:layoutUnit>
<p:layoutUnit position="center" resizable="false" closable="false"
collapsible="false">
<ui:insert name="conteudo" />
<h:panelGrid>
<p:graphicImage library="images" name=".jpg" />
</h:panelGrid>
</p:layoutUnit>
</p:layout>
</h:body>
</h:body>
</html>
