Projeto para gerenciar entregas “Manager Deliveries”

Olá a todos!

Abaixo segue o projeto Manager Deliveries que se trata de um gerenciador de entregas, interessados em adquirir o sistema entrar em contato.

Tecnologias usadas:

  1. JavaSE
  2. PostgreSQL
  3. Hiberante
  4. Ireport
  5. Power Architect
  6. JFreeChart
  7. Eclipse
  8. JBoss Tools
  9. SwingX

O sistema gerencia toda parte de clientes, fornecedor, compras, estoque e mostra o status de cada entrega, pondendo ser realizado filtro por qualquer tipo de status seja em débito, paga, por data. O sistema realiza o cálculo de acordo com a distancia da casa do cliente para saber o total de kilometros percorridos.

Com este sistema você pode manter o controle dos seus clientes, fornecedores, estoque, compras e vendas de uma forma super rápida e eficaz.

Clique neste link para assistir o vídeo de demonstração do sistema.

Abaixo segue algumas imagens do sistema.

Tela principal  Tela de entrega realizando filtro Tela de compra Verificando estoque

Banco de dados HSQLDB com JBoss AS 5.1GA e Hibernate

Olá a todos!

Abaixo segue os passos para configuração e instalação do banco de dados HSQLDB e como realizar a conexão com seu projeto java web que é executado em um servidor de aplicação JBoss AS 5.1 GA utilizando Hibernate.

Esses procedimentos serão realizados no sistema operacional Ubuntu.

Primeiro passo é realizar o download do banco de dados HSQLDB neste link.

Após o download descompacte o arquivo em um diretório de sua preferência, dentro do diretório descompactado acesse /hsqldb/bin e crie um arquivo interface.sh com a seguinte linha de comando java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing.

Depois de criado o arquivo com o botão direito do mouse vá em propriedades-permissões e marque a opção Permitir execução de arquivo como um programa, pronto, após executar o arquivo você terá a interface gráfica do HSQLDB para criar seu bancos.

hsqldb

Tela inicial do HSQLDB

Para criar sua base de dados na opção:

  • TYPE: HSQL Database Engine Standalone
  • URL:   jdbc:hsqldb:file:/home/danilo/Tools/jboss-5.1.0.GA/server/default/data/hypersonic/nameDatabase

Na URL insira o caminho até o diretório hypersonic depois /nome do banco, o diretório hypersonic é o padrão para inserir a base de dados HSQLDB no JBoss.

Pronto, sua base de dados foi criada dentro do servidor de aplicação JBoss.

O JBoss usa um arquivo-ds.xml para realizar a conexão com o banco, abaixo segue esse arquivo:


<?xml version="1.0" encoding="UTF-8"?>

<datasources>

<local-tx-datasource>

<jndi-name>nameProjectDatasource</jndi-name>
<connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}nameDataBase</connection-url>

<driver-class>org.hsqldb.jdbcDriver</driver-class>

<user-name>sa</user-name>
<password></password>

<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>

<idle-timeout-minutes>0</idle-timeout-minutes>
<prepared-statement-cache-size>32</prepared-statement-cache-size>

<metadata>
    <type-mapping>Hypersonic SQL</type-mapping>
</metadata>

<depends>jboss:service=Hypersonic,database=nameDataBase</depends>
</local-tx-datasource>

<mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic,database=nameDataBase">
    <attribute name="Database">nameDataBase</attribute>
    <attribute name="InProcessMode">true</attribute>
</mbean>

</datasources>

Agora vamos criar as tabelas do banco de dados.

O HSQLDB possuí 3 tipos de criação de tabelas:

  • TEXT: Esse tipo de tabela não é abordada neste post.
  • MEMORY: É o padrão do HSQLDB, estas tabelas são criadas com o comando  “CREATE TABLE”. Os dados desse tipo de tabela são armazenados em memória. Todas alterações feitas são reportadas para o arquivo nameDataBase.script que é carregado toda vez o que o sistema é inicializado.
  • CACHED : Diferente das tabelas do tipo MEMORY, as tabelas CACHED  que são criadas através do comando “CREATE CACHED TABLE”. Com esse formato de tabela, parte de seus índices e dados são mantidos em memória, proporcionando melhor performance. Esse tipo de tabela é a mais indicada para quando se quer armazenar uma grande quantidade de dados.

Abaixo segue um exemplo de como criar um tabela simples na base de dados:

CREATE CACHED TABLE PUBLIC.ALUNOS(ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL,NAME VARCHAR(50) NOT NULL)

Criando tabela no HSQLDB

Espero que o post ajude.

Até mais…

Problema com Touchpad no Linux

Olá a todos.

Ao instalar o Ubuntu 12.04 LTS no meu notebook percebi que o touchpad não funcionava, após algumas pesquisas encontrei algumas soluções para esse problema.

Uma solução é a seguinte, abra o terminal e digite os comandos abaixo:

# sudo su
# modprobe -r psmouse
# modprobe psmouse proto=imps

Após verifique se o Tochpad voltou a funcionar.

Uma outra solução é a seguinte, abra o termina e digite os comandos abaixo:

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator
touchpad-indicator

Caso está solução não funcione ou a primeira solução resolva seu problema e deseje deseintalar o touchpad-indicator digite o seguinte comando:

sudo apt-get remove –purge touchpad-indicator

Espero que o post ajude.

Até mais.

Enviando email utlizando a API Apache Commons

Olá a todos!

Abaixo segue o código para envio de emails usando a API Apache Commons.

Antes de iniciar, faça o download da API em http://commons.apache.org/proper/commons-email/download_email.cgi e coloque no seu projeto.

Para um código mais limpo e utilizando o recurso de orientação a objetos vamos dividir o envio de emails em duas classes, sendo uma para armazenar as informações e outra para realizar o envio.

Assim teremos as classes:

  • MailInformation.java – Responsável por armazenar todas as informações necessárias para o envio.
  • ApacheMailSender.java – Responsável por realizar o envio dos emails.

Abaixo a classe MailInformation.java:


package br.com.danilo.email;

import java.util.List;
import java.util.Map;

public class MailInformation {

     public static final String TYPE_TEXT_PLAIN = &quot;text/plain&quot;;
     public static final String TYPE_TEXT_HTML = &quot;text/html&quot;;

     private String smtpHostMail = null;
     private String smtpPortMail = null;
     private String smtpAuth = null;
     private String smtpStarttls = null;
     private String fromNameMail = null;
     private String userMail = null;
     private String passMail = null;
     private String subjectMail = null;
     private String bodyMail = null;
     private Map&lt;String, String&gt; toMailUsers = null;
     private List fileMails = null;
     private String chartSetMail = null;
     private String typeTextMail = null;

     public String getSmtpHostMail() {
         return smtpHostMail;
     }

     public void setSmtpHostMail(String smtpHostMail) {
         this.smtpHostMail = smtpHostMail;
     }

     public String getSmtpPortMail() {
         return smtpPortMail;
     }

    public void setSmtpPortMail(String smtpPortMail) {
        this.smtpPortMail = smtpPortMail;
    }

    public String getSmtpAuth() {
        return smtpAuth;
     }

     public void setSmtpAuth(String smtpAuth) {
         this.smtpAuth = smtpAuth;
     }

     public String getSmtpStarttls() {
         return smtpStarttls;
     }

     public void setSmtpStarttls(String smtpStarttls) {
         this.smtpStarttls = smtpStarttls;
     }

     public String getFromNameMail() {
        return fromNameMail;
     }

     public void setFromNameMail(String fromNameMail) {
         this.fromNameMail = fromNameMail;
     }

     public String getUserMail() {
         return userMail;
     }

     public void setUserMail(String userMail) {
         this.userMail = userMail;
     }

     public String getPassMail() {
         return passMail;
     }

     public void setPassMail(String passMail) {
         this.passMail = passMail;
     }

     public String getSubjectMail() {
        return subjectMail;
     }

     public void setSubjectMail(String subjectMail) {
         this.subjectMail = subjectMail;
     }

     public String getBodyMail() {
         return bodyMail;
     }

     public void setBodyMail(String bodyMail) {
        this.bodyMail = bodyMail;
     }

     public List getFileMails() {
         return fileMails;
     }

     public void setFileMails(List fileMails) {
         this.fileMails = fileMails;
     }

     public Map&lt;String, String&gt; getToMailUsers() {
         return toMailUsers;
     }

     public void setToMailUsers(Map&lt;String, String&gt; toMailUsers) {
         this.toMailUsers = toMailUsers;
     }

     public String getChartSetMail() {
         return chartSetMail;
     }

     public void setChartSetMail(String chartSetMail) {
         this.chartSetMail = chartSetMail;
     }

     public String getTypeTextMail() {
         return typeTextMail;
     }

    public void setTypeTextMail(String typeTextMail) {
        this.typeTextMail = typeTextMail;
     }

}

Abaixo a Classe ApacheMailSender.java


package br.com.danilo.email;

import java.util.Map;

import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class ApacheMailSender {

	public void senderMail(final MailInformation mailInformation) throws EmailException {
		try {
			Email email = new SimpleEmail();

			email.setHostName(mailInformation.getSmtpHostMail());
			email.setSmtpPort(Integer.valueOf(mailInformation.getSmtpPortMail()));
			email.setAuthenticator(new DefaultAuthenticator(mailInformation.getUserMail(), mailInformation.getPassMail()));
			email.setSSLOnConnect(true);

			email.setFrom(mailInformation.getUserMail(), mailInformation.getFromNameMail());

			for (Map.Entry&lt;String, String&gt; map : mailInformation.getToMailUsers().entrySet()) {
				email.addTo(map.getKey(), map.getValue());
			}

			email.setSubject(mailInformation.getSubjectMail());
			email.setMsg(mailInformation.getBodyMail());

			email.send();
		} catch (NumberFormatException e) {
			throw new NumberFormatException();
		} catch (EmailException e) {
			e.printStackTrace();
			throw new EmailException();
		}
	}

}

Abaixo segue um trecho de código mostrando como enviar email utilizando as classes MailInformation.java e ApacheMailSender.java.


try {

     MailInformation mailInformation = new MailInformation();

     mailInformation.setSmtpHostMail(&quot;yourHost&quot;); // Insira o seu host aqui
     mailInformation.setSmtpPortMail(&quot;yourPort&quot;); // Insira a porta usada pelo host aqui
     mailInformation.setSmtpStarttls(&quot;true&quot;); // Use true para o start tls
     mailInformation.setSmtpAuth(&quot;true&quot;); // Use true para Autenticação
     mailInformation.setUserMail(&quot;yourEmail&quot;); // Insira seu email aqui
     mailInformation.setPassMail(&quot;yourPassword&quot;); // Insira sua senha aqui
     mailInformation.setChartSetMail(&quot;UTF-8&quot;); // Geralmente se usa UTF-8

     mailInformation.setTypeTextMail(MailInformation.TYPE_TEXT_PLAIN);
     mailInformation.setFromNameMail(&quot;mailFrom&quot;); // Insira o nome do remetnente aqui
     mailInformation.setSubjectMail(&quot;mailTitle&quot;); // Insira o titulo do email aqui

     mailInformation.setBodyMail(&quot;BodyMail&quot;); // Insira o corpo do email aqui

     Map&lt;String, String&gt; toMailUsers = new HashMap&lt;String, String&gt;();

     //usando a variável toMailUsers, adicione a lista os usuários de email
     //de destinatários

     List&lt;String&gt; files = new ArrayList&lt;String&gt;();

     files.add(&quot;path&quot;); //É possível inserir anexos informando o caminho a files

     mailInformation.setFileMails(files); //Inserindo a lista anexos

     mailInformation.setToMailUsers(toMailUsers); //Inserindo a lista de Usuários

     ApacheMailSender mailSender = new ApacheMailSender();

     mailSender.senderMail(mailInformation); //Aqui o email é enviado.
} catch (BeansException e) {
 e.printStackTrace();
} catch (EmailException e) {
 e.printStackTrace();
}

Foram inseridos alguns comentários para auxiliar o entendimento do trecho que envia o email.

Espero que o post ajude.

Até mais.

Enviando email utlizando a API JavaMail

Olá a todos!

Abaixo segue o código para envio de emails usando a API JavaMail.jar.

Antes de iniciar, faça o download da API em http://www.oracle.com/technetwork/java/index-138643.html e coloque no seu projeto.

Para um código mais limpo e utilizando o recurso de orientação a objetos vamos dividir o envio de emails em duas classes, sendo uma para armazenar as informações e outra para realizar o envio.

Assim teremos as classes:

  • MailInformation.java – Responsável por armazenar todas as informações necessárias para o envio.
  • MailSender.java – Responsável por realizar o envio do email.

Abaixo a classe MailInformation.java:


package br.com.danilo.email;

import java.util.List;
import java.util.Map;

public class MailInformation {

     public static final String TYPE_TEXT_PLAIN = &amp;quot;text/plain&amp;quot;;
     public static final String TYPE_TEXT_HTML = &amp;quot;text/html&amp;quot;;

     private String smtpHostMail = null;
     private String smtpPortMail = null;
     private String smtpAuth = null;
     private String smtpStarttls = null;
     private String fromNameMail = null;
     private String userMail = null;
     private String passMail = null;
     private String subjectMail = null;
     private String bodyMail = null;
     private Map&amp;lt;String, String&amp;gt; toMailUsers = null;
     private List fileMails = null;
     private String chartSetMail = null;
     private String typeTextMail = null;

     public String getSmtpHostMail() {
         return smtpHostMail;
     }

     public void setSmtpHostMail(String smtpHostMail) {
         this.smtpHostMail = smtpHostMail;
     }

     public String getSmtpPortMail() {
         return smtpPortMail;
     }

    public void setSmtpPortMail(String smtpPortMail) {
        this.smtpPortMail = smtpPortMail;
    }

    public String getSmtpAuth() {
        return smtpAuth;
     }

     public void setSmtpAuth(String smtpAuth) {
         this.smtpAuth = smtpAuth;
     }

     public String getSmtpStarttls() {
         return smtpStarttls;
     }

     public void setSmtpStarttls(String smtpStarttls) {
         this.smtpStarttls = smtpStarttls;
     }

     public String getFromNameMail() {
        return fromNameMail;
     }

     public void setFromNameMail(String fromNameMail) {
         this.fromNameMail = fromNameMail;
     }

     public String getUserMail() {
         return userMail;
     }

     public void setUserMail(String userMail) {
         this.userMail = userMail;
     }

     public String getPassMail() {
         return passMail;
     }

     public void setPassMail(String passMail) {
         this.passMail = passMail;
     }

     public String getSubjectMail() {
        return subjectMail;
     }

     public void setSubjectMail(String subjectMail) {
         this.subjectMail = subjectMail;
     }

     public String getBodyMail() {
         return bodyMail;
     }

     public void setBodyMail(String bodyMail) {
        this.bodyMail = bodyMail;
     }

     public List getFileMails() {
         return fileMails;
     }

     public void setFileMails(List fileMails) {
         this.fileMails = fileMails;
     }

     public Map&amp;lt;String, String&amp;gt; getToMailUsers() {
         return toMailUsers;
     }

     public void setToMailUsers(Map&amp;lt;String, String&amp;gt; toMailUsers) {
         this.toMailUsers = toMailUsers;
     }

     public String getChartSetMail() {
         return chartSetMail;
     }

     public void setChartSetMail(String chartSetMail) {
         this.chartSetMail = chartSetMail;
     }

     public String getTypeTextMail() {
         return typeTextMail;
     }

    public void setTypeTextMail(String typeTextMail) {
        this.typeTextMail = typeTextMail;
     }

}

Abaixo a Classe MailSender.java


package br.com.danilo.email;

import java.io.UnsupportedEncodingException;
import java.util.Map;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class MailSender {

    public void senderMail(final MailInformation mail) throws                                                                          UnsupportedEncodingException, MessagingException {
    Properties properties = new Properties();

    properties.setProperty(&amp;quot;mail.transport.protocol&amp;quot;, &amp;quot;smtp&amp;quot;);
    properties.setProperty(&amp;quot;mail.host&amp;quot;, mail.getSmtpHostMail());
    properties.setProperty(&amp;quot;mail.smtp.auth&amp;quot;, mail.getSmtpAuth());
    properties.setProperty(&amp;quot;mail.smtp.starttls.enable&amp;quot;, mail.getSmtpStarttls());
    properties.setProperty(&amp;quot;mail.smtp.port&amp;quot;, mail.getSmtpPortMail());
    properties.setProperty(&amp;quot;mail.mime.chartset&amp;quot;, mail.getChartSetMail());

    properties.setProperty(&amp;quot;mail.smtp.ssl.trust&amp;quot;, &amp;quot;*&amp;quot;);

    Authenticator authenticator = new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(mail.getUserMail(), mail.getPassMail());
        }
    };

    Session session = Session.getDefaultInstance(properties, authenticator);
    session.setDebug(false);

    Message message = new MimeMessage(session);

    message.setFrom(new InternetAddress(mail.getUserMail(), mail.getFromNameMail()));

    boolean first = true;

     for (Map.Entry&amp;lt;String, String&amp;gt; map : mail.getToMailUsers().entrySet()) {
         if (first) {
             message.addRecipient(Message.RecipientType.TO, new InternetAddress(map.getKey(), map.getValue()));
         first = false;
         } else {
             message.addRecipient(Message.RecipientType.CC, new InternetAddress(map.getKey(), map.getValue()));
         }
     }

     message.setSubject(mail.getSubjectMail());

     MimeBodyPart mimeBodyPart = new MimeBodyPart();

     mimeBodyPart.setContent(mail.getBodyMail(), mail.getTypeTextMail());

     Multipart multipart = new MimeMultipart();

     for (int i = 0; i &amp;lt; mail.getFileMails().size(); i++) {
         MimeBodyPart bodyPart = new MimeBodyPart();

         FileDataSource dataSource = new FileDataSource(mail.getFileMails().get(i));

         bodyPart.setDataHandler(new DataHandler(dataSource));
         bodyPart.setFileName(dataSource.getName());

         multipart.addBodyPart(bodyPart, i);
     }
         multipart.addBodyPart(mimeBodyPart);
         message.setContent(multipart);
         Transport.send(message);

     }

}

Abaixo segue um trecho de código mostrando como enviar email utilizando as classes MailInformation.java e MailSender.java.

try {

 MailInformation mailInformation = new MailInformation();

 mailInformation.setSmtpHostMail("yourHost"); // Insira o seu host aqui
 mailInformation.setSmtpPortMail("yourPort"); // Insira a porta usada pelo host aqui
 mailInformation.setSmtpStarttls("true"); // Use true para o start tls
 mailInformation.setSmtpAuth("true"); // Use true para Autenticação
 mailInformation.setUserMail("yourEmail"); // Insira seu email aqui
 mailInformation.setPassMail("yourPassword"); // Insira sua senha aqui
 mailInformation.setChartSetMail("UTF-8"); // Geralmente se usa UTF-8

 mailInformation.setTypeTextMail(MailInformation.TYPE_TEXT_PLAIN);
 mailInformation.setFromNameMail("mailFrom"); // Insira o nome do remetnente aqui
 mailInformation.setSubjectMail("mailTitle"); // Insira o titulo do email aqui

 mailInformation.setBodyMail("BodyMail"); // Insira o corpo do email aqui

 Map<String, String> toMailUsers = new HashMap<String, String>();

 //usando a variável toMailUsers, adicione a lista os usuários de email
 //de destinatários lembrando que a partir do primeiro email os demais são
 //considerados cópias.

 List<String> files = new ArrayList<String>();

 files.add("path"); //É possível inserir anexos informando o caminho a files

 mailInformation.setFileMails(files); //Inserindo a lista anexos

 mailInformation.setToMailUsers(toMailUsers); //Inserindo a lista de Ususários

 MailSender mailSender = new MailSender();
				
 mailSender.senderMail(mailInformation); // Aqui o email é enviado

} catch (BeansException e) {
    e.printStackTrace();
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
} catch (MessagingException e) {
    e.printStackTrace();
}

Aumentando a memória alocada para a IDE Eclipse

Olá a todos!

Abaixo segue os passos para aumentar a quantidade de memória alocada na JVM – Java Virtual Machine para uso da IDE de desenvolvimento Eclipse.

Vá até o diretório onde se encontra a IDE Eclipse e abra o arquivo eclipse.ini e edite as seguintes linhas descritas abaixo:

-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=1024m
-Xms1024m
-Xmx1024m

Pronto, após reiniciar sua IDE Eclipse elá tera 1G de memória alocada na JVM, o que te deixa mais tranquilo para trabalhar evitando alguns travamentos indesejados durante o desenvolvimento.

Até mais