Dúvida em relação entre entidades

4 respostas
pvrsouza

Galera,

Queria uma ajuda numa situação. Eu tenho duas tabelas o banco: Usuario e TipoAcesso. Em usuario eu tenho uma chave estrangeira de TipoAcesso. Até ai tudo bem, mas quando eu vou exibir isso na view, eu só estou conseguindo listar os usuarios exibindo o ID de TipoAcesso e não a Descricao.

Ta saindo assim:
Nome - Email - Tipo acesso
Pablo - pv.... - 1

E eu queria que ao inves do 1 saisse "Administrador" por exemplo.

Eu tava pensando em tratar usando um mas não conseguir desenvolver o raciocinio de como relacionar com o bean de tipos.

Agradeço desde já.

listar.xhtml
<?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:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <f:view>
        <h:body>
            <ui:composition template="/app/template/templateMaster.xhtml">
                <ui:define name="content">
                    <h:form>
                        <c:if test="#{UsuarioBEAN.verificaSessao()}">
                            <p:dataTable var="itens" value="#{UsuarioBEAN.listaTodos}"
                                         paginator="true" rows="10"
                                         paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                         rowsPerPageTemplate="5,10,15">
                                
                                <f:facet name="header">
                                    <h:outputText value="Id"/>
                                </f:facet>

                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Id"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.idUsuario}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Nome"/>
                                    </f:facet>
                                    <h:commandLink action="irParaAlterar">
                                        <h:outputText value="#{itens.nome}"/>
                                        <f:setPropertyActionListener target="#{UsuarioBEAN.login}" value="#{itens}"/>
                                    </h:commandLink>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Email"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.email}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Telefone"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.ddd} #{itens.telefone}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Cargo"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.cargo}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Setor"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.setor}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Tipo Acesso"/>
                                    </f:facet>
                                    
                                    [size=18][color=red]<c:choose>
                                        <c:when test="#{itens.tipoAcesso}">
                                            <h:outputText value="teste0"/>
                                        </c:when>
                                        <c:otherwise>
                                            <h:outputText value="Vazio"/>
                                        </c:otherwise>
                                    </c:choose>[/color][/size]
                                    
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Ativo"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.ativo}"/>
                                </p:column>
                            </p:dataTable>
                        </c:if>
                    </h:form>

                </ui:define>
            </ui:composition>
        </h:body>
    </f:view>
</html>

TipoAcesso.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.pablo.entity;

/**
 *
 * @author pablosouza
 */
public class TipoAcesso {

    private Integer idTipoAcesso;
    private String nome;

    public TipoAcesso() {
    }

    public Integer getIdTipoAcesso() {
        return idTipoAcesso;
    }

    public void setIdTipoAcesso(Integer idTipoAcesso) {
        this.idTipoAcesso = idTipoAcesso;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}
TipoAcessoDAO
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.pablo.dao;

import br.com.pablo.entity.TipoAcesso;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author pablosouza
 */
public class TipoAcessoDAO extends GenericDAO{

    public List<TipoAcesso> getTodos() throws SQLException{
        ArrayList<TipoAcesso> tipos = new ArrayList<TipoAcesso>();
        String sql = "SELECT * FROM TB_TIPO_ACESSO";
        ResultSet rs = executarQuery(sql);
        while(rs.next()){
            TipoAcesso tipo = preencherDadosTipoAcesso(rs);
            tipos.add(tipo);
        }
        return tipos;
    }

    public TipoAcesso getTipoAcesso(Integer idTipoAcesso) throws SQLException{
        String sql = "SELECT * FROM TB_TIPO_ACESSO WHERE ID_TIPO_ACESSO = ?";
        ResultSet rs = executarQuery(sql, idTipoAcesso);
        TipoAcesso tipo = preencherDadosTipoAcesso(rs);
        return tipo;
    }

    public TipoAcesso preencherDadosTipoAcesso(ResultSet rs) throws SQLException{
        TipoAcesso tipo = new TipoAcesso();
        tipo.setIdTipoAcesso(rs.getInt("ID_TIPO_ACESSO"));
        tipo.setNome(rs.getString("NOME"));
        return tipo;
    }

    public String getDescricaoTipoAcesso(Integer idTipoAcesso) throws SQLException{
        String sql = "SELECT * FROM TB_TIPO_ACESSO WHERE ID_TIPO_ACESSO = ?";
        ResultSet rs = executarQuery(sql, idTipoAcesso);
        TipoAcesso tipo = preencherDadosTipoAcesso(rs);
        return tipo.getNome();
    }
}
TipoAcessoBEAN
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.pablo.bean;

import br.com.pablo.dao.TipoAcessoDAO;
import br.com.pablo.entity.TipoAcesso;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;

/**
 *
 * @author pablosouza
 */
@ManagedBean
@RequestScoped
public class TipoAcessoBEAN {

    private List<TipoAcesso> tipos = null;
    private TipoAcesso tipo = new TipoAcesso();
    private List<SelectItem> combo;


    /** Creates a new instance of TipoAcessoBEAN */
    public TipoAcessoBEAN() {
    }

    public TipoAcesso getTipo() {
        return tipo;
    }

    public void setTipo(TipoAcesso tipo) {
        this.tipo = tipo;
    }

    public List<TipoAcesso> getTipos() {
        return tipos;
    }

    public void setTipos(List<TipoAcesso> tipos) {
        this.tipos = tipos;
    }

    public List<TipoAcesso> getTodos() throws SQLException {
        return tipos = new TipoAcessoDAO().getTodos();
    }
    
    public List<SelectItem> getCombo() throws SQLException {
        if (combo == null) {
            ArrayList<TipoAcesso> setores = (ArrayList<TipoAcesso>) this.getTodos();
            combo = new ArrayList<SelectItem>();
            for (TipoAcesso tipo : setores) {
                combo.add(new SelectItem(tipo.getIdTipoAcesso(), tipo.getNome()));
            }
        }
        return combo;
    }
}
Usuario.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.pablo.entity;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Id;

/**
 *
 * @author alex
 */

public class Usuario implements Serializable {


    private Integer idUsuario;
    private String nome;
    private Integer ddd;
    private String telefone;
    private String cargo;
    private String email;
    private String senha;
    private Integer tipoAcesso;
    private String setor;
    private Integer ativo;
    private List<Acompanhamento> acompanhamentos;
    private List<Atendimento> atendimentos;


    public Usuario() {
    }

    public Integer getAtivo() {
        return ativo;
    }

    public void setAtivo(Integer ativo) {
        this.ativo = ativo;
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public Integer getDdd() {
        return ddd;
    }

    public void setDdd(Integer ddd) {
        this.ddd = ddd;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getSetor() {
        return setor;
    }

    public void setSetor(String setor) {
        this.setor = setor;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public List<Acompanhamento> getAcompanhamentos() {
        return acompanhamentos;
    }

    public void setAcompanhamentos(List<Acompanhamento> acompanhamentos) {
        this.acompanhamentos = acompanhamentos;
    }

    public List<Atendimento> getAtendimentos() {
        return atendimentos;
    }

    public void setAtendimentos(List<Atendimento> atendimentos) {
        this.atendimentos = atendimentos;
    }

    public Integer getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public Integer getTipoAcesso() {
        return tipoAcesso;
    }

    public void setTipoAcesso(Integer tipoAcesso) {
        this.tipoAcesso = tipoAcesso;
    }

}
UsuarioDAO
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.pablo.dao;

import br.com.pablo.entity.Usuario;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author alex
 */
public class UsuarioDAO extends GenericDAO {

    public UsuarioDAO() {
    }

    public void adcionarUsuario(Usuario usuario) throws SQLException {
        String query = "INSERT INTO TB_USUARIO(NOME,DDD,TELEFONE,CARGO,"
                + "EMAIL,SENHA,SETOR,TIPO_ACESSO,ATIVO) VALUES (?,?,?,?,?,?,?,?,?)";
        executarComando(query,
                usuario.getNome(),
                usuario.getDdd(),
                usuario.getTelefone(),
                usuario.getCargo(),
                usuario.getEmail(),
                usuario.getSenha(),
                usuario.getSetor(),
                usuario.getTipoAcesso(),
                usuario.getAtivo());
    }

    public void atualizarUsuario(Usuario usuario) throws SQLException {
        String query = "UPDATE TB_USUARIO SET NOME = ?,DDD = ?,TELEFONE = ?,CARGO = ?,"
                + "EMAIL = ?,SENHA = ?,SETOR = ?,TIPO_ACESSO = ?,ATIVO = ? WHERE ID_USUARIO = ?";
        executarComando(query,
                usuario.getNome(),
                usuario.getDdd(),
                usuario.getTelefone(),
                usuario.getCargo(),
                usuario.getEmail(),
                usuario.getSenha(),
                usuario.getSetor(),
                usuario.getTipoAcesso(),
                usuario.getAtivo(),
                usuario.getIdUsuario());
    }

    public void deletarUsuario(Integer idUsuario) throws SQLException {
        String query = "DELETE FROM TB_USUARIO WHERE ID_USUARIO = ?";
        executarComando(query, idUsuario);
    }

    public Usuario getUsuario(Integer idUsuario) throws SQLException {
        ResultSet rs = executarQuery("SELECT * FROM TB_USUARIO WHERE ID_USUARIO = ?", idUsuario);
        Usuario usuario = preencherDadosUsuario(rs);
        rs.close();
        return usuario;
    }

    public List<Usuario> getTodos() throws SQLException {
        ArrayList<Usuario> usuarios = null;
        ResultSet rs = (ResultSet) executarQuery("SELECT * FROM TB_USUARIO");
        if (rs.next()) {
            usuarios = new ArrayList<Usuario>();
            do {
                Usuario usuario = preencherDadosUsuario(rs);
                usuarios.add(usuario);
            } while (rs.next());
        }
        rs.close();
        return usuarios;
    }

    private static Usuario preencherDadosUsuario(ResultSet rs) throws SQLException {
        Usuario toReturn = new Usuario();
        toReturn.setIdUsuario(rs.getInt("ID_USUARIO"));
        toReturn.setNome(rs.getString("NOME"));
        toReturn.setDdd(rs.getInt("DDD"));
        toReturn.setTelefone(rs.getString("TELEFONE"));
        toReturn.setCargo(rs.getString("CARGO"));
        toReturn.setEmail(rs.getString("EMAIL"));
        toReturn.setSenha(rs.getString("SENHA"));
        toReturn.setSetor(rs.getString("SETOR"));
        toReturn.setTipoAcesso(rs.getInt("TIPO_ACESSO"));
        toReturn.setAtivo(rs.getInt("ATIVO"));
        return toReturn;
    }

    public boolean isExiste(Usuario usuario) throws ClassNotFoundException, SQLException {
        ResultSet rs = (ResultSet) executarQuery("SELECT * FROM TB_USUARIO WHERE EMAIL = ? AND SENHA = ?",
                usuario.getEmail(),
                usuario.getSenha());
        if (rs.next()) {
            preencherDadosUsuario(rs, usuario);
            return true;
        }
        return false;
    }

    private static Usuario preencherDadosUsuario(ResultSet rs, Usuario toReturn) throws SQLException {
        toReturn.setIdUsuario(rs.getInt("ID_USUARIO"));
        toReturn.setNome(rs.getString("NOME"));
        toReturn.setDdd(rs.getInt("DDD"));
        toReturn.setTelefone(rs.getString("TELEFONE"));
        toReturn.setCargo(rs.getString("CARGO"));
        toReturn.setEmail(rs.getString("EMAIL"));
        toReturn.setSenha(rs.getString("SENHA"));
        toReturn.setSetor(rs.getString("SETOR"));
        toReturn.setTipoAcesso(rs.getInt("TIPO_ACESSO"));
        toReturn.setAtivo(rs.getInt("ATIVO"));
        return toReturn;
    }
}
UsuarioBEAN
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.pablo.bean;

import br.com.pablo.dao.TipoAcessoDAO;
import br.com.pablo.dao.UsuarioDAO;
import br.com.pablo.entity.Usuario;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author alex
 */
@ManagedBean(name="UsuarioBEAN")
@SessionScoped
public class UsuarioBEAN {

    private Usuario login = new Usuario();
    private List<Usuario> usuarios;
    private String descricaoTipoAcesso = "";

    public List getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(LinkedList usuarios) {
        this.usuarios = usuarios;
    }

    public Usuario getLogin() {
        return login;
    }

    public void setLogin(Usuario login) {
        this.login = login;
    }

    /** Creates a new instance of UsuarioBEAN */
    public UsuarioBEAN() {
        if (login == null) {
            login = new Usuario();
        }
    }

    public String verificaLogin() throws SQLException, ClassNotFoundException {
        UsuarioDAO dao = new UsuarioDAO();

        if (dao.isExiste(login)) {
            return "irParaIndex";
        }
        return "refresh";
    }

    public boolean verificaSessao() {

        if (login.getEmail() == null) {
            return false;
        } else {
            return true;
        }
    }

    public List<Usuario> getListaTodos() throws SQLException {

        return this.usuarios = new UsuarioDAO().getTodos();

    }

    public String cadastrar() throws SQLException {
        UsuarioDAO dao = new UsuarioDAO();

        dao.adcionarUsuario(login);
        return "irParaListar";
    }

    public String alterar() throws SQLException {
        UsuarioDAO dao = new UsuarioDAO();

        dao.atualizarUsuario(login);
        return "irParaListar";
    }

    public String excluir() throws SQLException {
        UsuarioDAO dao = new UsuarioDAO();

        dao.deletarUsuario(login.getIdUsuario());
        return "irParaListar";
    }

    public String getTipoAcesso() throws SQLException {
        return descricaoTipoAcesso = new TipoAcessoDAO().getDescricaoTipoAcesso(login.getTipoAcesso());
    }

}

4 Respostas

P

antes de enviar pra view transforma o 1 em administrador no seu controller… ex: (o que vc ta enviando pra view com o valor).replace(“1”,“Administrador”);

c nao form String… é so da um .toString()

pvrsouza

Pedro_GTI:
antes de enviar pra view transforma o 1 em administrador no seu controller… ex: (o que vc ta enviando pra view com o valor).replace(“1”,“Administrador”);

c nao form String… é so da um .toString()

O problema disso é que se eu mudar o registro no banco eu teria que mudar essa regra entende? Minha intenção é puxar essa informação do banco. :slight_smile:

ctdaa

Se não estou enganado, basta você sobrescrever o método toString nas suas classes de entidade TipoAcesso.java e Usuario.java retornando o valor que você quiser mostrar. No caso de TipoAcesso você retorna a descrição. Está mostrando o código porque este é o default do método toString na implementação do framework.

P

Cara… é so vc pegar o dado do banco e modificar ele para view… vc nao precisa alterar ele no banco é so pra mostrar pro usuario…

Criado 23 de novembro de 2010
Ultima resposta 23 de nov. de 2010
Respostas 4
Participantes 3