Pessoal, postei essa dúvida na lista de discussão do Framework, mas acredito que a galera esteja muito ocupada por lá. Vou repetir meu POST aqui, e se alguem puder ajudar, fico muito grato!!!
Participo do desenvolvimento de uma aplicação de automação comercial, e uma parte dela será Desktop, com Swing.
Como a aplicação não será somente isto, dividimos ela em várias projetos, sendo o da interface Desktop um deles.
Um dos projetos refere-se somente as entidades de classe, e alguns helpers relacionados. Estamos usando JPA + Hibernate( Annotations ) para persistência, e também a pattern de DAOS.
Bom, desculpem por todo o rodeio até aqui, mas achei que poderia ser de ajuda quanto a minha dúvida.
Sou iniciante em Java, este é de fato meu primeiro projeto na Linguagem. Trabalhava somente com PHP antes, mas estou lendo muito :)…
Todavia, ja li bastante coisa na documentação do Genesis, e preciso utilizá-lo quase que exclusivamente para BINDs ( também vou estudar as funcionalidades para validações, etc ), pois quero bindar meus Beans de entidade, e assim, ter uma gerência mais simples da Interface, sem precisar ficar alimentando interface/bean, bean/interface, etc.
Pelo que vi, o Genesis pode bindar classes @Form, devidamente encapsuladas. Porém, eu não gostaria de anotar minhas entidades de classe com @Form, para não misturar as bolas. Essas entidades serão utilizadas por outros projetos, e não gostaria de misturar as coisas.
Eu gostaria de saber, se posso ter uma classe intermediaria entre a minha de entidade, sem ter que copiar os métodos que a entidade têm, diretamente para esta classe, e bindar as propriedades da entidade, através de outra, exemplo:
// Classe de representacao de entidade ( Mapeada via JPA )
@Entity
Class EntidadeX {
private String nome;
private String sobrenome;
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
//... Encapsulamento de sobrenome tb....
}
// Classe para representar o form Genesis
@Form
Class EntidadeContainer {
private EntidadeX entidade;
public EntidadeContainer(EntidadeX entidade) {
this.entidade = entidade;
}
private void setEntidade(EntidadeX entidade) {
this.entidade = entidade;
}
public EntidadeX getEntidade() {
return this.entidade;
}
@Action
public void metodoX() {
....
}
}
Dessa forma, eu poderia manter as entidades sem anotacoes do Genesis, e nao precisaria copiar implementar os metodos da mesma em uma classe Form.
Minha intenção, é mapear a classe da seguinte maneira
SwingBinder binder = new SwingBinder(this, new EntidadeContainer(entidade));
binder.bind();
// E nos componentes swing
JTextField nome = new JTextField();
username.setName("entidade.nome");
JTextField sobrenome = new JTextField();
sobrenome.setName("entidade.sobrenome");
Da mesma forma que podemos bindar Beans via JSF, dentro de um controler. Via get, retornar entidade, e usar o get/set de entidade para as propriedades.
Ficaria fantástico poder mapear dessa forma, pois assim, eu ainda poderia usar o form para as Actions, e deixar minhas telas totalmente MVC.
Me desculpem pelo email meio grande. Realmente estou muito empolgado para usar esse framework tão bem falado, e ainda por cima brasileiro. Tenho certeza que ele vai aumentar e muito a qualidade do nosso software.
Aprecio qualquer ajuda, ou dicas, inclusive de boas praticas, principalmente se este modelo que estou imaginando nao for o mais recomendado/funcional.
Muito obrigado pela atenção!