Sábado, 29 de Setembro de 2007

XXI Semana Paraense de Informática

Nesta semana que está encerrando, ocorreu um dos maiores (se não o maior) e mais importantes eventos do norte do Brasil sobre informática: a XXI Semana Paraense de Informática - SEPAI. Este evento conta com vários outros eventos paralelos que contribuem com a disseminação de conhecimento e tecnologia. Um deles é o BelJungle que é a conferência do grupo de usuários Java de Belém (SouJava Belém). Neste evento, ocorrem palestras muito interessantes sobre soluções de desenvolvimentos de softwares, indo desde sistemas corporativos à dispositivos móveis. Com um evento desses, é claro que o pessoal da Fábrica de Software do Cesupa - Fabsoft não ia ficar de fora.

Neste ano a SEPAI contou com 3 palestras ministradas por membros da Fabsoft:

Daniel Alencar da Costa - Interfaces ricas com RichFaces.

André Furtado - Introdução a JavaFX.

Gustavo Henrique Lima Pinto - HTML 5 com PHP.

Gostaria de parabenizar os meus colegas que palestraram e agradecer especialmente aos amigos da FabSoft que me ajudaram bastante a lapidar a minha apresentação, desde aqueles que criticaram as minhas falhas até aqueles que me ajudaram a finalizar os
slides (Samuel Menezes)

Abraços!

Sexta-feira, 21 de Setembro de 2007

Passando um parâmetro do JSF para o Backing Bean


Ao desenvolver aplicações em Java Server Faces, passei por uma situação na qual me indaguei da seguinte maneira: "como posso passar um valor da página JSF para um método parâmetrizado no meu backing bean?"

Ou seja, algo como:


De
#{MeuBean.meuMetodo('vermelho')}
Para
public class MeuBean{

public String meuMetodo(String cor){
......
}
}

Os componentes do tipo action parameters, como é o caso do f:setPropertyActionListener e f:param resolvem algumas situações tranquilamente, porém nem sempre são o suficiente. Vou então lhes mostrar uma implementação que irá simular a situação acima apenas implementando a interface Map.

Primeiramente deve-se criar uma classe abstrata e implementar a interface Map. Ao implementar esta interface, tabém deverão ser implementados todos os seus métodos, porém apenas "fingiremos" esta implementação.

public abstract class ParametroMap implements Map {
public Collection values() {return null;}
public Object put(Object key, Object value) {return null;}
public Set keySet() {return null;}
public boolean isEmpty() {return false;}

public int size() {return 0;}
public void putAll(Map t) {}
public void clear() {}
public boolean containsValue(Object value) {return false;}
public Object remove(Object key) {return null; }
public boolean containsKey(Object key) {return false;}
public Set entrySet() {return null;}
public abstract Object get(Object obj);

}

Perceba que para os métodos que requisitavam algum tipo de retorno, utilizou-se apenas um "return null". Note também que o método get() que está em vermelho, é o método que receberá o parâmetro da página JSF.

Uma vez criada a classe
ParametroMap, basta que se escreva sub-classes da mesma para herdar o método get() . Analizemos a classe abaixo.

public class AlunoManager extends ParametroMap implements Map {
......

public List logicaDaAplicacao(Aluno aluno) {
...... Lógica .....

return listaAlunos;
}
public Object get(Object obj) {
List alunos = logicaDaAplicacao((Aluno) obj);
return alunos;
}

}

Esta classe (AlunoManager) herda a classe ParametroMap e implementa a interface Map, logo herda também o método get(). Com isto você poderá escrever outros métodos que realizam a lógica de negócio e recebem como parametro o objeto adquirido pelo get() .

Note que o método get() da classe AlunoManager, chama o método logicaDaAplicacao() que recebe, como parâmetro, um objeto do tipo Aluno. Este método retorna uma coleção de Alunos que posteriormente é retornada pelo método get().

Para passar o parâmetro da Pagina JSF para um Backing Bean basta adicionar um trecho de código similar a este:

Quando a página for renderizada, o parâmetro será passado para a classe AlunoManager através do seu método get(). Bom... Espero que isso ajude alguém do outro lado da tela ... Até breve []s!

Sexta-feira, 14 de Setembro de 2007


Fala galera! resolvi criar um blog para mim... e assim como para começar o primeiro parágrafo de uma redação, criar este primeiro post foi um pouco desconcertante. Decidi então, começar a falar um pouco sobre o lugar em que eu estagio: a Fábrica de Software as known as FabSoft.

A história de como comecei a trabalhar na FabSoft é um pouco engraçada :P . Primeiro começou com uma reprovação em uma matéria da Faculdade que eu admito não ter dado a devida atenção (eu sei... é apenas um eufemismo para não dizer que fui um vagal). E como esperado fui pagar esta matéria como depêndencia no semestre seguinte, só que com uma diferença, o professor que lecionaria neste novo semestre seria outro (na verdade ele chegou a dar algumas aulas no semestre anterior, mas apenas na metade do mesmo, pois estava em uma viagem para o exterior), o Ohashi. Um dia, no meio da aula, ele perguntou se eu teria interesse em estagiar na FabSoft, ele disse que apesar de não ter bolsa, seria uma ótima oportunidade para eu melhorar as habilidades referentes ao meu curso. Foi este ponto que eu achei mais interessante, pois mesmo sabendo da ausência da bolsa eu também sabia que muitos estágios, apesar de remunerados, não proporcionavam oportunidades de crescimento, como o incentivo a pesquisa e a prática de habilidades como programação e apresentações de trabalhos. Outro dia conversando com o Ohashi, soube que eu deveria passar por um processo seletivo que consistia em duas etapas, uma redação e uma entrevista. Realizei o processo para ingressar no turno da manhã e fui aprovado, foi neste momento que eu conheci o Renan ( vulgo Nananzinho ), que faz o curso de Ciências da Computação e está se formando junto comigo este ano (se Deus quiser e se eu correr atrás :P), o André, que também está cursando Ciências da Computação e é um cara muito inteligente e engraçado (costumamos dizer que ele é autista hahaha!!) e o Samuel (Muuca!) que é o maior pegador de mulheres que eu conheci até hoje, ele é muito pano preto por não querer me dizer como ele faz esta façanha, mas eu o considero muito . Com o passar dos dias, como a minha linha de estudo principal estava sendo o Php, passei para o turno da tarde para ajudar o Gustavo em um projeto que seria desenvolvido em Php. O Gustavo, que parecia ser um cara bem sério no início da convivência ( e embora algumas pessoas possam até achar estranho, eu ainda acho ele um cara bem "sério" =P) , me ajudou e continua ajudando muito com relação à programação e com o sistema operacional Linux. Com o tempo fui me adaptando ao ambiente da Fábrica de Software, passei a programar em Java para Web e cheguei a palestrar em alguns eventos de computação que ocorreram na cidade - SouJava TechDay e Fórum Paraense de Software Livre (Neste evento foi um tutorial ministrado sobre JavaServer Faces). Posso dizer que evolui bastante na Fábrica de Software e espero evoluir muito mais. Sou muito grato ao pessoal da FabSoft por terem proporcionado esta oportunidade valiosa de aprendizado :) . Bom... acho que para um primeiro post ta legal. Embora eu não tenha citado todos os membros que trabalham hoje lá , são caras muitos gente finas!! só não o fiz pois estes ingressaram posteriormente a mim e ficarão para uma outra história.

Foto: Gustavo Henrique Lima Pinto (marrom), Alfredo André Delgado Furtado (Camisa Branca mais a frente, andrefurtado.blogspot.com), Daniel Alencar da Costa (Eu de camisa vermelha), Renato Hidaka (camisa branca mais ao fundo) e Orlando Shigueo Ohashi (camisa amarela).