segunda-feira, 10 de outubro de 2011

JAXB - Solução de manipulação em XML

JAXB - Solução para manipulação de XML com java.
Site oficial JAXB.
Abaixo apresentaremos um exemplo de manipulação de arquivos XML.
A biblioteca Jaxb consiste nos métodos de marshal e unmarshal.
Estes dois métodos são acessíveis respectivamente pelas classes javax.xml.bind.Marshaller e javax.xml.bind.Unmarshaller.
Marshal é responsável por transformar um objeto java em xml.
Unmarshal é responsável por preencher os dados do xml para o objeto java.
Para exemplificar a utilização do Jaxb, faremos um exemplo bem simples que utilizará 4 arquivos.
UtilXML - Arquivo que conterá os métodos responsáveis por ler, escrever e outros.
ConteudoHomeXML - Arquivo que conterá os dados raiz do xml.
ListaConteudosHome - Arquivo que conterá os dados do objeto raiz, ou seja, a lista do objeto.
TesteXML - Arquivo que conterá o atributo main para a execução de nossa estrutura.

Tudo isto será possível por algumas anotações:

Anotações do ConteudoHomeXML:
@XmlRootElement(name = "conteudoHome")
Anotação que identificará o nome da tag raiz ou seja elemento root.
@XmlType(propOrder = { "idConteudoHome", "pathImagem", "titulo", "textoResumo","texto","linkURL" })
Anotação que irá identificar os nomes de cada atributo java deverá sair no arquivo xml, ou seja, os nomes de propriedades do xml.
Anotações do ListaConteudosHome.

@XmlElementWrapper(name = "listConteudoHome")

Anotação que irá identificar que o atributo java que conterá a lista de objetos.
@XmlElement(name = "conteudoHome")
Anotação que irá identificar o elemento contido na lista.



Classe para manipular XML.

package br.org.fieg.interagy.util.xml;


import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class UtilXml {

@SuppressWarnings("unused")
public static final String DIRETORIO_ARQUIVOS_XML = "c:\temp\";
public static final String CAMINHO_ARQUIVO_CONTEUDO = DIRETORIO_ARQUIVOS_XML+"conteudoHome.xml";
public static final String CAMINHO_ARQUIVO_OFERTA = DIRETORIO_ARQUIVOS_XML+"ofertaHome.xml";

private static UtilXml utilXml;

private UtilXml(){ }

public static UtilXml getInstance() {
if (utilXml == null){
utilXml = new UtilXml();
}
return utilXml;
}

public void escreverXml(Marshaller m, Object conjuntoAnuncio) throws JAXBException {
escreverXml(m, conjuntoAnuncio, CAMINHO_ARQUIVO_CONTEUDO);
}

public void escreverXml(Marshaller m, Object conjuntoAnuncio, String caminhoArquivo) throws JAXBException {
Writer w = null;
try {
w = new FileWriter(caminhoArquivo);
m.marshal(conjuntoAnuncio, w);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
w.close();
} catch (Exception e) {
}
}
}

public <B>B lerXml(JAXBContext context, Class<B> c) throws JAXBException, FileNotFoundException {
return lerXml(context, c, CAMINHO_ARQUIVO_CONTEUDO);
}

@SuppressWarnings("unchecked")
public <B>B lerXml(JAXBContext context, Class<B> c, String caminhoArquivo) throws JAXBException, FileNotFoundException {
// pega as variaveis do nosso xml
Unmarshaller um = context.createUnmarshaller();
return (B) um.unmarshal(new FileReader(caminhoArquivo));
}

public Marshaller factoryMarshaller(Class<?> class1) throws JAXBException {
// criar JAXB context and instancia marshaller
Marshaller m = factoryJAXBContext(class1).createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
return m;
}

public JAXBContext factoryJAXBContext(Class<?> class1) throws JAXBException {
JAXBContext context;
context = JAXBContext.newInstance(class1);
return context;
}
}

Arquivo XML raiz

package br.com.sitez.util.xml;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import org.apache.commons.lang.StringUtils;

import br.com.sitez.util.UtilArquivo;

@XmlRootElement(name = "conteudoHome")
@XmlType(propOrder = { "idConteudoHome", "pathImagem", "titulo", "textoResumo","texto","linkURL" })
public class ConteudoHomeXML {

private int idConteudoHome;
private String pathImagem;
private String titulo;
private String textoResumo;
private String texto;
private String linkURL;

// Se voce deseja uma variavel, voce pode facilmente mudar o nome para seu xml-output
@XmlElement(name = "id")
public int getIdConteudoHome() {
return idConteudoHome;
}
public void setIdConteudoHome(int idAnuncio) {
this.idConteudoHome = idAnuncio;
}
public String getPathImagem() {
return pathImagem;
}
public void setPathImagem(String pathImagem) {
this.pathImagem = pathImagem;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
//@XmlJavaTypeAdapter(Adapter.class)
public String getTextoResumo() {
return textoResumo;
}
public void setTextoResumo(String textoResumo) {
this.textoResumo = textoResumo;
}
public String getTexto() {
return texto;
}
public void setTexto(String texto) {
this.texto = texto;
}
public String getLinkURL() {
return linkURL;
}
public void setLinkURL(String linkURL) {
this.linkURL = linkURL;
}
}

Arquivo XML que contém a lista

package br.com.sitez.util.xml;

import java.util.ArrayList;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

//This statement means that class "ConjuntoAnuncio.java" is the root-element of our example
@XmlRootElement(namespace = "br.com.sitez.util.xml")
public class ListaConteudosHome {

private ArrayList<ConteudoHomeXML> listConteudoHome;

// XmLElementWrapper generates a wrapper element around XML representation
@XmlElementWrapper(name = "listConteudoHome")
// XmlElement sets the name of the entities
@XmlElement(name = "conteudoHome")
public ArrayList<ConteudoHomeXML> getListConteudoHome() {
return listConteudoHome;
}

public void setListConteudoHome(ArrayList<ConteudoHomeXML> listAnuncio) {
this.listConteudoHome = listAnuncio;
}
}

Arquivo TesteXML:

package Utilitarios.test;

import java.io.FileNotFoundException;
import java.util.ArrayList;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;

import br.com.sitez.util.xml.ConteudoHomeXML;
import br.com.sitez.util.xml.ListaConteudosHome;
import br.com.sitez.util.xml.UtilXml;

public class TesteXML {

public TesteXML() {}
/**
* @param args
*/
public static void main(String[] args) {
try {
ArrayList<ConteudoHomeXML> anuncios = new ArrayList<ConteudoHomeXML>();
// create anuncios
anuncios.add(setAnuncio(1,"IEL CELEBRA DIA DO ESTAGI&Aacute;RIO", 
"c:/temp/img/v2_imgEventos/dia-do-estagiario-2011/DSC_1650.jpg", 
"http://www.sitedoestagio.com.br",
"Texto resumo que dever&aacute; aparecer no anuncio.", "Texto que devera ser apresentado integralmente"));
anuncios.add(setAnuncio(2,"IEL CELEBRA DIA DO ESTAGI&Aacute;RIO", 
"c:/temp/img/v2_imgEventos/dia-do-estagiario-2011/DSC_1650.jpg"), 
"http://www.gmail.com",
"Texto resumo que dever&aacute; aparecer no anuncio.", "Texto que devera ser apresentado integralmente"));

// create lista de anuncios
ListaConteudosHome conjuntoAnuncio = new ListaConteudosHome();
conjuntoAnuncio.setListConteudoHome(anuncios);
// escreve xml
UtilXml.getInstance().escreverXml(UtilXml.getInstance().factoryMarshaller(ListaConteudosHome.class), 
conjuntoAnuncio);
// ler xml
lerXml(UtilXml.getInstance().factoryJAXBContext(ListaConteudosHome.class));
} catch (JAXBException e1) {
e1.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static ConteudoHomeXML setAnuncio(int id, String titulo, String pathImagem, String linkUrl, String textoResumo, String texto) {
ConteudoHomeXML anuncio = new ConteudoHomeXML();
anuncio.setIdConteudoHome(id);
anuncio.setTitulo(titulo);
anuncio.setPathImagem(pathImagem);
anuncio.setLinkURL(linkUrl);
anuncio.setTextoResumo(textoResumo);
anuncio.setTexto(texto);
return anuncio;
}
private static void lerXml(JAXBContext context) throws JAXBException, FileNotFoundException {
ListaConteudosHome conjunto = UtilXml.getInstance().lerXml(context, ListaConteudosHome.class);
for (ConteudoHomeXML anuncio : conjunto.getListConteudoHome()) {
System.out.println("id ->" + anuncio.getIdConteudoHome());
System.out.println("titulo ->" + anuncio.getTitulo());
System.out.println("texto ->" + anuncio.getTexto());
System.out.println("Texto resumido ->" + anuncio.getTextoResumo());
System.out.println("Imagem ->" + anuncio.getPathImagem());
System.out.println("Link ->" + anuncio.getLinkURL());
System.out.println("--------------------------------------------------------------");
}
}
}

Simples assim.



sexta-feira, 18 de março de 2011

Como usar o programa google Apps

Bem o google disponibiliza um servidor de emails gratuito chamado google Apps.
Caso deseje que usar o serviço basta se inscrever no programa e passar a usar o google como seu provedor de emails. Esta inscrição é gratuita, para 50 contas. Acima de 50 contas existe o google apps business.
Abaixo mostro as configurações que devem ser feito caso deseje fazer o google apps, após a inscrição no programa.
Estas configurações devem ser feitas no MX dos emails. Lembro que tal configuração deve durar 48 hrs para que torne efetiva.
Após deve entrar pelo link htt://mail.google.com/a/<nome do seu dominio>.
Pronto agora basta usar o google como seu provedor de emails.

Abraços

Visite: http://www.automotosoft.com.br

sexta-feira, 18 de fevereiro de 2011

Picasa com PHP



Abaixo mostro um exemplo de como trazer imagens do picasa através de uma conta e nr. de álbum.
Para que possamos mostrar estas imagens necessitamos de ter uma conta no picasa, um álbum e este álbum deverá ser público.
Para o exemplo usamos uma biblioteca do jquery chamada fancybox. Caso queira saber mais entre em:
http://fancybox.net/
Segue abaixo Exemplo:
---------------------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Album usando a API do Picasa + JQuery + FancyBox</title>
    <style type="text/css" media="all">
        html, body {margin: 0px;    padding: 0px;}        
        body {background: #EAEAEA; font-family: "Trebuchet MS",Verdana,Arial,sans-serif; font-size: 14px; line-height: 1.6;}        
        a {outline: none; margin-right: 20px;}
        a img {border: 1px solid #CCC; padding: 2px; margin: 10px 5px 10px 0;}
    </style>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://fancybox.net/js/fancybox/jquery.fancybox-1.2.6.css" media="screen" />
    <script type="text/javascript" src="http://fancybox.net/js/fancybox/jquery.fancybox-1.2.6.pack.js"></script>
    <script type="text/javascript">
       //-- Aqui ele pega todos os elementos com class = zoom e monta o fancybox.
        $(document).ready(function() {
            $("a.zoom").fancybox();
        });
    </script>
</head>
<body>
<?php
    $picasaUser = "foxconn.suporte"; // usuario do picasa
    $id = '5543297699342918993';  

    /* ----------------- url do feed do picasa por usuario e album ---------------- */
        $tt = file_get_contents("http://picasaweb.google.com/data/feed/api/user/{$picasaUser}/albumid/{$id}");      
        // busca as fotos de um determinado Album passado por parametro
        $xml = simplexml_load_string($tt);
        echo utf8_decode($xml->{"title"})."<br>".utf8_decode($xml->{"subtitle"})."<br>";  
        echo "<div id='album' align='center'>";
        for($i = 0; $i < count($xml->{"entry"}); $i++) {
            $media = $xml->{"entry"}[$i]->children("http://search.yahoo.com/mrss/");
            echo "<a class='zoom' rel='group' title='".utf8_decode($media->{"group"}->{"description"})."'
            href='".$media->{"group"}->{"content"}->attributes()->url."'>".
             "<img src='".$media->{"group"}->{"thumbnail"}[1]->attributes()->url."' alt='imagem' /></a>";
        }

        echo "</div>";  
?>
</body>
</html>

Espero que seja útil.

Abraço a todos.
Visite: http://www.sitez.com.br

quarta-feira, 16 de fevereiro de 2011

Caixa de Mensagem Personalizada - Delphi

Abaixo um exemplo de como criar uma caixa de mensagem com botões personalizados.

Unit uMensagem;

Interface

function mensagem(corpo:String):integer;

implementation

uses messages, Controls, Dialogs, FMTBcd, StdCtrls, Buttons;

function mensagem(corpo:String):Integer;
var
  mensagem:TForm;
begin
  mensagem:= CreateMessageDialog('''+corpo + ''', mtConfirmation, [mbYes, mbNo]);
  (mensagemFindComponent('YES') as TButton).Caption := 'Sim';
  (mensagemFindComponent('NO') as TButton).Caption := 'Não';
  result: mensagem.ShowModal;
end;
end.

Boa Sorte a todos...

Visite: http://www.sitez.com.br/

Classe para envio de Email - PHP

Abaixo um exemplo de classe de envio de email usando a lib ou biblioteca "phpmailer". Então para que o exemplo funcione baixe da internet a biblioteca "phpmailer". Para isto clique no link http://sourceforge.net/projects/phpmailer/.
Abaixo código da classe PHP:

<?php
 // Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer
require("phpmailer/class.phpmailer.php");
 // Inicia a classe PHPMailer
$mail = new PHPMailer();
// Define os dados do servidor e tipo de conexão
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "smtp.seudominio.com.br"; // Endereço do servidor SMTP
$mail->SMTPAuth = true; // Autenticação
$mail->Username = 'e-mail@seudominio.com.br'; // Usuário do servidor SMTP
$mail->Password = 'sua senha'; // Senha da caixa postal utilizada
 // Define o remetente
$mail->From = "e-mail@seudominio.com.br";
$mail->FromName = "Nome do Remetente ";
 // Define os destinatário(s)
$mail->AddAddress('destinatario@dominio.com.br', 'Nome do Destinatário');
//$mail->AddAddress('e-mail@destino2.com.br');
//$mail->AddCC('copia@dominio.com.br', 'Copia');
//$mail->AddBCC('CopiaOculta@dominio.com.br', 'Copia Oculta');
 // Define os dados técnicos da Mensagem
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
//$mail->CharSet = 'iso-8859-1'; // Charset da mensagem (opcional)
 // Texto e Assunto
$mail->Subject  = "Mensagem Teste"; // Assunto da mensagem
$mail->Body = 'Este é o corpo da mensagem de teste, em HTML!
<IMG src="http://seudominio.com.br/imagem.jpg" alt=5":)"   class="wp-smiley"> ';
$mail->AltBody = 'Este é o corpo da mensagem de teste, em Texto Plano! \r\n
<IMG src="http://seudominio.com.br/imagem.jpg" alt=5":)"  class="wp-smiley"> ';
 // Anexos (opcional)
//$mail->AddAttachment("e:\home\login\web\documento.pdf", "novo_nome.pdf");
 // Envio da Mensagem
$enviado = $mail->Send();
 // Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
$mail->ClearAttachments();
 // Exibe uma mensagem de resultado
if ($enviado) {
echo "E-mail enviado com sucesso!";
} else {
echo "Não foi possível enviar o e-mail.
";
echo "Informações do erro:
" . $mail->ErrorInfo;
}
?>

Boa sorte a todos...
Visite-nos: http://www.sitez.com.br/