Retornando valores da camada Controle

2 respostas
lLeandro

[list]Galera boa tarde,

Sou novo por aqui e em Java, se alguém puder está me ajudando seria muito grato...

Minha dúvida é o seguinte, tenho um evento do botão Pesquisar dentro da minha classe View[/list]
btnPesquisar.addActionListener(new ActionListener() {			
			public void actionPerformed(ActionEvent e) {	
				
				try {
					consulta(c);
				} catch (ParseException e1) {
					e1.printStackTrace();
				}
			}
		});
	}
private void consulta()throws ParseException{
		ClientePFControle cc = new ClientePFControle();
		Cliente c = new Cliente();		
		try {			
					
					txtNacionalidade.setText(c.getNacionalidade());
					txtNome.setText(c.getNomeCompleto());
					txtSexo.setText(c.getSexo());
					txtDataNascimento.setText(c.getDataNascimento());
					txtCPF.setText(c.getCpf());
					txtRG.setText(c.getRg());
					txtEstado.setText(c.getEstadoEmissor());
					txtTelefone.setText(c.getTelefone());
					txtCNH.setText(c.getCnh());
					txtValidade.setText(c.getValidade());
					txtCategoria.setText(c.getCategoriaHabilitacao());
					txtEndereco.setText(c.getEndereco());
					txtEmail.setText(c.getEmail());
					txtPassaporte.setText(c.getPassaporte());

		} catch (NullPointerException e) {
			JOptionPane.showMessageDialog(this,
					"Cliente não localizdo ou não existe!\n"
							+ e.getLocalizedMessage());
		}
	}

E na minha camada Controle eu não sei como faço para carregar os valores da minha Model.
Segundo meu professor a minha View não pode enxegar a minha Model, que é o que eu estou fazendo
instânciando um novo Cliente() que é a minha camada Modelo.

2 Respostas

Nicolas_Fernandes

Fala, Leandro!

Não vejo problema algum a view enxergar o model. Particularmente, minhas arquiteturas são montadas assim: minhas classes de visão enxergam as classes de domínio e as classes de serviços. As classes de persistência são transparentes ao usuário.

Mas enfim, você pode fazer da seguinte forma: crie um Map onde você adiciona os valores que você quer e passa pro seu controller. Assim, sua visão não enxergará seu modelo, respeitando a arquitetura que você usa.

btnPesquisar.addActionListener(new ActionListener() {             
    public void actionPerformed(ActionEvent e) {       
           
        try {   

            // preencho um Map com os dados da sua View.
            Map<String, Object> dados = new HashMap<String, Object>();
            dados.put("nacionalidade", "brasileira");   
            dados.put("nomeCompleto", "Zé das Couves");   
            dados.put("sexo", "M");   
            dados.put("dataNascimento", "31/12/1980");   
            dados.put("cpf", "[CPF removido]");   
            dados.put("rg", "15.785.945-33");  

            // Valido-os...
            SuaClasseDeControle.valida(dados);


            // ou consulto-os, recebendo um Map de dados do controle...
            dados = SuaClasseDeControle.consulta();
            // preenchendo os controles do formulário com esses valores!
   
            textfieldNome.setText(String.valueOf(dados.get("nomeCompleto")));
            textfieldRG.setText(String.valueOf(dados.get("rg"));

        } catch (ParseException e1) {   
            e1.printStackTrace();   
        }   
    }   
});
E a classe de controle...
public class SuaClasseDeControle {

// Você pode receber os dados, adicionar em um objeto e validá-los...
public static void valida(Map<String, Object> dados) throws ParseException {
   
    ClientePFControle cc = new ClientePFControle();   
    Cliente c = new Cliente();         
    try {             
                   
                c.setNacionalidade(dados.get("nacionalidade"));   
                c.setNomeCompleto(dados.get("nomeCompleto"));   
                c.setSexo(dados.get("sexo"));   
                c.setDataNascimento(dados.get("dataNascimento"));   
                c.setCpf(dados.get("cpf"));   
                c.setRg(dados.get("rg"));   
                //...

                cc.fazAlgumaCoisa(c);
  
    } catch (NullPointerException e) {   
        JOptionPane.showMessageDialog(this,   
                "Cliente não localizdo ou não existe!\n"   
                        + e.getLocalizedMessage());   
    }   
}

// ou consulta os dados e retorna em um Map!
public static void consulta() throws SQLException {

    // só um exemplo...
    Cliente c = ClienteDAO.consultaClientePorID(1);
    Map<String, Object> dados = new HashMap<String, Object>();
   
    dados.put("nomeCompleto", c.getNomeCompleto());
    dados.put("rg", c.getRG());
    //...


    return dados;
}
}

Qualquer coisa, se não entender, continue perguntando!
Espero ter ajudado, fica com Deus, abraço!

lLeandro

[list]Obrigado Nicolas!

deu certo!
Valeu mesmo pela Ajuda!

Fica com Deus![/list]

Criado 25 de setembro de 2011
Ultima resposta 1 de out. de 2011
Respostas 2
Participantes 2