Retornar tipos diferentes com um método

6 respostas
L

Fala Galera.

Estou apanhando um pouco da Orientação a Objetos e da lógica, sou iniciante ainda e tenho muitas duvidas.

Seguinte, faço a validação de login e senha de um usuario na tela inicial(tela de login) essa validação retorna um tipo boolean.

A partir daí que entra a duvida em questão, Obviamente todo sistema só deve responder a requisições daquele determinado usuario.

Por exemplo: ao realizar uma busca por funcionarios, ele deve encontrar somente funcionarios da empresa dele mesmo(sendo que o sistema é multi-empresas).

A minha logica diz que devo ao validar o login chamar um novo método que buscaria novamente no BD por esse usuario, preencher uma lista com os dados do mesmo e assim usa-lo conforme as necessidades fossem surgindo.

Mas alguma coisa me diz que é desnessario realizar essa mesma busca duas vezes, ou seja, uma para validar o login e outra para listar os dados do susario.

O problema é que, de que maneira eu deveria fazer para que apenas um método se encarregue de devolver um tipo boolean e uma lista ???

Alguém tem alguma sugestão ???

Valeu

6 Respostas

pedruhenrik

“EU” acrescentaria um atributo booleano “logado”, retornaria o objeto “Usuario” e tipo manteria esse cara na sessão,memória seja la o q for e dai p/ frente trabalharia direto com ele.

ñ sei se é a melhor forma.

att,

drsmachado

Não tem como.
Você está bem confuso, mesmo.
Independente do que você pegue do banco ou jogue lá num método, o tipo de retorno dele pode ser totalmente diferente do que foi processado.
Exemplo, considere um método soma, que recebe dois inteiros como parâmetro.
A primeira impressão, ele deve retornar um inteiro, resultado da soma dos dois.
Mas você pode fazer o método retornar o que quiser

public Exception exc(int a, int b){
        a += b;
        return new Exception();
    }

Viu só?

Enfim, você pode declarar esta lista como sendo um atributo da classe (fora de qualquer método) e então, preenchê-la neste método. Se o usuário acertar login e senha, retorna true e mantém a lista, senão, retorna false e limpa a mesma.

L

Pois é cara, de fato estou confuso.

Mas já imaginava que isso não seria possível, queria apenas uma idéia de como realizar esse objetivo de forma inteligente, assim como a ideia que vc me sugeriu.

Mas vamos lá, vamos ver se consegui sacar sua ideia corretamente:

Criei uma variavel na classe do tipo Lista, e a preencho dentro do método, dessa forma;

private List<amk_contato> lista;

	public List validarLogin(String usuario, String senha) {

		List<amk_contato> contatos = contatosDAO.validarLogin(usuario, senha);
		for (amk_contato amkContato : contatos) {
			String contato_usuario = amkContato.getContato_usuario();
			String contato_senha = amkContato.getContato_senha();

			if (usuario.equals(contato_usuario) && senha.equals(contato_senha)) {
				lista = contatos;
			}
		}

		return lista;

	}

Seria mais ou menos dessa forma ???

drsmachado

Você pode até fazer melhor, na query de consulta, fazer com que ele só traga a lista caso o login e a senha sejam válidos…

drsmachado

A propósito, se o teu método de consulta da DAO retorna um list, de onde você tira os dados para comparar usuário e senha (pelamordeDeus, não me insira eles na List…)?

L

hahahaha pega leve ae brother, ainda to pegando as manhas muitos conceitos eu ainda preciso aprender e compreender.

Mas sim, o método que o meu DAO retorna é um list. ou seja, está retornando usuario e senha junto com a List;

Qual seria uma outra forma de tratar isso???

que tipo de método poderia usar???

Criado 2 de junho de 2011
Ultima resposta 2 de jun. de 2011
Respostas 6
Participantes 3