terça-feira, 22 de julho de 2014

Como usar mascara em layouts com Bootstrap.




Ambiente:
Facelets
JSF Mojarra 2.0.6
PrimeFaces 3.5.4
Bootstrap v2.3.2

Para inclusão de mascaras de campos faça da seguinte forma:

Primeiramente devemos fazer o download da biblioteca maskedinput.js.
Depois do download salve na pasta dentro do projeto onde desejar.
Para o exemplo abaixo foi saldo em "Webcontext\js".
Incluir a linha abaixo em seu html.
<script src="${request.contextPath}/js/jquery.maskedinput.js"></script>

Em cada página deve ser usada a linha:
<script type="text/javascript">
jQuery(function($){
$("#ddd1").mask("99");
$("#telefone1").mask("9999-9999");
$("#cep").mask("99999-999");
$("#cpfAssina").mask("999.999.999-99");
});
</script>
Sendo que #cpfAssina esta referenciando um input por ID = "cpfAssina".
<p:inputText id="cpfAssina" value="#{cadastroEscolaCtrl.escola.cpfAssina}" label="CPF" required="true" pt:placeholder="CPF" styleClass="input-block-level"/>

Ainda vale a pena lembrar que para que seja possível nomear os componentes JSF sem que percam os IDS, é necessário acrescentar no form o atributo prependId="false".
Exemplo:
<h:form styleClass="form-login form-wrapper" prependId="false">

Simples assim.

Abraços...

Acentuação com JSF + Facelets


Bem comecemos;

Ambiente:
Facelets
JSF Mojarra 2.0.6
PrimeFaces 3.5.4





Sendo assim teremos um template:
Neste template é importante conter as linhas:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

Também incluir a linha abaixo no meta do template:
<meta charset="utf-8"></meta>

Já as páginas que compõem o layout devem conter a linha:

<ui:fragment xmlns="http://www.w3.org/1999/xhtml"> 
já para a composição:

<ui:composition template="/faces/templates/template.xhtml"  xmlns="http://www.w3.org/1999/xhtml">

Observação:
Caso o interesse seja por iso-8859-1, basta mudar de UTF-8 para ISO-8859-1.

Simples assim:

Abraços...

quinta-feira, 9 de janeiro de 2014

Client WebService em Java - JAX WS

Iremos implementar com detalhes um projeto client de WebService usando como base nas ferramentas baixo.
- JDK 1.7
- Tomcat 7.0
- Eclipse Kepler

Iremos seguir direto para implementação do cliente, acreditando que seu ambiente de desenvolvimento já esta previamente configurado conforme acima citado.

Também iremos considerar que foi previamente criado um WebService com o Serviço EXEMPLOSERVICE.WSL.

Primeiro passo:

Crie um projeto web dinâmico como imagem abaixo:










Dê um nome sugestivo para seu projeto.
Sempre clicando no next.













Sendo assim terá um projeto criado.

Segundo passo:

Agora iremos criar nossa estrutura webService Client para acesso ao serviço ExemploService.













Nesta tela temos que escolher o serviço. Clicar em BROWSE.














Também em BROWSE.

















Achamos o arquivo WSDL, ou seja o arquivo de serviços.

















Finalizando a criação, teremos um toda a estrutura criada do WebService Client.

















Para o teste do serviço iremos implementar um servlet que fará uso do recurso de WebService Client.
Porém este não seria o recomendável, apenas será criado para fins didáticos e aproveitando o projeto web dinâmico já criado.














Exemplo da classe servlet criada para receber os parâmetros da tela.
 Continuação da classe.
 Criação do JSP.


















Exemplo do Código de JSP.
Pronto.
Basta iniciar os projetos, o Servidor de WebService e o Client de WebService.
Abra a página jsp do exemplo e basta fazer o teste.
Ainda lembramos que como o Servidor de WebService foi criado no ambiente local, a classe que implementa a chamada do serviço ficou como "http://localhost...".
Para que possa fazer uso dela em produção deve ser feita algumas alterações nestas classes, como por exemplo a URL de produção.

Abraços e fico por aqui...









WebService em Java - JAX WS

Iremos implementar com detalhes um serviço de WebService usando como base nas ferramentas baixo.
- JDK 1.7
- Tomcat 7.0
- Eclipse Kepler

Iremos seguir direto para implementação do serviço, acreditando que seu ambiente de desenvolvimento já esta previamente configurado conforme acima citado.

Primeiro passo:

Crie um projeto web dinâmico como imagem abaixo:










Dê um nome sugestivo para seu projeto.


Sempre clicando no next.













Sendo assim terá um projeto criado como abaixo.













Segundo passo:

Crie sua classe de Serviços.
Lembro que esta classe é apenas uma classe java, nada de especial nela.






























Primeira seta é o parâmetro é seu pacote, aconselho criá-lo também.
Segundo seta é o nome da sua classe.

















Então desenvolvi 3 métodos dentro de minha classe de serviços.
Servico1, Servico2 e ServicoLista.








 Terceiro passo:

Iremos agora transformar a classe de serviço criada em um WebService.
Para que não tenhamos nenhuma surpresa aconselho antes de clicar em New, selecionar a classe que irá se transformar em um WebService.





























A seta indica qual a classe que irá ser transformada em um WebService.
Se você clicou em cima da classe antes de clicar em new, irá mostrar como abaixo.
Caso não apareça já aconselho fechar a tela e voltar ao terceiro passo novamente.

















Seta abaixo indica os serviços que serão disponibilizados, caso não seja necessário todos, basta tirar a seleção de algum.

















A tela abaixo citada irá aparecer apenas se o servidor estiver parado, caso o servidor esteja rodando esta tela não irá aparecer.
Aparecendo a tela abaixo deve ser selecionada a opção SERVER.























Pronto estamos com nosso servidor de WebService criado e com os serviços disponíveis.


Abraços...

terça-feira, 13 de março de 2012


Migrando um projeto do delphi 7 para o Delphi 2010 tive alguns problemas, com relação a componentes. Estes foram todos sanados. Por último após compilar o projeto sem problemas, ao tentar programar no mesmo não abria o "code completition". Então a tecla de atalho Ctrl + espaço não respondia.
Após várias pesquisas encontrei no blog do Diego Garcia a saída:

Project Options -> Delphi Compiler -> Unit aliases contém as seguintes definições: "WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE"
Caso não tenha, em alguns lugares do código do seu programa pode ser que o code completition do delphi não funcione !
Abaixo link original:
http://unitonedev.blogspot.com/2009/10/dica-para-migrar-para-o-delphi-2010.html

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/