Archive for September 20th, 2006

Você acha desenvolver aplicações Swing uma tarefa chata, complicada, difícil, de fato esta tarefa se torna extremamente simples usando a porção cliente do Genesis Framework, no caso o Genesis Binder.

O binder é o mecanismo que torna o processo de visualização e controle dos dados em duas vias (two-way), ou seja, o que você altera, opera na interface visual, estará automaticamente se comunicando com o objeto que você de fato quer operar.

Em palavras mais simples seus usuários dos seus sistemas, verão as interfaces Swing como DE FATO apenas uma interface de acesso a informações, fazendo com que haja a real e total separação de lógica de negócios e visualização.

Vamos a um exemplo simples, vamos criar uma interface gráfica para gerenciar nossos DVDs, ou quem sabe até o controle de nossa locadora pessoal.

Conceitos do Genesis

O Genesis é um framework que visa tornar o desenvolvimento de soluções algo simples, escondendo toda a complexidade muitas vezes necessárias nas aplicações Java. O intuito do Genesis é fazer com que programadores Java tenham a mesma preocupação que em outras plataformas como .Net, Delphi, ou seja: Quase nenhuma, com o grande diferencial de oferecer soluções testadas e aprovadas por vários clientes do mercado.

POJO

Plain Old Java Objects, ou beans (como eu aprendi), representam nossas mais puras abstrações dos simples objetos do mundo real.

Genesis Form

Esse Objeto pode ser encarado por dois pontos de vista:

Programadores Struts - É como se fosse um Form do Struts, lembre-se que no Struts nem sempre a representação deste form representava o Bean, na essencia de seus atributos, em todo o caso as informações seriam depositadas e persistidas nos Beans de alguma forma. Além de informações para irem pro Bean, os métodos(ações) são representadas como métodos acessíveis para a interface Gráfica(DispathAction).

Programadores Java Server Faces - Para estes programadores podem observar o Genesis Form como o BackingBean, que geralmente pode extender o POJO, adicionando métodos de atividade(ações) que poderão ser acessíveis nas interfaces via tags JSF.

Como Java Server Faces é um framework recente e que várias pessoas estão aprendendo vou usar a visão JSF por enquanto.

Criando o POJO: Filmes

Veja a código fonte da classe Filmes.java :
[java]
package br.com.summatech.filmes.pojo;
import br.com.summatech.atores.Ator;
import java.util.List;
public class Filme {
private Integer codigo;
private String nome;
private String sinopse;
private String comentarios;
private List atores; // gere seus Gets e Sets por favor
[/java]
Observe que partimos do velho e simples POJO. Agora vamos criar o form, baseado na estratégia BackingBean:

[java]

package br.com.summatech.filmes.form;

import br.com.summatech.filmes.pojo.Filme;
import net.java.dev.genesis.annotation.Action;
import net.java.dev.genesis.annotation.EnabledWhen;
import net.java.dev.genesis.annotation.Form;
@Form

public class FilmeForm extends Filme{
@Action
public void salvar() {
System.out.println
(”Binder pra o objeto filme ” + this.toString() + “n Realizado com sucesso!”);

} } [/java]

Observe que esta classe apenas extendeu o pojo Filme, temos duas anotações:

-Form: diz que essa classe será tratada como um Form para o Genesis
-Action : diz que esse método é uma ação do Form

Criando a UI

Você pode usar várias alternativas, entre elas:

- JGoodies
- NetBeans Matisse

O JGoodies é definitivamente interessante, mas o Netbeans matisse de fato nos dá a produtividade em Java a mesma de ambientes como do Visual Studio ou Delphi.
Se você usar NetBeans crie um novo JFrame, e adicione:

-3 Labels (Nome, Sinopse e Comentárrios como rótulos respectvos)
-3 JTextFields (com a propriedade nome (setName(”xxx”) respectivamente: nome, sinopse, comentarios).
-1 JButton (label: Salvar nome “salvar”)

Promovendo a Ligação da UI e Form via o Genesis BinderObserve apenas a anotação ViewHandler , e no construtor do JFrame nós instanciamos o Binder e o Form respectivo, e após a chamada que o NetBeans gera o método initComponents(), que inicializa todos os componentes, nós ligamos o objeto form a intancia do JFrame via o SwingBinder. No final inicializamos o binder.Pronto, apenas isso, seja 3 campos, ou 200, você terá ligado seus componentes visuais aos componentes de Regras(Forms), e estes por suas vez podem se ligar a qualquer modelo de persistencia: JPA, Hibernate, JDBC ou qualquer outro.

Bibliotecas Requeridas pro Exemplo

No Geneis use a priori todos os .jars na pasta dist, além dos jars da pasta /lib/scripts , todos os commons /lib/commons e o jackpot145.jar

O Binder do Genesis

Se você usa SWT ou Thinlet, você também pode usar todas essa funcionalidades.

Download da ultima versão estável do Genesis

Vá até o site http://genesis.dev.java.net