quarta-feira, 8 de outubro de 2014

Sugestão de site para modelagem de banco

Caros leitores, a dica de hoje é o site databaseanswers. A proposta desse site é muito interessante. Nele existem vários modelos prontos, todos esperando para ser usados por você. Ééééé simmmm, você mesmo que, é iniciante e quer fazer algum tipo de projetinho mas, não tem idéia da modelagem ou do que fazer. Então, os seus problemas acabaram. Agora é a sua hora de montar o seu banco e começar a programar.

Para acessar um modelo basta, seguir os seguintes passos:

Acessar a página

Escolha um tema

Salve a imagem



É importante observar que todos os modelos já são normalizados e que nenhum tipo de script é disponibilizado, ou seja, é necessário que você monte os scripts por sua conta.
Então, mãos à massa. O link está abaixo.

http://www.databaseanswers.org/data_models/index.htm

Agradecimento especial ao meu amigo Delson Vercosa Jr. o qual, descobriu esse site e comentou comigo.




Leia Mais ››

sexta-feira, 3 de outubro de 2014

Importância de seguir por email o blog

Caros leitores,

no canto direito superior da tela, existe um campo de texto chamado "Seguir por email".


Este campo serve para que, você, caro leitor, ponha seu e-mail e acompanhe as novidades do blog Preciso Estudar Sempre. Para cada post criado, você receberá um e-mail informativo.

Depois de escrever seu e-mail no campo de texto, aperte o botão Submit. Após ter sido pressionado, uma janela será aberta com um captcha a ser preenchido.


Preencha o captcha corretamente e aperte o botão Complete Subscription Request.



IMPORTANTE: Você receberá um e-mail com um link para ativação de sua inscrição. Clique no link e ative sua inscrição. Não apague este e-mail antes de clicar no link, ele é importante. Se você não clicar no link, sua inscrição não estará completa e você não conseguirá receber as novidades do blog.

Feito tudo isso, está pronto. Agora é só acompanhar as novidades do blog. Então, não perca tempo :D
Leia Mais ››

segunda-feira, 29 de setembro de 2014

Processamento de texto com JFileHelper

Caros leitores, resolvi escrever esse post porque não achei muito material referente a essa tecnologia. Logo, espero ajudar e contribuir a todas as pessoas que precisam de uma ajuda e não conseguiu encontrar.

A API JFileHelper serve para processamentos de texto e no meu caso foi usado para processar arquivos do formato txt mas, não sei, se é possível processar arquivos em outros formatos. Acredito que não pois, no site da API não diz nada sobre isso.

Nesse post serão usados os exemplos do site da API, a fim de facilitar o processo de aprendizagem. É possível processar texto com diferentes formatos. Quando digo formatos, quero dizer que a API suporta arquivos em que seus campos estão separados por algum caracter (, | . ; -) ou espaçamento.

Não irei abordar aqui todo o poderio que a API possui. Caso queira tal conhecimento, aconselho que visite o site oficial:

http://jfilehelpers.com/

No nosso exemplo, usaremos um arquivo em que seus campos possuem tamanho fixo. Segue abaixo:


Os pontinhos representam a quantidade de posições que cada campo possui. Para tal arquivo de texto, precisaremos construir uma classe com a seguinte estrutura.


Agora vamos às explicações e curiosidades.

@FixedLengthRecord() -> Determina que está classe irá lidar com arquivos de tamanho fixo.

@FieldFixedLength(inteiro) -> Determina que o atributo marcado terá somente o número de posições especificadas na anotação.

@FieldAlign(alignMode=AlignMode.Right) -> Determina que o campo marcado será alinhado à direita quando for retirado do texto. Para mais informações, visitar o seguinte site:

https://github.com/fcoury/jfilehelpers/blob/master/Source/src/org/coury/jfilehelpers/enums/AlignMode.java

@FieldTrim(trimMode=TrimMode.Right) -> Determina que o campo marcado terá seus espaços em branco retirados à direita. Para mais informações, visitar o seguinte site:

https://github.com/fcoury/jfilehelpers/blob/master/Source/src/org/coury/jfilehelpers/enums/TrimMode.java

@FieldConverter(converter = ConverterKind.Date, format = "dd-MM-yyyy") -> Determina que o campo será convertido para a classe especificada no atributo converter e no formato especificado no atributo format. Para mais informações, visitar o seguinte site:

https://github.com/fcoury/jfilehelpers/blob/master/Source/src/org/coury/jfilehelpers/annotations/FieldConverter.java

https://github.com/fcoury/jfilehelpers/blob/master/Source/src/org/coury/jfilehelpers/enums/ConverterKind.java

@FieldOptional -> Determina que o campo será opcional.

@FieldIgnored -> Determina que o atributo marcado será ignorado no processamento do texto.

CURIOSIDADE: A API funciona de forma posicional, ou seja, a ordem dos atributos é importante. No nosso exemplo, possuíamos o atributo name, o qual era precedido pelo atributo custId. No arquivo esta ordem deve ser mantida e vice-versa.

Caro leitor, se você possuir algum conhecimento sobre tal tecnologia ou, notar que cometi algum erro, sendo primário ou não, enriqueça-nos com seu comentário abaixo.
Leia Mais ››

segunda-feira, 8 de setembro de 2014

Projeto Spring MVC para estudos

Pessoal vou por aqui zipado um projeto pronto para fins de estudo. O projeto possui as seguintes tecnologias:


  • Spring MVC , Core, ORM e AOP 3.1.2
  • JPA
  • Hibernate 4.1.7
  • JSP e JSTL 1.2
  • JasperReports 5.1.0
  • MySQL 5.1.18
  • Servlet 1.0.1
  • Tiles 2.2.2
  • Gson 2.2.4
  • Javax Mail 1.4.3
  • Tomcat v7.0.54

Leia Mais ››

terça-feira, 2 de setembro de 2014

Máscara para RG e CPF

Seguem abaixo máscaras para RG e CPF, aceitando pontos e traços. A solução foi construída com regex na linguagem javascript.

RG (99.999.999-0): /^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\-[0-9]{1}$/


CPF (999.999.999-99): /^[0-9]{3}\.[0-9]{3}\.[0-9]{3}\-[0-9]{2}$/
Leia Mais ››

sexta-feira, 18 de julho de 2014

Como criar um projeto no Eclipse com webapp, src/main/java e etc.

Este post é sobre uma questão que eu já vinha pesquisando já tem um tempo e que me deu uma bela dor de cabeça. Porém, não vamos perder mais tempo. Mão na massa.

O meu problema era: precisava criar um simples HelloWorld com Spring MVC com a estrutura de projeto do maven. Quando digo "estrutura de projeto do maven", quero dizer um projeto web com a pasta webapp, src/main/java, entre outras.

Depois de muita dor de cabeça e muita pesquisa, achei a solução. Abaixo, a minha lista de ferramentas:

  • Eclipse Kepler
  • Maven 3.0.4 (Esse maven já veio no Eclipse)
Abra o eclipse com o seu workspace. Crie um projeto Maven seguindo os passos do vídeo abaixo.

Vídeo nº1

Se você seguiu os mesmos passos vídeo nº 1, irá notar que o container web criado foi na versão 2.3 e que não foram criados os packages src/main/java e src/test/java. Não se espante, isso é normal. Um bug acabou de acontecer.

UMMMM BUUGGGG !!!!

Como fazemos para corrigir esse bug ? Siga os passos do vídeo nº 2.

Vídeo nº 2

Nossa, nesse momento você deve estar se sentindo perdido porque, nesse vídeo realizamos vários passos.

Primeiro, vamos entender o que aconteceu. Quando o projeto foi criado, ele teve o seu arquivo de classpath gerado e nele foi especificado que outras pastas além, da pasta resources também teriam arquivos. Essas pastas são: test e java. No vídeo é possível notar que, quando abrimos o Build Path do projeto, existem duas pastas que estão faltando, justamente as pastas que citamos acima. Para resolver esse bug, ou removemos alguma das pastas do Build Path e apertamos o botão Ok ou, adicionamos uma pasta nova no File System(Windows Explorer) do projeto, adicionamos a mesma no Build Path, apertamos Ok, e depois removemos a mesma.

A segunda solução foi a usada no vídeo. Como disse acima, o que aconteceu foi um bug. Uma escrita no arquivo de classpath foi feita mas, as pastas não foram criadas. Logo, precisamos realizar alguma ação que dê um "refresh" no projeto e assim, o Eclipse irá criar as pastas corretas com as configurações corretas.

Pronto, já temos um projeto criado de forma funcional. No início do nosso post, comentei que o projeto gerado com base no archtype do Maven tem o container web na versão 2.3. Existe aí, um outro problema. A versão 2.3 é um pouco limitada, por exemplo: caso seja necessário usar EL, será necessário adicionar a declaração abaixo:

<%@ page isELIgnored="false" %>
Recomendo a leitura do post do blog do Mkyong que, explica isso e foi de lá que, consegui esta explicação.

http://www.mkyong.com/spring-mvc/modelandviews-model-value-is-not-displayed-in-jsp-via-el/

Agora imagine que, em todas as suas páginas você tenha que adicionar essa declaração. Cansativo, né ? A chance de cometer erros aumenta muito. Na versão 2.5 do container web, o uso de EL é automático e o arquivo web.xml é escrito de forma diferente. Neste momento, o caro leitor deve pensar: "Ahh !! Isso é mole, é só eu ir no Project Facets do projeto e mudar para 2.5 o web module" e eu respondo em seguida: "Você está completamente errado".

Caso alguém tente fazer o que foi pensado acima, não conseguirá pois, o Eclipse acusa um conflito. Então, mais uma vez teremos de dar nosso jeito. Siga os passos do vídeo nº 3 para mudar o web module do projeto de 2.3 para 2.5.

Vídeo nº 3

No vídeo 3 mudamos um arquivo de configuração do próprio Eclipse. Desta forma, forçamos a mudança de versão do web module mas, o arquivo web.xml também precisa ser modificado conforme é mostrado no blog do Mkyong. Com o arquivo web.xml regerado, é necessário mudar o Java Compiler do projeto pois, mexemos na versão do Java usado.

Feito isso tudo, é só começar a programar e ser feliz.

Espero que esta minha contribuição ajude a muitos pois, foi muito difícil chegar a essa solução. Caso alguma outra pessoa consiga outras soluções, diferentes das minhas, para o mesmo problema, deixe sua contribuição nos comentários.

Até a próxima.

Leia Mais ››

quarta-feira, 9 de julho de 2014

Gravar ano(Year) em banco MySQL usando Java

Caros leitores, a ajuda de hoje vai ser rápida. Vamos supor que temos a tabela abaixo:


A coluna id é do tipo Integer, a coluna nome é do tipo Varchar e a coluna data_aniversario é do tipo Year. Quando estamos lidando com uma tabela e usando Hibernate, as coisas se tornam mais fáceis porque, o hibernate grava o registro para o desenvolvedor e não é necessário montar query de INSERT e atribuir os valores a mesma. Porém, quando estamos usando JDBC puro e quando digo puro estou falando do pacote java.sql, precisamos lidar com a atribuição de valores à query e essa atribuição, às vezes, pode ser um pouco complicada.

Para tratarmos a gravação de dados com colunas do tipo Year, fazemos da seguinte forma:

String query = "INSERT .....";
...
preparedStatement.setInt(1, obj.getId());
preparedStatement.setString(2, obj.getNome());

Calendar c = Calendar.getInstance();
c.setTime(obj.getAnoNascimento());
preparedStatement.setInt(3, c.get(c.YEAR));

preparedStatement.execute();

É isso galera, espero ter ajudado. Ficamos por aqui hoje.
Leia Mais ››