Get Entidades + get Enum

11 respostas
juniorsatanas

Pessoal estou querendo pegar de uma entidades usuario e senha, e jogar na sessão , e pegar de um ENUM o perfil.

Entidade Usuario ------------- usuario e senha
TipoPerfil------------ perfil

package com.wbotelhos.controller;

import br.com.caelum.vraptor.Get;
import javax.servlet.http.HttpSession;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;

import com.wbotelhos.model.Usuario;
import com.wbotelhos.common.TipoPerfil;

@Resource
public class IndexController {

	private HttpSession session;

	public IndexController(HttpSession session) {     //HttpSession
                               this.session = session;
	}
        @Get
	@Path("/")
	public void index() {
		session.setAttribute("user", this.getUsuario());
	}
        
//********************************************************************AQUI eu quero pegar da ENUM o perfil !*******************************************************
	private Usuario getUsuario() {
		Usuario entity = new Usuario();
		entity.setNome("Washington Botelho");
		entity.setPerfil(TipoPerfil.ADMINISTRADOR);
		return entity;
	}

}
package com.wbotelhos.common;

import java.util.ArrayList;
import java.util.Collection;

public enum TipoPerfil {

	USUARIO, ADMINISTRADOR, AUDITOR, DIRETOR, PRESIDENTE, PROGRAMADOR,GERENTE;

	public static Collection<TipoPerfil> loadAll() {

		Collection<TipoPerfil> perfilList = new ArrayList<TipoPerfil>();

		for (TipoPerfil item : values()) {
			perfilList.add(item);
                        
		}
                
		return perfilList;
	}

}
public class Usuario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;
    @Column(name = "email", length = 255)
    private String email;
    @Column(name = "nome", length = 255)
    private String nome;
    @Column(name = "senha", length = 255)
    private String senha;

    private TipoPerfil perfil;  // pegando perfil (TipoPerfil.java)
    
    public Usuario() {
    }

    public Usuario(Long id) {
        this.id = id;
    }

get/set

11 Respostas

Lucas_Cavalcanti

e qual é o problema? o que está acontecendo de errado? pq vc não consegue colocar o TipoPerfil no usuario?

juniorsatanas
# //********************************************************************AQUI eu quero pegar da ENUM o perfil !*******************************************************  
#     private Usuario getUsuario() {  
#         Usuario entity = new Usuario();  
#         entity.setNome("Washington Botelho");  
#         entity.setPerfil(TipoPerfil.ADMINISTRADOR);  
#         return entity;  
#     }

não sei como fazer o select pegando Usuario e Senha da Entidade e o perfil do ENUM... não tenho ideia como vai ficar !

Lucas_Cavalcanti

select no banco de dados ou do html?

juniorsatanas

No Banco de dados ! e no Enum !

Lucas_Cavalcanti

anote o campo com:

@Enumerated(EnumType.STRING)
juniorsatanas

Como ficaria meu <select id="perfil"> para a o Enum ?

&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;LOGIN&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;form action="&lt;c:url value='/login'/&gt;" method="post"&gt;
			E-mail: &lt;input type="text" name="usuario.email"/&gt;<br/>
			Senha: &lt;input type="password" name="usuario.senha"/&gt;<br/><br/>
                        &lt;td&gt;
				&lt;label&gt;Perfil:&lt;/label&gt;
			&lt;/td&gt;
			&lt;td&gt;
				&lt;select id="perfil"&gt;
					&lt;option value=""&gt;Selecione o Perfil&lt;/option&gt;
					&lt;option value="ADMINISTRADOR"&gt;ADMINISTRADOR&lt;/option&gt;
					&lt;option value="USUARIO"&gt;USUARIO&lt;/option&gt;
                                        &lt;option value="GERENTE"&gt;GERENTE&lt;/option&gt;
				&lt;/select&gt;
			&lt;/td&gt;
			&lt;input type="submit" value="Acessar"/&gt;
		&lt;/form&gt;
	&lt;/body&gt;
&lt;/html&gt;
Lucas_Cavalcanti
<c:if test="${usuario.perfil eq 'ADMINISTRADOR'}">
algo interessante
</c:if>
juniorsatanas

Valeu lucas !Daqui acho que já da pra fazer !

Obrigado !

jr

juniorsatanas

Lucas pintou uma dúvida meio Principiante !

Seguinte:

[img]http://lh6.ggpht.com/_nTzBoYSeT2I/TO-jwWtFSwI/AAAAAAAAENg/2IFhiwlyfXo/s720/botelho.png[/img]

Na minha tela de LOGIN, o usuário vai escolher SEU PERFIL, vai digitar um email e uma senha, ele vai ser validado com esses dados vindo do banco , mas o perfil ele pega da classe PERFIL, que
public enum TipoPerfil {

	USUARIO, ADMINISTRADOR, AUDITOR, DIRETOR, PRESIDENTE, PROGRAMADOR,GERENTE;

Pois Bem, com esta anotação : @Permissao({TipoPerfil.ADMINISTRADOR}) eu posso setar o perfil que eu quiser, para usuárioController/dministradoController/ etc..

ex:
@Post
	@Path("/adicionar")
	@Permissao({TipoPerfil.ADMINISTRADOR})
	public void adicionar(Usuario usuario) {
		result.include("msg", "Usuário adicionado com sucesso!");

A minha dúvida é : IndexController, pois nela eu pego o PERFIL direito da classe assim:

private Usuario getUsuario() {
		Usuario entity = new Usuario();
		entity.setPerfil(TipoPerfil.ADMINISTRADOR);
		return entity;
	}

Eu queri pegar esse perfil do combobox, na hora da validação, RESUMINDO : quando o cara logar eu pego login e senha e perfil, se tiver login e senha correto ele anota o perfil e redireciona o usuario para a pasta de páginas JSP.

Admin Usuario Gerente Diretor etc.. NÃO ESTOU CONSEGUINDO FAZER ISSO ! mas a lógica da coisa eu já sei toda ! Meu login.JSP ta assim:
&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;LOGIN&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;form action="&lt;c:url value='/login'/&gt;" method="post"&gt;
			E-mail: &lt;input type="text" name="usuario.email"/&gt;<br/>
			Senha: &lt;input type="password" name="usuario.senha"/&gt;<br/><br/>
                        &lt;td&gt;
				&lt;label&gt;Perfil:&lt;/label&gt;
			&lt;/td&gt;
			&lt;td&gt;
				&lt;select id="perfil"&gt;
					&lt;option value=""&gt;Selecione o Perfil&lt;/option&gt;
					&lt;option value="ADMINISTRADOR"&gt;ADMINISTRADOR&lt;/option&gt;
					&lt;option value="USUARIO"&gt;USUARIO&lt;/option&gt;
                                        &lt;option value="GERENTE"&gt;GERENTE&lt;/option&gt;
				&lt;/select&gt;
                              &lt;c:if test="${usuario.perfil eq 'ADMINISTRADOR'}"&gt;

                              &lt;/c:if&gt;
			&lt;/td&gt;
			&lt;input type="submit" value="Acessar"/&gt;
		&lt;/form&gt;
	&lt;/body&gt;
&lt;/html&gt;
meu indexController:
package com.wbotelhos.controller;

import br.com.caelum.vraptor.Get;
import javax.servlet.http.HttpSession;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;

import com.wbotelhos.model.Usuario;
import com.wbotelhos.common.TipoPerfil;

@Resource
public class IndexController {

	private HttpSession session;

	public IndexController(HttpSession session) {     //HttpSession
                               this.session = session;
	}
        @Get
	@Path("/")
	public void index() {
		session.setAttribute("user", this.getUsuario());

	}
        

	private Usuario getUsuario() {
		Usuario entity = new Usuario();
                entity.setPerfil(TipoPerfil.ADMINISTRADOR);
		return entity;
	}

}

Intendeu ?

Lucas_Cavalcanti

não entendi…

de qqer forma, vc deveria colocar no select:

<select name="usuario.perfil" id="perfil">

assim o perfil vai ser populado no usuario

juniorsatanas

obrigado lucas !

Criado 26 de novembro de 2010
Ultima resposta 2 de dez. de 2010
Respostas 11
Participantes 2