Mais um projeto disponibilizado: jazz 1.0-SNAPSHOT (por enquanto!). O Jazz já é um velho conhecido da Ínsula T.I. e de outros desenvolvedores que tiveram a oportunidade de nos conhecer.
Tudo começou com a chatice de montar uma tela em Swing e declarar todos os campos (JTextField, JLabel, JList, JComboBox etc). Em seguida os beans do modelo (na época já usávamos o Hibernate) e a tediosa conversão/validação de um lado para o outro. Os Controllers davam muito trabalho. Funcionava assim:
String nome = nomeField.getText();
if ("".equals(nome)) {
//erro de validação
} else {
pessoaFisica.setNome(nome);
}
Agora imaginem ficar digitando tudo isso para beans com 20 propriedades! Era óbvio que haveria algum modo melhor de executar essas tarefas. E ainda havia o contrário: pegar as propriedades do Model e colocá-las de volta na View.
No Jazz atual pode-se resolver este problema assim:
(Na View):
public class View {
@Binding(beanType=Controller.class, property="pessoaFisica.nome")
private JTextField nomeField = new JTextField();
@Binding(beanType=Controller.class, property="pessoaFisica.endereco.cidade")
private JList cidadeList = new JList();
}
(No Controller):
@Controller
public class Controller {
private PessoaFisica pessoaFisica = new PessoaFisica();
public void salvarPessoa() {
//aqui dentro todas as propriedades de pessoaFisica já foram atualizadas com as propriedades
//de nomeField e cidadeList.
}
//depois que o método é finalizado, todas as propriedades que possuem "binding" de pessoaFisica são
//atualizadas de volta em nomeField e cidadeList.
}
Melhorou, não? Tudo isso utilizando Annotations, e o framework de AOP do Spring 2.5. Ainda está na versão 1.0-SNAPSHOT porque estamos testando e verificando se ficou algum bug para trás. Também falta a documentação (coisa chata de se fazer), pois ainda não encontramos a ferramenta adequada para isso… estou pensando em utilizar o Confluence.