Arquivo(s) de dezembro, 2007

Criando uma lista na sessão com DWR - Parte 3

Na parte 3 do nosso artigo vamos ver que tipos de métodos iremos criar no nosso FacadeAjaxSession explicado no artigo anterior.

Agora veremos os trechos dos novos métodos:

Método para adicionar um objeto na sessão:

public void addMapSession(BeanSession beanSession){
Session session = new SessionFacade();//01
Map<String, BeanSession> sessionMap = null;//02

if(session.getAttribute("sessionMap") != null){ //03
sessionMap = (Map) session.getAttribute("sessionMap");//04
}else{
sessionMap = new HashMap<String, BeanSession>();//05
}
String keyMap = beanSession.getId() + "_" +  beanSession.getName();//06

beanSession.setKeyMap(keyMap); //07

sessionMap.put(keyMap, beanSession); //08

session.setAttribute("sessionMap", sessionMap); //09
}

Listagem 03: Método que adiciona em um atributo da sessão o objeto passado como parâmetro.

Na listagem 03 vimos o método addMapSession() que espera como parâmetro um BeanSession(ver listagem 01), veja baixo:

01:Criamos o objeto session a partir de nossa classe SessionFacade;
02:Criamos um Map(sessionMap);
03: Recuperamos da sessão o atributo utilizado, e verificamos se o mesmo já existe;
04:Caso o Atributo exista(linha 03) pegamos o valor desse atributo e adicionamos no Map(sessionMap);
05:Caso o atributo não exista inicializamos o sessionMap;
06:Criamos uma variável que servirá como identificador do objeto, que será utilizado no lado JavaScript para identificar o objeto que o usuário está clicando. OS: Como não estou utilizando dados de um banco, tive que fazer essa “adaptação” para simular o id. O que eu fiz foi nada mais que garantir que o objeto que estou inserindo neste momento não terá o mesmo id do próximo;
07:Adiciono esse keyMap(identifica o mapa, linha 06) no meu BeanSession;
08:Adiciono no sessionMap a chave do meu mapa(keyMap) e o meu objeto(BeanSession).

Método para listar um objeto na sessão:

public Map listMapSession() throws Throwable {
Session session = new SessionFacade();
Map<String, BeanSession> sessionMap = null;

if (session.getAttribute("sessionMap") != null) {
sessionMap = (Map) session.getAttribute("sessionMap");
} else {
sessionMap = new HashMap<String, BeanSession>();
}

return sessionMap;
}

Listagem 04: Método que retorna um Map da sessão.

Este método dispensa explicação mais detalhada, ele apenas retorna um Map que está salvo em um determinado atributo na sessão.

Método para excluir um objeto da sessão:

public void removeValueMap(BeanSession beanSession) throws Throwable {
Session session = new SessionFacade();
Map sessionMap = null;

if (session.getAttribute("sessionMap") != null) {
sessionMap = (Map) session.getAttribute("sessionMap");
} else {
sessionMap = new HashMap<String, BeanSession>();
}

if (sessionMap.containsKey(beanSession.getKeyMap())) {
sessionMap.remove(beanSession.getKeyMap());
}

session.setAttribute("sessionMap", sessionMap);
}

Listagem 05: Método que exclui o objeto passado como parâmetro da sessão.

Um método também bem simples. Recebe o objeto como parâmetro, recupera o valor da sessão, verifica se existe um objeto no Map através da chave (keyMap), caso exista ele remove o objeto do Map e adiciona novamente o Map na sessão.

São métodos simples e claro precisam de mais alguns requintes, mas, esse não é o objetivo do nosso artigo. Quero apenas exemplificar essa funcionalidade.

No próximo artigo(parte 4) iremos ver a implementação no lado JavaScript.

Abraços

Pulse

Interrompendo um pouco a série sobre “Criando uma lista na sessão com DWR” venho com um post no mínimo interessante.

Esses dias vendo algumas notícias sobre o MyEclipse vi um plugin bem interessante, o Pulse.

Mas o que seria esse Pulse ?

Bem o Pulse é tipo um plugin que facilita você obter, configurar e administrar os produtos do Eclipse. Falando em miúdos com ele é fácil você instalar o eclipse sem precisar acessar o site.
O arquivo do Pulse contém apenas 2mb facilitando assim você transportar o programa e na sua instalação você escolhe o que você quer instalar(Veja abaixo o passo a passo).

O Pulse não se limita apenas a baixar um eclipse e instalar, ele tem o chamado de Full Catalog onde você poderá selecionar vários softwares gratuitamente. E se você se cadastrar você ainda poderá compartilhar com amigos o seu profile, isso poderia ser utilizado para manter um padrão de IDE que seu grupo poderá utilizar.

Você monta seu profile depois compartilha o mesmo, então os membros da sua equipe acessam e baixam o mesmo IDE que você tem, facilitando e padronizando seu ambiente de trabalho ou caso você tenha um ambiente montado em sua casa com seus plugins preferidos você poderá levar para onde você quiser(claro podemos zipar todo o eclipse e levar em um PENDRIVER) e depois é só baixar que ele instalar tudo para você(detalhe, o pulse promete uma super velocidade para baixar o eclipse sendo mais rápida do que no próprio site, eu senti que foi bem mais rápido mesmo) é uma idéia bem interessante.

Mais detalhes no final do post.

Vamos ver agora passo a passo a sua instalação.
Acesse: http://www.poweredbypulse.com/download_win.php
Após baixar execute o programa e siga os passos.

Passo 1: Executando o programa

Passo 2: Iniciando a instalação

Passo 3: Se você não quiser se registrar(é rápido, simples e free ;D) você poderá utilizar a opção Anonymous, mas neste caso a customização do profile não será possível(não tenho certeza pois não testei).

Passo 4: Registrando-se

Passo 5: Nesta tela você seleciona qual o “tipo” de Eclipse que você deseja, no nosso caso vamos selecionar o JAVA.

Passo 6: Selecionando o Eclipse Europa for Java. Caso você deseje já ir baixando outros plugins além do que ele mostra é só clicar em More ou Full Catalog e criar a seu gosto.

Passo 7: Depois de selecionar e apertar o NEXT é só aguardar o pulse baixar e configurar seu Eclipse.

Passo 8: Instalando o Eclipse

Pronto seu eclipse está pronto para ser utilizado. Os passos abaixo é para caso você deseje personalizar ainda mais seu eclipse e montar seu profile personalizado, para em qualquer lugar você poder baixar já pronta toda a sua IDE.

Passo 9: Após o pulse ter baixado e configurado seu Eclipse vá em Show View do Eclipse e selecione o Other.

Passo 10: Selecione Other e Pulse Explore para abrir o Catalog do Pulse.

Passo 11: Explore do Pulse onde você poderá customizar seu profile.

Bem, achei a idéia bem interessante, claro que tem suas vantagens e desvantagens mas depende do contexto, para quem não quer levar mais de 200mb do eclipse em um pendriver pode levar apenas um arquivo de 2mb e deixar ele fazer o trabalho para você. Então está ai a dica ;D.

Site: http://www.poweredbypulse.com/index.php
Mais sobre o Pulse: http://www.poweredbypulse.com/why.php
Donwload: http://www.poweredbypulse.com/download_win.php
Vídeos explicativos: http://www.poweredbypulse.com/demos.php

Abraços

Criando uma lista na sessão com DWR - Parte 2

Dando continuidade…..

Vimos no artigo anterior a parte teórica deste artigo, agora vamos dar início a parte mais divertida: código ;D

Criando o Bean

Para iniciarmos o nosso exemplo sem mais delongas vamos criar o bean que iremos utilizar. Veja a listagem 01

public class BeanSession {

private String id;
private String keyMap;
private String name;

public String getId() {
return id;
}
public String getKeyMap() {
return keyMap;
}
public String getName() {
return name;
}
public void setId(String id) {
this.id = id;
}
public void setKeyMap(String keyMap) {
this.keyMap = keyMap;
}
public void setName(String name) {
this.name = name;
}
}

Listagem 01: Código do BeanSession com 3 propriedades(id, keyMap e name) e seus respectivos Get´s e Set´s.

Iremos utilizar esse bean para auxiliar o transporte dos dados entre o Java e o JavaScript. Mas o uso do mesmo não é obrigatório como vocês já sabem. No meu modelo eu utilizo Bean´s, mas caso você esteja utilizando outra forma também é possível, tanto com objetos JSON, Parâmetros como Integer, String etc, são aceitos com tranqüilidade pelo DWR.

Alterando o FacadeAjaxSession.java

Segue o código que tínhamos:

public class FacadeAjaxSession {

public String exampleSession1(String attribute){
WebContext wc = WebContextFactory.get();

String valueSession = "";
if(wc.getHttpServletRequest().getSession().getAttribute(attribute)!= null){
valueSession = wc.getHttpServletRequest().getSession().getAttribute(attribute).toString();
}else{
valueSession = "Session is null";
}

return valueSession;
}

public void createSession(String attribute, String value){
WebContext wc = WebContextFactory.get();

wc.getHttpServletRequest().getSession().setAttribute(attribute, value);
}

public String exampleSession2(String attribute){
Session session = new SessionFacade();

String valueSession = "";

if(session.getAttribute(attribute)!= null){
valueSession = session.getAttribute(attribute).toString();
}else{
valueSession = "Session is null";
}

return valueSession;
}

}

Listagem 02: Código do FacadeAjaxSession que utilizamos no último artigo.

Por hoje é só, na parte 3 deste artigo vamos ver o restante da classe FacadeAjaxSession.

Abraços

Criando uma lista na sessão com DWR - Parte 1

Para finalizar esses artigos básicos sobre session vamos ver adiante como salvar, excluir e listar objetos na sessão, será um exemplo bem simples mas ao mesmo tempo muito útil para quem pretende fazer algo semelhante.

Iremos continuar utilizando o projeto dos artigos sobre Sessão com DWR.

Preparando o ambiente e ferramentas

Segue abaixo o nosso ambiente:

IDE: MyEclipse 6.0
ContainerWeb: Tomcat 5.5.17
DWR: Versão 2.0.1
JAVA: JKD5.0 ou superior.

Informações Iniciais

Iremos criar uma funcionalidade bem simples, mas também bem útil. Teremos um formulário onde entraremos com alguns dados, salvaremos esses dados na sessão, podemos adicionar um ou mais dados formando assim uma lista desses dados. A funcionalidade também irá permitir listar e excluir esses dados da sessão. Não iremos salvar no banco, mas nada impede que você o faça.

Para você acompanhar melhor esse artigo você deve ler as seqüências de artigos localizados nos links que passarei mais a frente, isso será necessário caso você ainda não tenha visto ou não saiba o básico para trabalhar com sessão utilizando o DWR, com isso você terá um bom entendimento do que será apresentado.

Trabalhando com Session no DWR parte 1
Trabalhando com Session no DWR parte 2
Vídeo-aula 1
Vídeo-aula 2
Vídeo-aula 3
Vídeo-aula 4

Estrutura.

Vamos utilizar a implementação do último artigo. Session e SessionFacade. Iremos manter a estrutura desde o primeiro artigo e vamos inserir essa nova funcionalidade no “sistema”.

OBS1: Esse artigo será publicado na integra no Portal da Java Magazine, aguarde.

Bem essa é nossa primeira parte, vou dá tempo para que vocês possam(caso ainda não tenham feito) acompanhar os artigos anteriores sobre Sessão e a segunda parte será publicada logo em seguida.