terça-feira, 28 de junho de 2011

rich:pickList + Seam

Vou demostrar nesse post como utilizar de uma maneira muito simples o rich:pickList com o seam, vou fazer um exemplo de @OneToMany, digamos que um Aluno tem muitas Matérias, o primeiro passo é criar a entity Aluno.

@Entity
@Name("aluno")
public class Aluno implements Serializable {

   private static final long serialVersionUID = 1L;
 
   @Id
   private Integer idAluno;

   @Column(name = "nome")
private String nome;
 
  @OneToMany(fetch = FetchType.LAZY)
private List<Materia> materias = new ArrayList<Materia>();

       //getters and setters
}

@Entity
@Name("materia")
public class Materia implements Serializable {

   private static final long serialVersionUID = 1L;

   @Id
   private Integer id;

   @Column(name = "nome")
   private String nome;

}

Agora vamos popular o lado esquerdo do pickList, nesse caso vamos popular fazendo um Select de todos os Alunos do banco de dados

@Name("materialManagedBean")
@Scope(ScopeType.CONVERSATION)
public class MateriasManagedBean{
 
   private List<Material> origem = new ArrayList<Material>();

   @SuppressWarnings("unchecked")
   public List<Material> listarOrigem() {
origem = entityManager.createQuery("select m from Material m").getResultList();
return origem;
   }
}

Pronto agora temos uma lista de Alunos com todos os alunos do banco de dados, agora vou mostrar como utilizar no pickList para poder transferir de uma List para outra.

<rich:pickList value="#{aluno.materias}"
   <s:selectItems value="#{materialManagedBean.listarOrigem()}" var="_materias"
      label="#{_materias.nome}" />
<s:convertEntity />
</rich:pickList>

O que torna o trabalho mais fácil utilizar pickList no Seam é a presença da taglib do seam <s:selectItems> que já faz a conversão automática sem a necessidade de nenhuma programação extra no backbean o que aconteceria utilizando o convencional <f:selectItems>

segunda-feira, 6 de junho de 2011

Aumentando a produtividade de um framework de produtividade com Jrebel

Recentemente postei sobre o jboss Seam e sobre ele ser um framework de produtividade, porem uma coisa que o torna improdutivo é o fato de que toda vez que é feito qual quer mudança no código é necessário fazer o redeploy da aplicação, o que acaba tomando muito tempo no desenvolvimento.


Para resolver esse problema a empresa ZeroTurnaround desenvolveu o JRebel, que atualmente se encontra na versão 4, com ele é possível fazer alteração no código, salvar e dar refresh na pagina que as alterações são publicadas automaticamente, acabando com os inúmeros redeploys, aumentando a produtividade.


Recentemente tanto a empresa ZeroTurnaround e o JRebel foram indicados para a JAX Innovation Awards 2011 nas categorias companhia mais inovadora de java e tecnologia mais inovadora de java  respectivamente.


Na sua nova versão o jrebel oferece full suporte ao Seam e mais 35 frameworks, entre eles: Hibernate, EJB, Sping, Struts, groovy e outros.


Uma outra grande facilidade é que ele pode ser facilmente instalado e utilizado tanto em projetos em andamento inicial como em estagio avançado facilmente.


Para instalar o JRebel no Eclipse e utilizar em uma aplicação Seam é muito simples.


Faça download no site http://www.zeroturnaround.com/jrebel/current/
Para instalar bastar dar next, next, finish.

Agora instale o plugin do eclipse, va em help > Install new software e use a URL http://www.zeroturnaround.com/jrebel/current/


Após o download terminar reinicie o eclipse, para utilizar com o debug vá ate Java > Debug > Step Filtering, la adicione esses 2 filtros com.zeroturnaround.* e org.zeroturnaround.*


Agora vamos inserir o rebel.xml que indica quais pastas serão monitoradas se a mudanças, no Seam devemos colocalo em 2 lugares, um para monitorar as paginas JSF e outro para monitorar o EJB, clique em cima do projeto com o botao direito em cima do projeto e va em Generate rebel.xml e coloque na pasta WebContent\WEB-INF\classes para monitorar o JSF e clique com o botão direito na pasta Projeto-ejb, depois Generate rebel.xml e coloque na pasta \Projeto-ejb\ejbModule

Na configuração do server, basta dar duplo clique em cima do server e deixar as configurações como da foto a seguir



Pronto o JRebel esta instalado e pronto para ser usado, agora qualquer alteração feita no seu código, basta salvar e dar refresh na pagina web que ela será mostrada automaticamente.