Ola a todos
Gostaria de começar uma discussão sobre melhor forma de se usar o swingbean e o HibernateAnnotations.
Inicialmente pensei em colocar os Beans (que também correspondem as entidades para usar o Hibernate Annotations) no model, e lógicamente no View tem os JBeanPanels,
porém pelo que conheço do MVC a View não tem que ter uma ligação tão direta com o model (se é que entedi direito), logo pensei em criar no Control os métodos getters e setters que populariam as entidades dessa forma o swingbean se ligaria ao control e o control manipularia os dados popularia os beans da forma como fosse necessária.
Mas quando pensei mais um pouco me ocorreu que o model deve implementar o Observer para notificar controller e View de que foi alterado.
E nisso me perdi completamente
não quero q minha interface se comunique com a entidade diretamente, pois tenho algumas dificuldades tipo, o meu bean tem um status de cliente (Bloqueado,Ativo,Inativo,etc…)
e para o usuário pretendo colocar isso com cores assim teria uma legenda, mas no banco quero gravar um inteiro ou uma String.
Logo minha entidade tem um campo status do tipo String, mas na interface quero colocar o campo status como color.
Se eu colocasse a View para interagir somente com o control ele poderia fazer a conversão necessária pra gravar no banco.
EntityBean
Cliente.java
@Entity
public class Cliente {
@Column
private String Name;
@Column
private String status;
public Cliente(){
}
//getters and setters
}
ControlBean
public class ClienteControl extends Subject{
Cliente c;
List Observers;
public ClienteControl(){
}
public String getName(){
return c.getName();
}
public String setName(String name){
c.setName(name);
}
public Color getStatus(){
return StringtoColor(c.getStatus());
}
public void setStatus(Color color){
c.setStatus(ColortoString(color));
}
//métodos de registro,notify,e delete de observadores;
}
e na view criaria a classe normal de criação do JBeanPanel
sendo que como não estou utilizadno Binding por enquanto cada componente
deveria ter um FucusListener para atualizar o Objeto ao perder o foco,
e também deveria implementar o Observer para se registrar no Control como Observador.
Como é o control quem se comunica com o model todo o tempo o model nao poderá conter nesse caso nem uma regra de dominio, pois se ele atualizar-se ninguem ficará sabendo nem control e nem View.
Não sei se isso se encaixa em um Padrão, mas foi o melhor que consegui pensar até agora, e também ainda não sei se dará certo, estou tentando idealizar o modelo antes de refatorar meu soft.
Se tiverem soluções melhores para uso do SwingBean por favor postem.
Desculpe se não ficou muito claro
qualquer esclarecimento , posso tentar postar novamente tentando elucidar os pontos que não ficaram claros.
Att,
Ádamo Príncipe