quarta-feira, outubro 26, 2011

PostgreSql: PgScript - Criando massa de dados

Este post, embora não seja especificamente de Java, como o nome do blog sugere, mas por certo será de grande utilidade para todos, haja vista que o uso de SGBDs está implicito na tarefa de desenvolvimento, seja com Java (espero que seja sempre com Java) ou em qualquer outra linguagem.

A geração de massa de dados é muito importante para que testemos o sistema num quantitativo de registros significante, e assim, mensurar o desempenho aproximado do ambiente de produção. Muitas são as formas de gerar tal massa de dados, mas manter o relacionamento em tal geração geralmente requer certo trabalho.

Para usuários do PostgreSql, este dispõe em sua ferramenta de administração, o pgAdminIII, o recurso chamado de pgScript. Utilizando-se deste recurso, a geração de tal massa de dados é feita dentro do ambiente do SGBD, o que otimiza a manutenção dos relacionamentos e tempo demandado para a elaboração da rotina.

Vamos considerar a seguinte modelagem para o exemplo de geração:
 Tem-se o script de criação:
create table autor(
id_autor serial,
nome  varchar(50),
sexo  varchar(1),
primary key (id_autor));


create table livro (
id_livro serial,
id_autor integer,
titulo  varchar(45),
editora  varchar(45),
isbn  varchar(45),
edicao  varchar(45),
data_publicacao date,
preco_venda numeric,
primary key (id_livro),
foreign key (id_autor) references autor (id_autor));

CONCEITOS pgSCRIPT

Atribuição:
set @varName = value;
Printar valor:
print @varName;
Controladores de fluxo:
if, while
Geração aleatória de dados: 
Exemplos:
  • gerar inteiros aleatórios entre 1 e 999:
set @inteiro = integer(1,999);
  • gerar um valor textual com 3 "palavras" entre 5 e 10 caracteres:
set @texto = string(5,10,3);

Tomando a modelagem exposta acima, entende-se que um autor pode ter vários livros. Simularemos a inserção de 200 autores relacionando cada um com 100 livros, para tanto, no console do pgAdmin, criamos:
set @idAutor = 1;
set @idAutor = 1;
set @nome = string(5,11,3); -- 3 palavras entre 5 e 11 caracteres;
set @sexo = string(1,1);

--variáveis para inserção em livro
set @titulo = string(3,10,3);
set @editora = string(6,15,2);
set @isbn = string(20,20,1);
set @edicao = string(1,8,2);
set @dataPublicacao = date('01/01/1990', '26/10/2011');
set @preco = real(9,200,2);

while @idAutor <= 200
begin
 insert into autor (id_autor, nome, sexo)
 values ('@idAutor', '@nome', '@sexo');

 set @contLivros = 0;

 while @contLivros < 100
 begin
  insert into livro (id_autor, titulo, editora, isbn, edicao, data_publicacao, preco_venda)
  values('@idAutor', '@titulo', '@editora', '@isbn', '@edicao', '@dataPublicacao', '@preco');

  set @contLivros = @contLivros + 1;
 end

 set @idAutor = @idAutor + 1;
end


Neste momento nossa massa de dados para autores e livros está pronta, repare que a inserção é realizada de modo a fazer uso da relação 1:N entre autor e livro. Constituído o script, pressione o botão "Execute pgScript" ou tecle <<F6>>. Você verificará o console executar os scripts:
Observe que com o uso do pgScript, integrado nativamente ao pgAdminIII, este proporciona grande agilidade no desenvolvimento para a geração de massa de dados. Outras alternativas para tal geração, por certo demandam maior trabalho e tempo de configuração. A grande vantagem do se usar o pgScript, é poder manter o relacionamento na tarefa de inserção.

Espero que tenham gostado!

quinta-feira, outubro 20, 2011

DWR: Primeiro Projeto

DWR – Direct Web Remoting

DWR é um framework para se trabalhar com chamadas Ajax em implementações Java. Uma chamada Ajax é uma solicitação assíncrona de um recurso do sistema, ou seja, enquanto a solicitação é processada, o usuário pode interagir com outras partes do sistema até sua resposta.

É inerente a uma chamada Ajax: HTML, XHTML, CSS, DOM, XML, XMLHttpRequest, JavaScript. O grande benefício do uso do Ajax, certamente, é a possibilidade de maior interação do usuário com a aplicação, construção de aplicações ricas para a web, além de, melhor tempo resposta perceptível.
Diagrama de uma chamada Ajax:
 
No intuito de otimizar o desenvolvimento de aplicações Java que façam uso de Ajax, o uso do DWR é bastante aceito, por ser uma ferramenta Open Source, por propiciar chamadas seguras a códigos Java a pártir de um browser, integrável com os principais frameworks de mercado, encapsula detalhes e complexidades da implementação do XMLHttpRequest, realiza a conversão de classes Java para implementações JavaScript, permitindo seu uso dentro de um browser.
O diagrama abaixo demonstra o uso do DWR em uma solicitação Ajax a uma implementação Java:
 
O PROJETO
Utilizando a IDE Eclipse, crie um novo Dynamic Web Project, conforme imagem abaixo:

 
Finalize a criação.
Para obter o arquivo dwr.jar, faça o download do mesmo em: http://directwebremoting.org/dwr/downloads/index.html
O DWR usa o artefato commons-logging.jar, portanto, este arquivo será necessário, pode ser obtido a partir de: http://commons.apache.org/logging/
Copie ambos arquivos para o diretório WEB-INF\lib do seu projeto.
Devemos configurar o servlet do DWR em nosso projeto, abra o arquivo web.xml de seu projeto e adicione:


  DWR Servlet
  dwr-invoker  
  org.directwebremoting.servlet.DwrServlet
  
     debugtrue



  dwr-invoker
  /dwr/*



É necessário, também, a criação de um arquivo de configuração do DWR, crie o arquivo como abaixo descrito, este deve constar no diretório WEB-INF de seu projeto, com o nome de dwr.xml:

  
    
          
  

Feito estas configurações, o DWR deverá estar pronto para uso. Inicie seu servidor, neste exemplo utiliza-se Tomcat 7, e acesse sua aplicação do seguinte modo:
 
Observe que o projeto lista o JavaScript JDate, que contém a classa java.util.Date em sua versão para JavaScript, convertida pelo DWR. Se você clicar sobre o link JDate, verá listados todos os métodos relativos a classe java.util.Date.
Nosso projeto apresentará o calculo do IMC (índice de massa córporea), onde a chamada e a apresentação do resultado serão via Ajax.
Para tanto, criaremos uma classe, como mostra a figura a seguir:
 
Implementamos a lógica como:
package br.com.serjava.dwr;

public class CalculoIMCAjax {

 public String calcularImc(Double peso, Double altura) {

  Double imc = (peso / Math.pow(altura, 2));

  if (imc < 18.5) {
   return "Seu imc é: " + imc + " Abaixo de 18,5 Você está abaixo do peso ideal";
  } else if (imc >= 18.5 && imc < 24.9) {
   return "Seu imc é: " + imc + " Entre 18,5 e 24,9 Parabéns — você está em seu peso normal!";
  } else if (imc >= 24.9 && imc < 29.9) {
   return "Seu imc é: " + imc + " Entre 25,0 e 29,9 Você está acima de seu peso (sobrepeso)";
  } else if (imc >= 29.9 && imc < 34.9) {
   return "Seu imc é: " + imc + " Entre 30,0 e 34,9 Obesidade grau I";
  } else if (imc >= 34.9 && imc <= 39.9) {
   return "Seu imc é: " + imc + " Entre 35,0 e 39,9 Obesidade grau II";
  } else {
   return "40,0 e acima Obesidade grau III";
  }

 }
 
}

Devemos mapear a classe acima como um objeto do DWR, para isso deve-se editar o arquivo dwr.xml incluindo o seguinte:

       

Criaremos a página que apresentará o conteúdo, crie, caso já não exista, a página index.jsp, dentro do diretório WebContent, segue a implementação:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>




Insert title here
   
     
   
 
 






Altura (m)
Peso (kg)
O resultado final deverá ser:
 
Aguarde próximos posts sobre DWR.

domingo, outubro 16, 2011

Maven: Configurar o proxy

Olá pessoal!

Como já devem ter acompanhado no post anterior, o uso do maven implica no download constante de artefatos e depedências, que serão utilizados pelo próprio maven na construção do projeto, bem como, pelo projeto a ser construído.

Comumente nos ambientes empresariais e educacionais verifica-se a existência de proxy. Se este não for devidamente configurado o maven, por certo, não fará a gerência completa de seu projeto, o que o deixará bastante nervoso!
Felizmente a configuração do proxy é bastante simples:
  1. Localize o diretório conf dentro da pasta de instação do maven em sua máquina;
  2. Edite o arquivo settings.xml, que deverá estar contido dentro do diretório acima especificado.
  3. Encontre a tag <proxies>, verifique as alterações abaixo:

    
      optional
      true
      http
      proxyuser
      proxypass
      proxy.host.net
      80
      local.net|some.host.com
       
  

As tags referem-se:
  • id: informe qualquer nome para identificar esta configuração de proxy;
  • active: true ou false, indica se esta configuração de proxy está ativa, portante deixaremos true;
  • protocol: indica qual protocolo estará submetido as configuração do proxy, deixemos http;
  • username: nome de usuário da rede, caso o proxy exija autenticação de usuário, do contrário a tag pode ser removida;
  • password: senha para autenticação junto ao proxy, se requerida, do contrário remova a tag;
  • host: informe o nome do host ou ip do servidor de proxy;
  • port: porta que o proxy utiliza;
  • nonProxyHosts: endereços que nao requeiram a passagem pelo proxy, geralmente: localhost
Realizadas as configurações descritas, salve o arquivo e seu proxy deverá estar devidamente configurado junto ao maven.

Maven: Primeiro Projeto

No post anterior abordei a configuração do Maven junto ao sistema operacional, declarando-se a variável de ambiente M2_HOME.

Demonstrarei o uso do Maven para a criação de um projeto simples, JSE, a fim de demonstrar a estrutura que o Maven adota como padrão bem como seu build.

Para a criação do projeto, basta acessar o prompt de comando. Assumiremos o diretório padrão como sendo c:\projetos-maven.


A partir da seguinte linha de comando, é possível  a criação do projeto, acesse pelo prompt o diretório acima discriminado ou aquele de sua preferência:

mvn archetype:generate -DgroupId=br.com.serjava.projetomaven -DartifactId=projeto-
maven -DarchetypeArtifactId=maven-archetype-quickstart 

Nesta linha informamos a estrutura de pacotes base do projeto, pelo atributo: -DgroupId=br.com.serjava.projetomaven, como pode-se observar, será criada a estrutura 
de pacotes br.com.serjava.projetomaven; -DartifactId define o nome do projeto a ser criado; 
-DarchetypeArtifactId contém o parâmetro com a estrutura do projeto a ser criado, neste caso, 
é um projeto quickstart, ou seja, um projeto simples sem inclusões de frameworks ou qualquer recurso 
adicional.

Você perceberá que depois de digitado o comando, vários downloads serão feitos do repositório central do 
maven. O maven, automaticamente, cria um repositório local em sua máquina, e a cada construção e 
criação de um novo projeto, ele verifica se as dependências necessárias para este projeto estão contidas 
em seu repositório local, caso não se encontrem, automaticamente será feito o download das mesmas. 
Ressalta-se que para uma segunda utilização, não mais será necessário o download.

Em um ambiente de desenvolvimento multi-usuários, a criação de repositórios locais é muito útil, pois 
evita-se a busca por dependências por cada membro da equipe.

Depois de realizados os downloads, você será questionado sobre a versão de seu projeto, conforme
imagem abaixo:
Informaremos a versão: 1.0
Em seguida, será mostrado os dados informados para a criação do projeto, confirme digitando Y;

O sucesso da criação deverá ser confirmado pela mensagem: BUILD SUCESS.

Dentro da diretório que utilizamos para a criação do projeto, deverá constar o projeto. 
Observe que dentro do projeto há um diretório src e um arquivo pom.xml.

O arquivo pom.xml pode ser entendido como um descritor de um projeto maven. nele podemos adicionar 
dependências ao projeto, plugins e configurações específicas, a estrutura deste arquivo no projeto criado 
deverá ser a seguinte:


  4.0.0

  br.com.serjava.projetomaven
  projeto-maven
  1.0
  jar

  projeto-maven
  http://maven.apache.org

  
    UTF-8
  

  
    
      junit
      junit
      3.8.1
      test
    
  


CONSTRUINDO O PROJETO

Uma vez criado o projeto, para que possamos fazer seu build basta acessar o diretório do projeto, no
nosso caso: C:\Projetos-Maven\projeto-maven; feito isto, digite o seguinte comando:
mvn package
Ao executar o comando package o Maven está executando uma fase (para maiores detalhes consul-
te o material de referência do Maven), em suma, o Maven tem um ciclo de fases (Life cycle), qualquer uma
que seja solicitada, todas as anteriores serão executadas até aquela que foi indicada. Estas são as fases per-
corridas:
1.  validate
2.  generate-sources
3.  process-sources
4.  generate-resources
5.  process-resources
6.  compile
Para a execução do comando package, todas as fases foram executadas, garantindo assim que ne-
nhum erro possa comprometer o projeto. Tendo-se todas as fases “aprovadas”, o projeto foi construído e
poderá ser executado.

Finalmente, para rodar o projeto, digite:
java –cp target\projeto-maven-1.0.jar br.com.serjava.projetomaven.App 

O resultado deverá ser:
Espero que tenham gostado, em breve mais posts sobre a utilização do Maven. Este foi uma pequena amosta do que este poderoso gerenciador é capaz de fazer, logo demonstrarei o uso de plugins para deploy da aplicação quando se usar um projeto web, além de prover independência de ides!

sábado, outubro 15, 2011

Instalação do Maven

O Maven surgiu como uma ferramenta para acumular conhecimento utilizado no projeto Jakarta da Apache para auxiliar no build da aplicação.
                O Maven tem como objetivo:
  • Facilitar o build de aplicações; 
  • Prover um sistema de build uniforme; 
  • Fornecer informações sobre o projeto; 
  • Criação de diretrizes para o emprego de melhores práticas; 
  • Migração transparente para novas funcionalidades.
DOWNLOAD
O primeiro passo é fazer o download do Maven, este é um projeto livre da Fundação Apache. O download pode ser feito acessando a seguinte url: http://maven.apache.org/download.html

Feito o download, descompacte o conteúdo num diretório de sua preferência; este tutorial assumirá que o diretório do Maven será c:\mvn.

Para o funcionamento do Maven, é necessário que o ambiente Java (jdk) esteja configurado, bem como a variável de ambiente JAVA_HOME. 

Variável de ambiente: M2_HOME
Considerando-se que o Maven já tenha sido descompactado, conforme indicado no item 1.1, deveremos configurar sua variável de ambiente. Assumimos que o diretório do Maven é: C:\mvn\apache-maven-3.0.

Veja a sequência de imagens para a declaração da variável de ambiente:


Na categoria Variáveis de Sistema (System variables), clique no botão New (Novo) e, preencha conforme imagem abaixo:
Neste momento a variável de ambiente M2_HOME está sendo criada, e apontando para o diretório que o Maven foi descompactado.

Localize a variável PATH, clique sobre ela e, em seguida em Editar; depois do último caractere insira um ponto e virgula (;), e em seguida, adicione: %M2_HOME%\bin. Confirme.

Pronto! O Maven já deverá ter sido configurado, para testar, abra o prompt do Windows e digite: mvn –version, o resultado deverá ser similar a:


O maven já esta pronto para ser usado em seus projetos de agora em diante. Novos posts tratarão de sua utilização, verifique!



Teste Postagem

Postagem de setup do blog


private String valor;


public String getShowContent() {
    String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
    if ("/pages/login.xhtml".equals(viewId)
     || ("/pages/showSource.xhtml").equals(viewId)
     || ("/pages/places.xhtml".equals(viewId) && 
       places != null && places.size() > 0)) {
      return "display";
    }
    
    else return "none";
  }