Problemas de conversão de dados no MVC

12 respostas
fabiomattes2007

Pessoal estou uma duvida a respeito de conversão de dados no Model View Controller

Tenho a seguinte estrutura:

openConnection = faz a conexão com o banco mysql;

genericDao = onde eu criei as funções de salvar, excluir e alterar;

clienteDao = herdei da classe genericDao;

cliente = é o model da aplicação onde se encontra os getters e setters;

clienteController = onde faço a relação entre a interface grafica e o clienteDao;

frmCadCli = a interface grafica.

o meu problema ocorre justamente na relação entre o controller e a interface gráfica.

trecho do código clienteController:

[b]public void alterar(long id, String nome, String endereco, String bairro, String cidade, String uf, String telefone, String fax,
            String celular, String cpfcnpj, String rginsc, Boolean ativo, String pessoa, String datacadastro, String obs, String cep) throws SQLException, ParseException {[/b]
        Cliente cliente = new Cliente();
        cliente.setNomerazao(nome);
        cliente.setEndereco(endereco);
        cliente.setBairro(bairro);
        cliente.setCidade(cidade);
        cliente.setUf(uf);
        cliente.setTelefone(telefone);
        cliente.setFax(fax);
        cliente.setCelular(celular);
        cliente.setCpfcnpj(cpfcnpj);
        cliente.setRginsc(rginsc);
        cliente.setAtivo(ativo);
        cliente.setPessoa(pessoa)       ;
        cliente.setDatacadastro(formatarData(datacadastro));
        cliente.setObs(obs);
        cliente.setCep(cep);

        new ClienteDao().alterar(cliente);
    }

notaram que eu tenho alguns parametros String, ai que se encontra o trouble, agora vejam um trecho da minha classe Visual:

private void onClickAlterar(){
        ClienteController cc = new ClienteController();
        long id = clienteList.get(registroAtual).getId();
        try {
            [b]cc.alterar(id, dbNomeRazao.getText(), dbEndereco.getText(), dbBairro.getText(), dbCidade.getText(), lbUf.getSelectedItem(), dbTelefone.getText(),
                    dbFax.getText(), dbCelular.getText(), dbCpf.getText(), dbRg.getText(), cbAtivo.isSelected(), lbPessoa.getSelectedItem(), dbDataCadastro.getText(), taObs.getText(), dbCep.getText());[/b]
            JOptionPane.showMessageDialog(this, "Cliente alterado com sucesso!");
            clearFields();
            clienteList = new ClienteController().ListaClientes();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Não foi possível alterar o cliente!\n" + e.getLocalizedMessage());
        } catch (ParseException e) {
            JOptionPane.showMessageDialog(this, "Data possui formato inválido!\n" + e.getLocalizedMessage());
        }
    }

O problema se encontra nas partes marcadas em negrito.

Minha dúvida é como converter esse valores do form de cadastro para o meu controller?

12 Respostas

ivandasilva

Você esta usando algum framework ? Se não estiver, eu acredito que vc terá que pegar os dados passados na sua View e criar um objeto e assim vc passa o Objeto nos seus métodos e faz ele tramitar entre as camadas ao invés de passar um monte de parametros.

Se eu não me engano esse é um pattern antigo chamado de TO(transfer object) ou também VO(value object).

fabiomattes2007

ivandasilva:
Você esta usando algum framework ? Se não estiver, eu acredito que vc terá que pegar os dados passados na sua View e criar um objeto e assim vc passa o Objeto nos seus métodos e faz ele tramitar entre as camadas ao invés de passar um monte de parametros.

Se eu não me engano esse é um pattern antigo chamado de TO(transfer object) ou também VO(value object).

Um detalhe que esqueci de mencionar, estou usando em aplicação swing para Desktop.

Certo, você sabe saberia me indicar algum link ou material de estudos sobre TO ou VO? É que ainda to começando nessa parte de MVC.

ivandasilva

http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject.html

http://www.guj.com.br/java/28889-como-usar-transfer-object-

Você não respondeu, esta usando algum framework, tipo Struts, porque caso não esteja usando o seu Controller será o Servlet…

fabiomattes2007

ivandasilva:
http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject.html

http://www.guj.com.br/java/28889-como-usar-transfer-object-

Você não respondeu, esta usando algum framework, tipo Struts, porque caso não esteja usando o seu Controller será o Servlet…

hehehe desculpe, não estou usando nenhum framework. Nada de web só swing.

ivandasilva

Tranquilo !! :wink:

fabiomattes2007

Tava dando uma olhada e vou ver se uso o hibernate. Me parece que facilita bem o trabalho.

ivandasilva

Hibernate com MVC vai funcionar apenas na sua camada mais baixa(DAO)…

fabiomattes2007

Não achou uma boa idéia? o que você me sujere?

ivandasilva

O Hibernate vai te ajudar com certeza, mas, ele não vai ser um framework para tratar as camadas MVC e sim apenas uma parte. Se você esta começando a mexer com MVC, começe sem framework, depois começe a usar frameworks, sendo que estes existem mais para a parte cliente-servidor. Como exemplos tem o JSF,SpringMVC e Struts…

Se você não sentir dificuldade em lidar com o Hibernate e já conhece bem JDBC é bom investir sim, esta é minha opnião…

fabiomattes2007

ivandasilva:
O Hibernate vai te ajudar com certeza, mas, ele não vai ser um framework para tratar as camadas MVC e sim apenas uma parte. Se você esta começando a mexer com MVC, começe sem framework, depois começe a usar frameworks, sendo que estes existem mais para a parte cliente-servidor. Como exemplos tem o JSF,SpringMVC e Struts…

Se você não sentir dificuldade em lidar com o Hibernate e já conhece bem JDBC é bom investir sim, esta é minha opnião…

Legal, então, agora fica aquele dilema, Desktop ou Web? Pelo que andei vendo na net as aplicações web são as mais usadas, mas não vejo muita vantagem em se ter apenas a aplicação web.

ivandasilva

Eu também acho melhor a tech cliente-servidor porque a aplicação fica disponível a nível de rede. Em uma app standalone você terá que instalar/configurar a app em cada máquina que for usar, além de que na minha concepção nós temos que seguir o mercado e este esta voltado para a WEB

P

Primeiro é que “duvida a respeito na conversão de dados no Model View Controller” não existe, o que há é duvida no uso das APIs do Java, vc ta desenvolvendo usando java puro com inteface desktop(Swing ou AWT), trabalho com web e só usei java desktop quando fiz o curso de java então não lembro de quase nada mas concerteza o seu metodo do seu controller tem que receber um objeto do evento disparado. Tem um monte de tutoriais aqui no GUJ sobre Swing e tbm use o netbens para desenvolver a inteface grafica.

Criado 14 de março de 2011
Ultima resposta 15 de mar. de 2011
Respostas 12
Participantes 3