Para criar um objeto JSON a partir de um objeto java é muito simples com o XStream. Primeiro precisamos das seguintes libs:

  • xstream.jar
  • jettison.jar

Se você estiver usando o java6 não precisará de mais nada, se você estiver usando java5 precisará de mais uma lib:

  • sax-api.jar

Após incluir as libs, vamos ao código. Criaremos o nossa classe que será “transformada” em um objeto JSON.

package json;

public class Produto {
private String nome;
private String descricao;

//métodos get e set

}

Agora com nosso pojo criado é hora de transformá-lo em um objeto JSON.


public class TestaJSON {

 public static void main(String[] args) {
 Produto produto = new Produto();
 produto.setNome("Lorem ipsum dolor");
 produto.setDescricao("Quisque neque est, imperdiet at ullamcorper");

 XStream xstream = new XStream(new JettisonMappedXmlDriver());

 String json = xstream.toXML(produto);

 System.out.println(json);

 }

}

O código acima gera a saída:


{"json.Produto":{"nome":"Lorem ipsum dolor","descricao":"Quisque neque est, imperdiet at ullamcorper"}}

Repare que aparece o nome do objeto como json.Produto, você pode alterar o nome retornado usando alias do xstream. Veja como:


public class TestaJSON {

 public static void main(String[] args) {
 Produto produto = new Produto();
 produto.setNome("Lorem ipsum dolor");
 produto.setDescricao("Quisque neque est, imperdiet at ullamcorper");

 XStream xstream = new XStream(new JettisonMappedXmlDriver());
 xstream.alias("produto", Produto.class);
 String json = xstream.toXML(produto);

 System.out.println(json);

 }

}

Agora com o código acima o JSON retornado fica mais claro:


{"produto":{"nome":"Lorem ipsum dolor","descricao":"Quisque neque est, imperdiet at ullamcorper"}}

É isso aí. Simples não?🙂

Estava tendo problemas para instalar a nova versão do PostgreSQL no WinXP para testes no trabalho, até que achei este link que é da Comunidade PostgreSQL Brasileira que fez com que eu conseguisse instalar com sucesso.

Após a instalação falhar dizendo que não achava o arquivo postgresql.conf, avancei, até o instalador (fraquinho por sinal) informar que instalou com sucesso.

Após isto deverá dar permissão total para o usuário postgres no diretório C:\Arquivos de programas\PostgreSQL\8.4\data, entre no diretório \bin da instalação do postgresql e execute o seguinte comando:

initdb -D "C:\Arquivos de programas\PostgreSQL\8.4\data" -U postgres -W -E UTF-8

onde -E UTF-8 é o encoding desejado, como no próprio email explica.

Este comando vai gerar a saída abaixo:

saída do comando

Agora é só digitar um dos comandos abaixo:


postgres -D "C:\Arquivos de programas\PostgreSQL\8.4\data"
ou
pg_ctl -D "C:\Arquivos de programas\PostgreSQL\8.4\data" -l logfile start

Pra mim só funcionou o primeiro comando para “startar” o servidor e para “stopar” o segundo funciona perfeitamente. E se  não funcionar execute esses comandos com o usuário “postgres”.

Estava precisando criar um calendário de eventos e trazer eventos previamente cadastrados. Acabei achando um código para gerar um calendário muito bom e resolvi usá-lo. Fiz algumas alterações para ser exibido em html.

Fiz outro método para verficar em quais dias tem um evento. A partir de uma lista de eventos do mês indicado eu faço esta verificação.
O método pode ficar mais ou menos assim:
public boolean hasEvent() {
         //codigo para obter eventos e verificar se tem no dia indicado
}

E faço a verificação em cada dia. O resultado final ficou bom e a performance foi boa também.

Fica aí a dica para quem precisar de algo parecido.

Estava navegando no blog do meu amigo pererinha e achei um link muito interessante para identar javascript. O site para identar é http://jsbeautifier.org/, o post dele é Idente seu javascript online. Bom, para quem gosta de Desenvolvimento Web não deixe de acompanhar o site dele.😉

Aqui vou mostrar como é simples redimensionar uma imagem em java. (Valeu Sami)
Veja o código abaixo:


import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class RedimensionarImagem {

	public static void main(String[] args) throws IOException {
		BufferedImage imagem = ImageIO.read(RedimensionarImagem.class.getResourceAsStream("background.jpg"));
		int new_w = 512, new_h = 384;
		BufferedImage new_img = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB);
		Graphics2D g = new_img.createGraphics();
		g.drawImage(imagem, 0, 0, new_w, new_h, null);
		ImageIO.write(new_img, "JPG", new File("back.jpg"));

	}

}

Vamos ver o que acontece.

  • Na linha 11 carregamos a imagem em um BufferedImage.
  • Na linha 12 eu indico a largura e a altura da minha nova imagem.
  • Na linha 14 estou criando uma nova instância de BufferedImage que será minha nova imagem. No construtor eu indico a largura e a altura da minha nova imagem, bem como o tipo da imagem, no meu caso usei TYPE_INT_RGB que é uma imagem sem alpha, ou seja, opaca, sem transparência.
  • Na linha 15 eu crio uma instância de Graphics2D, é ele que me permite fazer o redimensionamento.
  • Na linha 16 é onde realmente é criado minha nova imagem redimensionada.

Depois de muito procurar sobre como redimensionar uma imagem, não encontrei nenhuma forma simples e eficiente como esta e graças ao meu amigo  Sami Koivu, que me deu esta dica. São exatamente 6 linhas para eu carregar a imagem, redimensionar e criar o novo arquivo.😉

Vou postar um código de como criar um JFrame transparente, o exemplo funcionará somente em versões superiores do Java SE 6 Update 10 que vem com a classe AWTUtilities.

Vamos ao código:


public class FrameTransparente{

    private JLabel label;
    private JFrame frame;

    public FrameTransparente() {
        init();
        AWTUtilities.setWindowOpacity(frame, 0.7F);
    }

    public void init() {
        frame = new JFrame("Transparencia");
        label = new JLabel("Exemplo de JFrame transparente");
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(label);
        frame.setLayout(new GridBagLayout());
        frame.setVisible(true);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        FrameTransparente f = new FrameTransparente();

    }

}

A “magica” acontece neste trecho do código:


 AWTUtilities.setWindowOpacity(frame, 0.7F);

O método setWindowOpacity aceita 2 parâmetros, o 1º é a janela que será transparente e o 2º parametro é a opacidade da janela.

O exemplo vai ficar assim:

JFrame Transparente

JFrame Transparente

Estou postando uma aplicação de exemplo em JME acessando Webservice. O exemplo funciona perfeitamente, só não implementei algumas validações no exemplo. A aplicação foi feita com Netbeans 6.5 usando VisualMidlet.

O exemplo acessa o webservice de CEP da byJG a partir do cep ou do logradouro.

O código fonte pode ser obtido aqui: fonte

O jar do aplicativo para o celular pode ser obtido aqui: buscaCEP