<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Boteco Digital &#187; Java</title>
	<atom:link href="http://www.botecodigital.info/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.botecodigital.info</link>
	<description></description>
	<lastBuildDate>Wed, 01 Sep 2010 13:36:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Validando dados com expressões regulares em Java</title>
		<link>http://www.botecodigital.info/java/validando-dados-com-expressoes-regulares-em-java/</link>
		<comments>http://www.botecodigital.info/java/validando-dados-com-expressoes-regulares-em-java/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 11:00:31 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[expressoes regulares]]></category>
		<category><![CDATA[validar dados]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=1140</guid>
		<description><![CDATA[O que é validar dados? Podemos dizer que validar dados é verificar se os dados informados pelos usuários( insira aqui seu apelido carinhoso ) estão em um formato que não irá danificar nosso programa,ou seja, que os dados informados terão a forma e os valores desejados( acredite o usuário vai digitar letras em um campo numérico). Como você pode ver no titulo deste post vamos utilizar expressões regulares para validar nossos dados, mas que diabos é uma expressão regular? Simplificando [...]]]></description>
			<content:encoded><![CDATA[<p>O que é validar dados? Podemos dizer que validar dados é verificar se os dados informados pelos usuários( insira aqui seu apelido carinhoso ) estão em um formato que não irá danificar nosso programa,ou seja,  que os dados informados terão a forma e os valores desejados( acredite o usuário vai digitar letras em um campo numérico).</p>
<p>Como você pode ver no titulo deste post vamos utilizar expressões regulares para validar nossos dados, mas que diabos é uma expressão regular? Simplificando uma expressão regular é uma série de caracteres capaz de descrever outras séries de caracteres. Complicado? Um pouco no inicio talvez, mas vamos com calma analisando um exemplo simples, um telefone por exemplo</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">3412-1234</pre></div></div>

<p>Como podemos ver este dado é composto somente de caracteres numéricos e é formatado com quatro caracteres numéricos, um caractere “-” e mais quatro caracteres numéricos. Vejamos como ficaria a expressão regular que expressaria essa regra:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">\d{4,4}-\d{4,4}</pre></div></div>

<p>Esta expressão poderia descrever diversos telefones que seguirem esta regra de formatação, por exemplo os telefones abaixo:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">3414-4974
9698-1101
3412-1234</pre></div></div>

<p>e não encontraria os seguintes.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">12902398
13244-54452
asdf-hjkl</pre></div></div>

<p>Então vamos destrinchar a expressão </p>
<p><strong>\d</strong>: É um meta caractere do tipo representante, que no caso representa um caractere numérico, ou  seja de 0-9<br />
<strong>{4,4}</strong>: É um quantificador ele representa quantas vezes o caractere anterior pode ser repetido, no caso no minimo quatro e no máximo quatro.<br />
<strong>-</strong> : o caractere “-” mesmo!</p>
<h5>Meta caractere, quantificador? </h5>
<p>Calma não criemos pânico! Um representante é um caractere que representa uma série de outros caracteres. </p>
<h6>Meta caracteres</h6>
<p><strong>\d</strong>: Um dígito<br />
<strong>\s</strong>: Um caractere de espaço em branco<br />
<strong>\w</strong>: Um caractere de palavra(letras, dígitos ou “_”)<br />
<strong>.</strong> : Qualquer caractere</p>
<p>Um aviso importante é que para utilizá-los em uma aplicação dentro de uma <em>String</em> devemos escapar as barras com mais uma barra. Então para validar um número inteiro devemos utilizar a seguinte expressão:</p>
<pre>
"\\d"
</pre>
<p>Se nos interessar pesquisar por um grupo limitado de caracteres podemos especificar uma lista através de colchetes. Por exemplo a lista <em>[abc]</em> irá somente encontrar os caracteres “a”, “b” ou “c”</p>
<p><strong>“[bcf]aixa”</strong>  irá encontrar as seguintes palavras “baixa”, “caixa” e “faixa”</p>
<p><strong>“Texto[1234]”</strong> irá encontrar as seguintes palavras “Texto1”, “Texto2”, “Texto3”</p>
<p>Também podemos especificar um intervalo de valores utilizando um hífen dentro do colchete.</p>
<p><strong>“[a-z]teste”</strong> irá encontrar as seguintes palavras “ateste”, “dteste”, ”oteste”, “pteste”</p>
<p>Bom  até agora vimos como encontrar um caractere, mas se quisermos que este caractere pudesse ser repetido inúmeras vezes? Utilizaríamos um quantificador, que é um caractere que informa quantas vezes um meta caractere pode/deve ser repetido.</p>
<h6>Quanificadores</h6>
<p><strong>?</strong>: Pode se repetir 0 ou 1  vez<br />
<strong>*</strong>: Pode se repetir uma ou várias vezes<br />
<strong>+</strong>: Pode se repetir uma ou várias vezes<br />
{n,m}: Pode se repetir de n até m vezes</p>
<p>Agora podemos criar algumas expressões um pouco mais rebuscadas, como uma para validar placas de carros:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">“[a-zA-Z]{3,3}-\\d{4,4}”</pre></div></div>

<p>Vamos analisar a expressão, temos entre colchetes duas listas que informam que só será aceito caractere de &#8220;a&#8221; até &#8220;z&#8221; tanto maiúsculo como minusculo que podem ser repetido no minimo 3 vezes e no máximo 3 vezes. Seguido deve possuir um traço e após um caractere numérico que pode se repetir no minimo 4 vezes e no máximo 4 vezes.</p>
<p>Agora vamos ao código Java para validar:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.regex.Matcher</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.regex.Pattern</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ValidaPlaca <span style="color: #009900;">&#123;</span>
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        Pattern pattern <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;[a-zA-Z]{3,3}-<span style="color: #000099; font-weight: bold;">\\</span>d{4,4}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        Matcher matcher <span style="color: #339933;">=</span> pattern.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ETE-1234&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> matcher.<span style="color: #006633;">find</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Encontrou&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Não encontrou&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Na linha 8 criamos um objeto <em>Pattern</em> que é responsável por armazenar uma expressão regular que será utilizado pelo objeto <em>Matcher</em> que é responsável pelas buscar. </p>
<p>O método <em>find()</em>(linha 11) retorna <em>true</em> se encontrar o padrão de caracteres especificado pelas expressões regulares na <em>String</em> passada na linha 12.</p>
<p>O objeto <em>Matcher</em> pode buscar várias ocorrências do padrão em sua <em>String</em> possuindo métodos para retornar estas ocorrências e e suas posições. Veja o exemplo abaixo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.regex.Matcher</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.regex.Pattern</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ValidaPlaca <span style="color: #009900;">&#123;</span>
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        Pattern pattern <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;[a-zA-Z]{3,3}-<span style="color: #000099; font-weight: bold;">\\</span>d{4,4}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        Matcher matcher <span style="color: #339933;">=</span> pattern.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ETE-1234 ZXC-4567 cdr-0987&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">boolean</span> b <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span> b <span style="color: #339933;">=</span> matcher.<span style="color: #006633;">find</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> b <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> matcher.<span style="color: #006633;">group</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot; - Posição: &quot;</span><span style="color: #339933;">+</span>matcher.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
                <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Não encontrou&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Você pode fazer mais uns teste com outras expressões como:</p>
<h6>CEP</h6>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #ff0000;">&quot;^\\d{5,5}-?\\d{3,3}$&quot;</span></pre></div></div>

<p></p>
<h6>E-mail(não está 100% mas dá para ter uma idéia)</h6>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #ff0000;">&quot;^[a-zA-Z0-9_\\.-]+@([a-zA-Z0-9]\\.)*([a-zA-Z0-9])*\\.&quot;</span></pre></div></div>

<p>Uma ótima referência para aprender mais é através do <a href="http://guia-er.sourceforge.net/index.html">Expressões Regulares &#8211; Guia de Consulta Rápida por Aurélio Marinho Jargas </a></p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/java/validando-dados-com-expressoes-regulares-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manipulando datas em Java</title>
		<link>http://www.botecodigital.info/java/manipulando-datas-em-java/</link>
		<comments>http://www.botecodigital.info/java/manipulando-datas-em-java/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 19:59:39 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[datas]]></category>
		<category><![CDATA[desenvolvimento]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=959</guid>
		<description><![CDATA[Para quem está começando, trabalhar com datas em Java pode ser um pouco complicado, já que a classe Date não fornece todos os recursos necessários. Para completá-la é também utilizada a classe Calendar, que é uma classe abstrata que permite a manipulação de datas de forma mais fácil. Date(java.util.Date) A classe Date armazena uma data e hora, que internamente é armazenada com um inteiro long que é o numero de milissegundos que se passou desde 01/01/1970. Esta classe é bem [...]]]></description>
			<content:encoded><![CDATA[<p>Para quem está começando, trabalhar com datas em Java pode ser um pouco complicado, já que a classe <strong>Date</strong> não fornece todos os recursos necessários. Para completá-la é também utilizada a classe <strong>Calendar</strong>, que é uma classe abstrata que permite a manipulação de datas de forma mais fácil.</p>
<h3>Date(java.util.Date)</h3>
<p>A classe <strong>Date</strong> armazena uma data e hora, que internamente é armazenada com um inteiro long que é o numero de milissegundos que se passou desde 01/01/1970. </p>
<p>Esta classe é bem simples de se trabalhar, mas muitos de seus métodos foram depreciados por não trabalhar muito bem com internacionalização e etc.  </p>
<p>Para obter a data atual se basta criar um objeto <strong>Date</strong> sem nenhum parâmetro.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Date</span> d <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Calendar(java.util.Calendar)</h3>
<p>A classe <strong>Calendar</strong> sendo uma classe abstrata não pode ser instanciada com o operador new, ela deve ser criada utilizando um operador estático sobrecarregado <strong>getInstance()</strong>. Na maioria das vezes você vai receber uma instância de Java.util.GregorianCalendar.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Calendar</span> c <span style="color: #339933;">=</span> <span style="color: #003399;">Calendar</span>.<span style="color: #006633;">getIntance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Com a instância de <strong>Calendar</strong> devemos configurar uma data e podemos fazer isso de duas formas: </p>
<h6>Métodos set</h6>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">c.<span style="color: #006633;">set</span><span style="color: #009900;">&#40;</span>ano,mes,dia<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #006633;">set</span><span style="color: #009900;">&#40;</span>ano,mês,dia,hora,minuto<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #006633;">set</span><span style="color: #009900;">&#40;</span>ano,mês,dia,hora,minuto,segundo<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h6>Método setTime</h6>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">c.<span style="color: #006633;">setTime</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>A classe <strong>Calendar</strong> também nos fornece  várias constantes que utilizaremos para manipular uma data entre elas.</p>
<p>Com a data devidamente configurada podemos realizar diversas operações com a data:</p>
<p>Para adicionar ou subtrair um dia, hora, mês ou ano utilizamos o método <strong>add</strong>. O método <strong>add</strong> aceita dois parâmetros, sendo o primeiro um constante inteira que representa a unidade da data que queremos modificar(dia, mês , ano, etc&#8230;) e o segundo quantas vezes será adicionada/subtraída esta unidade.</p>
<p>A unidade é informada utilizando constantes fornecidas pela classe <strong>Calendar</strong> que pode ser:</p>
<h6>Dia:</h6>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Calendar</span>.<span style="color: #006633;">DAY_OF_MONTH</span>
<span style="color: #003399;">Calendar</span>.<span style="color: #006633;">DAY_OF_WEEK</span>
<span style="color: #003399;">Calendar</span>.<span style="color: #006633;">DAY_OF_YEAR</span></pre></div></div>

<h6>Mês:</h6>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Calendar</span>.<span style="color: #006633;">MONTH</span></pre></div></div>

<h6>Ano:</h6>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Calendar</span>.<span style="color: #006633;">YEAR</span></pre></div></div>

<h6>Hora:</h6>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Calendar</span>.<span style="color: #006633;">HOUR</span>
<span style="color: #003399;">Calendar</span>.<span style="color: #006633;">HOUR_OF_DAY</span></pre></div></div>

<h6>Segundos:</h6>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Calendar</span>.<span style="color: #006633;">SECOND</span></pre></div></div>

<p>Veja o exemplo abaixo:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Date</span> d<span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">Calendar</span> c <span style="color: #339933;">=</span> <span style="color: #003399;">Calendar</span>.<span style="color: #006633;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Calendar</span>.<span style="color: #006633;">DAY_OF_YEAR</span>,<span style="color: #cc66cc;">5</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//adicionamos 5 dias a data aual</span>
c.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Calendar</span>.<span style="color: #006633;">MONTH</span>,<span style="color: #cc66cc;">3</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//adicionamos 3 mêses a data atual</span>
c.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Calendar</span>.<span style="color: #006633;">YEAR</span>,<span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//adicionamos 1 ano a data atual</span></pre></div></div>

<h3>DateFormat(java.text.DateFormat)</h3>
<p>Bom agora sabemos como manipula datas, agora precisamos formatar a data para apresentação. A classe <strong>DateFormat</strong> nos fornece uma maneira simples de formatá-la e permite a internacionalização a partir da classe <strong>Locale</strong>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">        <span style="color: #003399;">Date</span> d <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">Calendar</span> c <span style="color: #339933;">=</span> <span style="color: #003399;">Calendar</span>.<span style="color: #006633;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        c.<span style="color: #006633;">setTime</span><span style="color: #009900;">&#40;</span>d<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003399;">DateFormat</span> df <span style="color: #339933;">=</span> <span style="color: #003399;">DateFormat</span>.<span style="color: #006633;">getDateInstance</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">DateFormat</span>.<span style="color: #006633;">SHORT</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> df.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span>c.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Para obtermos uma String da data utilizamos o método <strong> format</strong> que retorna uma String no formato especificado no método <strong>getDateInstance()</strong>. A saída do exemplo acima será algo como 03/04/10.</p>
<p>A classe <strong>DateForma</strong> nos fornece vários tipos de formato para data como:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Dateformat.<span style="color: #006633;">SHORT</span> <span style="color: #666666; font-style: italic;">// 03/04/10</span>
Dateformat.<span style="color: #006633;">MEDIUM</span> <span style="color: #666666; font-style: italic;">// 03/04/2010</span>
Dateformat.<span style="color: #006633;">LONG</span> <span style="color: #666666; font-style: italic;">//3 de Abril de 2010</span>
Dateformat.<span style="color: #006633;">FULL</span> <span style="color: #666666; font-style: italic;">//Sábado, 3 de Abril de 2010</span></pre></div></div>

<p>Embora para muitos casos estes formatos serão suficientes algumas vezes necessitamos de uma formato vem personalizado. Isso pode ser feio através de um subclasse de <strong>DateFormat</strong> a <strong>SimpleDateFormat</strong>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">        <span style="color: #003399;">Date</span> hoje  <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">SimpleDateFormat</span> sdf <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">SimpleDateFormat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;dd/MM/yyyy HH:mm:ss&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> sdf.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span>hoje<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>O construtor de <strong>SimpleDateFormat</strong> recebe uma String que representa o formato da data. Os símbolos utilizados para cada campo da data pode ser visto na tabela abaixo abaixo:</p>
<table>
<tr>
<th>Símbolo</th>
<th>Significado</th>
<th>Apresentação</th>
<th>Exemplo</th>
</tr>
<tr>
<td>G</td>
<td>era designator</td>
<td>(Text)</td>
<td>AD</td>
</tr>
<tr>
<td>y</td>
<td>year</td>
<td>(Number)</td>
<td>1996</td>
</tr>
<tr>
<td>M</td>
<td>month in year</td>
<td>(Text &#038; Number)</td>
<td>July &#038; 07      </td>
</tr>
<tr>
<td>d</td>
<td>day in month</td>
<td>(Number)</td>
<td>10    </td>
</tr>
<tr>
<td>h</td>
<td>hour in am/pm (1~12)</td>
<td>(Number)</td>
<td>12</td>
</tr>
<tr>
<td>H</td>
<td>hour in day (0~23)</td>
<td>(Number)</td>
<td>0</td>
</tr>
<tr>
<td>m</td>
<td>minute in hour</td>
<td>(Number)</td>
<td>30</td>
</tr>
<tr>
<td>s</td>
<td>second in minute</td>
<td>(Number)</td>
<td>55</td>
</tr>
<tr>
<td>S</td>
<td>millisecond</td>
<td>(Number)</td>
<td>978</td>
</tr>
<tr>
<td>E</td>
<td>day in week</td>
<td>(Text)</td>
<td>Tuesday</td>
</tr>
<tr>
<td>D</td>
<td>day in year</td>
<td>(Number)</td>
<td>189</td>
</tr>
<tr>
<td>F</td>
<td>day of week in month</td>
<td>(Number)</td>
<td>2 (2nd Wed in July)</td>
</tr>
<tr>
<td>w</td>
<td>week in year</td>
<td>(Number)</td>
<td>27</td>
</tr>
<tr>
<td>W</td>
<td>week in month</td>
<td>(Number)</td>
<td>2</td>
</tr>
<tr>
<td>a</td>
<td>am/pm marker</td>
<td>(Text)</td>
<td>PM</td>
</tr>
<tr>
<td>k</td>
<td>hour in day (1~24)</td>
<td>(Number)</td>
<td>24</td>
</tr>
<tr>
<td>K</td>
<td>hour in am/pm (0~11)</td>
<td>(Number)</td>
<td>0</td>
</tr>
<tr>
<td>z</td>
<td>time zone</td>
<td>(Text)</td>
<td>Pacific Standard Time</td>
</tr>
</table>
<p>Como vimos o dia da semana pode ser escrito por extenso, que língua ele será utilizada? Normalmente o inglês, mas se quisermos que seja na língua de um local diferente?</p>
<p>Para isso utilizaremos a internacionalização com a classe <strong>Locate</strong> que recebe em seu construtor a língua e o país que queremos utilizar:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Locale</span> brasil <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Locale</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;pt&quot;</span>,<span style="color: #0000ff;">&quot;br&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//portugues do brasil</span>
<span style="color: #003399;">Locale</span> japao <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Locale</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ja&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">// japao</span></pre></div></div>

<p>O objeto locale de <strong>Locale</strong> pode ser utilizado tanto com a classe <strong>DateFormat</strong> quanto com a classe <strong>SimpleDateFormat</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Date</span> hoje  <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">SimpleDateFormat</span> sdf <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">SimpleDateFormat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;E dd &quot;</span>,<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Locale</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;pt&quot;</span>,<span style="color: #0000ff;">&quot;br&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> sdf.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span>hoje<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #003399;">DateFormat</span> df <span style="color: #339933;">=</span> <span style="color: #003399;">DateFormat</span>.<span style="color: #006633;">getDateInstance</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">DateFormat</span>.<span style="color: #006633;">FULL</span>,<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Locale</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;pt&quot;</span>,<span style="color: #0000ff;">&quot;br&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> df.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span>hoje<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Para finalizar como covertermos uma String em um objeto <strong>Date</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">        <span style="color: #003399;">Date</span> d  <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">SimpleDateFormat</span> df <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">SimpleDateFormat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DD/MM/yyyy&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
            d <span style="color: #339933;">=</span> df.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;25/03/2010&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">ParseException</span> ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            ex.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> df.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span>d<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>O métdo <strong>parse </strong> da classe <strong>DateFormat</strong> e <strong.SimpleDateFormat</strong> recebe uma string e convertepara um objeto <strong>Date</strong></p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/java/manipulando-datas-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conectando Java com HSQLDB</title>
		<link>http://www.botecodigital.info/java/conectando-java-com-hsqldb/</link>
		<comments>http://www.botecodigital.info/java/conectando-java-com-hsqldb/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 11:11:39 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[hsqldb]]></category>
		<category><![CDATA[jdbc]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=732</guid>
		<description><![CDATA[Muitas vezes desenvolvemos aplicações simples que necessitam de armazenamento de dados sem nenhum grande desempenho mas que seja feita de forma rápida. Uma boa saída é utilizar um banco de dados(SGDB) bem simples como o HSQLDB O HSQLDB é um SGDB de código aberto, escrito totalmente e Java o que torna-o portável. Em termos de desempenho, segurança e recursos não podemos compará-lo a outro bancos de dados como Oracle, Postgres e Microsoft SQL, mas para aplicações pequenas em desktop pode [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes desenvolvemos aplicações simples que necessitam de armazenamento de dados sem nenhum grande desempenho mas que seja feita de forma rápida. Uma boa saída é utilizar um banco de dados(SGDB) bem simples como o <a href="http://hsqldb.org/" target="_blank">HSQLDB</a></p>
<p>O HSQLDB é um SGDB de código aberto, escrito totalmente e Java o que torna-o portável. Em termos de desempenho, segurança e recursos não podemos compará-lo a outro bancos de dados como Oracle, Postgres e Microsoft <acronym title="Structured Query Language">SQL</acronym>, mas para aplicações pequenas em desktop pode ser uma excelente pedida.</p>
<p>Uma das vantagens do HSQLDB é sua simplicidade, a capacidade de poder ser rodado em modo cliente-servidor ou standalone, armazenando os dados em memória, arquivo de texto ou banco de dados.</p>
<p>Veremos agora então como executar, criar um banco de dados e acessá-lo:</p>
<p>Primeiramente <a href="http://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_1_8_1/" target="_blank">baixamos o HSQLDB</a> depois basta descompactá-lo. Depois de descompactado teremos desde o código fonte até alguns scripts,  mas que nos interessa é o arquivo <strong>hsqldb.jar</strong> que é o pacote do HSQLDB que possui desde o  driver JDBC até ferramentas para o gerenciamento do banco de dados.</p>
<p>Antes de começarmos a trabalhos com o HSQLDB devemos adicioná-lo ao CLASSPATH:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">CLASSPATH = <span style="color: #000000; font-weight: bold;">%</span>CLASSPATH<span style="color: #000000; font-weight: bold;">%</span>;C:<span style="color: #000000; font-weight: bold;">/</span>hsqldb<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>hsqldb.jar</pre></div></div>

<p>A interface de gerenciamento em Swing pode ser aberta pelo comando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">java org.hsqldb.util.DatabaseManagerSwing</pre></div></div>

<p>Ok, agora vamos conectar/criar um banco standalone para ser armazenado na pasta &#8220;c:\banco&#8221; com o nome do banco &#8220;dbteste&#8221;</p>
<div style="text-align:center">
<img src="http://www.botecodigital.info/wp-content/uploads/2009/10/conectar-hsqld-300x236.jpg" alt="Parâmetros para a conexão title="Parâmetros para a conexão" width="300" height="236" class="aligncenter size-medium wp-image-734" /><br />
<br />Parâmetros para a conexão</div>
<p>Agora vamos criar nossa tabela:<br />
</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span>  usuarios<span style="color: #66cc66;">&#40;</span>
        id IDENTITY <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
        nome VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
        email VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

<p>O HSQLDB aceita os comando básicos de <acronym title="Structured Query Language">SQL</acronym>, com algumas pequenas diferenças, por exemplo o tipo de dado inteiro auto-incrementável é IDENTITY e ele começa a contar de 0(atenção). Com a tabela criada vamos inserir alguns dados:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> usuarios<span style="color: #66cc66;">&#40;</span>nome<span style="color: #66cc66;">,</span>email<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Boteco Digital'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'blogbotecodigital@gmail.com'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> usuarios<span style="color: #66cc66;">&#40;</span>nome<span style="color: #66cc66;">,</span>email<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Rodrigo'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'rodrigo@algumacoisa.com'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> usuarios<span style="color: #66cc66;">&#40;</span>nome<span style="color: #66cc66;">,</span>email<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Thiago'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'thiago@algumacoisa.com'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> usuarios<span style="color: #66cc66;">&#40;</span>nome<span style="color: #66cc66;">,</span>email<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Joao'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'joao@algumacoisa.com'</span><span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

<p>** DETALHE IMPORTANTE **<br />
Antes de fechar o gerenciador lembre-se de executar o seguinte comando:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">SHUTDOWN;</pre></div></div>

<p>Para os dados serem gravados corretamente.</p>
<p>Para conferir se os dados foram inseridos com êxito execute o seguinte comando:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> usuarios</pre></td></tr></table></div>

<p>Nosso banco está criado e populado agora basta conectá-lo pelo Java:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">try</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">Class</span>.<span style="color: #006633;">forName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;org.hsqldb.jdbcDriver&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">Connection</span> con <span style="color: #339933;">=</span> <span style="color: #003399;">DriverManager</span>.<span style="color: #006633;">getConnection</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;jdbc:hsqldb:file:/banco/dbteste&quot;</span>, <span style="color: #0000ff;">&quot;sa&quot;</span>, <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003399;">Statement</span> stm<span style="color: #339933;">=</span> con.<span style="color: #006633;">createStatement</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">ResultSet</span> rs <span style="color: #339933;">=</span> stm.<span style="color: #006633;">executeQuery</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM usuarios&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>rs.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">String</span> nome <span style="color: #339933;">=</span> rs.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;nome&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">String</span> email <span style="color: #339933;">=</span> rs.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;email&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>nome<span style="color: #339933;">+</span><span style="color: #0000ff;">&quot; - &quot;</span><span style="color: #339933;">+</span>email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    stm.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SHUTDOWN&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">ClassNotFoundException</span> e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Erro ao carregar o driver JDBC. &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">SQLException</span> e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Erro de SQL: &quot;</span><span style="color: #339933;">+</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Na linha 2 carregamos o driver JDBC, este driver está no  no pacote <strong>hsqldb.jar</strong> então não esqueça de colocá-lo no seu CLASSPATH.</p>
<p>Na linha criamos uma conexão através da String <strong>&#8220;jdbc:hsqldb:file:/banco/dbteste&#8221;</strong>. Esta String contém as seguintes informações de conexão:</p>
<ul>
<li><strong>jdbc</strong> tipo de driver a ser utilizado para conexão</li>
<li><strong>hsqldb</strong> este é o driver que utilizaremos para conectar. Ele já foi carregado na memória  através da instrução &#8220;Class.forName(&#8220;org.hsqldb.jdbcDriver&#8221;);&#8221;<;li>
<li><strong>file</strong> informa que o banco está  armazenado em arquivo(standalone)</li>
<li><strong>/banco/dbteste</strong> ando nosso banco está armazendo, no caso na em um pasta na raiz de diretório chamada banco, que terá arquivox com o nome de dbteste.( c:\banco)
</ul>
<p>Na linha 5 criamos um objeto Statment para realizar um consulto, na linha 6 executamos a consulta e recuperamos seu retorno.</p>
<p>Da linha 8 até 13 iteramos pelo resultado da consulta e exibimos os valores na tela. Na linha 14 executamos o comando SHUTDOW.</p>
<p>Como vimos este exemplo cria uma banco de dados standalone para uma aplicação local. O HSQLDB também pode funcionar no modo servidor para isso temos que executá-lo através   do seguinte comando.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">java org.hsqldb.Server -database.0 dbteste2 -dbname.0 dbteste2</pre></div></div>

<p><strong>Detalhe importante:</strong> ele irá criar o banco de dados dentro da pasta que foi executado o comando acima!</p>
<p>Para conecta-lo pelo Java utilizamos o seguinte código:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Connection</span> con <span style="color: #339933;">=</span> <span style="color: #003399;">DriverManager</span>.<span style="color: #006633;">getConnection</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;jdbc:hsqldb:hsql://localhost/dbteste2&quot;</span>, <span style="color: #0000ff;">&quot;sa&quot;</span>, <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Bom isso é tudo pessoal!</p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/java/conectando-java-com-hsqldb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fibonacci  com Recursão</title>
		<link>http://www.botecodigital.info/algoritmos/fibonacci-com-recursao/</link>
		<comments>http://www.botecodigital.info/algoritmos/fibonacci-com-recursao/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 13:01:27 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[fibonnaci]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=630</guid>
		<description><![CDATA[Recursão ou método recursivo nada mais é do que um método que, em sua implementação, chama a si mesmo. Mas você deve estar se perguntando para que isso me serve? Bom tecnicamente você pode fazer com iteração tudo o que você pode fazer com recursão, mas para alguns problemas computacionais as soluções recursivas tornam-se mais simples. Em geral quando você pode simplificar um problema, sem deixar de ser o mesmo problema, até que ele se torne menor e de mais [...]]]></description>
			<content:encoded><![CDATA[<p>Recursão ou método recursivo nada mais é do que um método que, em sua implementação, chama a si mesmo.</p>
<p>Mas você deve estar se perguntando para que isso me serve? Bom tecnicamente você pode fazer com iteração tudo o que você pode fazer com recursão, mas para alguns problemas computacionais as soluções recursivas tornam-se mais simples. Em geral quando você pode simplificar um problema, sem deixar de ser o mesmo problema, até que ele se torne menor e de mais fácil resolução é um problema que pode ser resolvido com recursão.</p>
<p>Um exemplo clássico de Recursão é a <a href="http://pt.wikipedia.org/wiki/Seq%C3%BC%C3%AAncia_de_Fibonacci" target="_blank">Seqüência de Fibonacci</a> que é uma seqüência que se obtém somando os dois últimos números da seqüência para chegar ao próximo. Vejamos uma implementação recursiva do problema onde mostramos na tela o 6º elemento da seqüência.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Fibonacci<span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> fiboRecursivo<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> n<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> n <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">return</span> Fibonacci.<span style="color: #006633;">fiboRecursivo</span><span style="color: #009900;">&#40;</span>n <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> Fibonacci.<span style="color: #006633;">fiboRecursivo</span><span style="color: #009900;">&#40;</span>n <span style="color: #339933;">-</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> Fibonacci.<span style="color: #006633;">fiboRecursivo</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>O problema da seqüência de Fibonacci pode ser resolvido pela fórmula F(n-1)+F(n-2) sendo que </strong>n</strong> é posição do elemento dentro da seqüência. Como sabemos o primeiro e o segundo elementos da seqüência são <strong>1</strong> chegamos a seguinte simplificação do problema.</p>
<ul>
<li>SE a posição for menor ou igual a 2 retornamos <strong>1</strong></li>
<li>SENÂO simplificamos o problema, tentamos descobrir os dois elementos anteriores ao elemento que queremos, fazemos isso<br />
    chamando o método fiboRecursivo e somamos suas saídas.</li>
</ul>
<p>Ok, o código fica simples, mas e ai? Como ele é executado?</p>
<p>Toda chamada de um método é empilhada em um estrutura de pilha (memória Stack) que isola a área de memória de cada método. Quando fazemos uma chamada a um método a seqüência de execução é parada e passa a executar as instruções que o método chamado contem. O método chamado é empilhado na memória Stack(pilha) e após sua execução é retirado da memória Stack e seqüência de execução volta ao método que o chamou  e a execução prossegue normalmento. Note que o método que está sendo executado sempre estará no topo da memória Stack.</p>
<p>Quando utilizamos chamadas recursivas estamos colocando métodos na memória Stack, para cada chamada ao método <em>fiboRecursivo()</em> uma &#8220;cópia&#8221; dele é colocada na memória e só será retirada quando as chamadas do topo da pilha parar de chamar o métodos e retornar algum valor.</p>
<p>Essa &#8220;cópia&#8221; é totalmente independente das outras, tem seu próprio escopo, variáveis locais e como qualquer método podem manipular atributos.</p>
<div style="text-align:center">
<img src="http://www.botecodigital.info/wp-content/uploads/2009/09/chamda_metodos-300x283.png" alt="chamada_metodos" title="chamada_metodos" width="300" height="283" class="aligncenter size-medium wp-image-638" />
</div>
<p>Um outro exemplo(mais prático) em que podemos utilizar a recursão é para <strong>listar os arquivos de um diretório e de seus subdiretórios </strong>como no exemplo abaixo.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.File</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.ArrayList</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Iterator</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Diretorios <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> ArrayList<span style="color: #339933;">&lt;</span>File<span style="color: #339933;">&gt;</span> arquivos <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>File<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> leDiretorio<span style="color: #009900;">&#40;</span><span style="color: #003399;">File</span> dir<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">File</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> names <span style="color: #339933;">=</span> dir.<span style="color: #006633;">listFiles</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> names <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span> <span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span>names.<span style="color: #006633;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>names<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">isDirectory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">arquivos</span>.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>names<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
                    leDiretorio<span style="color: #009900;">&#40;</span>names<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
&nbsp;
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        Diretorios d <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Diretorios<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">File</span> f<span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;teste&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        d.<span style="color: #006633;">leDiretorio</span><span style="color: #009900;">&#40;</span>f<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
        <span style="color: #003399;">Iterator</span> i <span style="color: #339933;">=</span> d.<span style="color: #006633;">arquivos</span>.<span style="color: #006633;">iterator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>i.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> i.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>O código do método leDiretorio faz o seguinte, ele recebe por parâmetro um File que deve ser um diretório, após isso ele lê todos os arquivos do diretório com o método <strong>listFiles()</strong>, após isso ele verifica se foi retornado algum arquivo(File), se sim ele percorre esse <em>array</em> testando se o arquivo não é um diretório ele armazena em um <em>ArrayList</em> se for ele faz chama uma chamada ao próprio método passando por parâmetro esse diretório.</p>
<p>Recursão é uma ferramenta bastante poderosa que pode simplificar muita coisa, embora tenha um custo computacional um pouco mais elevado permite a criação de códigos mais simples e por conseqüência de mais fácil manutenção.</p>
<p>Uma dica é que recursão é uma boa saída para percorrer qualquer estrutura no formato de árvore.</p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/algoritmos/fibonacci-com-recursao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java &#8211; Console Colorido</title>
		<link>http://www.botecodigital.info/java/java-console-colorido/</link>
		<comments>http://www.botecodigital.info/java/java-console-colorido/#comments</comments>
		<pubDate>Sat, 16 May 2009 19:51:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[Enigma Console]]></category>

		<guid isPermaLink="false">http://botecodigital.g8si.com/?p=342</guid>
		<description><![CDATA[Este dias um aluno me perguntou como mudar a cor da saida de um programa JAVA no console pensei um pouco e disse nunca vi nada sobre isso, em nenhum livro ou site, acredito que não seja possível vou dar uma olhada e depois te respondo. Bom pesquisando, descobri que a API do JAVA não fornece métodos para escrever no console utilizando cores, para isso é preciso inserir códigos de cor que pode variar conforme o S.O. ou mesmo de [...]]]></description>
			<content:encoded><![CDATA[<p>Este dias um aluno me perguntou como mudar a cor da saida de um programa JAVA no console pensei um pouco e disse nunca vi nada sobre isso, em nenhum livro ou site, acredito que não seja possível vou dar uma olhada e depois te respondo.</p>
<p>Bom pesquisando, descobri que a <acronym title="Application Programming Interface">API</acronym> do JAVA não fornece métodos para escrever no console utilizando cores, para isso é preciso inserir códigos de cor que pode variar conforme o S.O. ou mesmo de terminal para terminal.</p>
<p>Isto obviamente não é uma solução portável, então não é condizente com JAVA.</p>
<p>A solução que achei foi utilizar uma biblioteca <a href="http://sourceforge.net/projects/enigma-shell" target="_blank"> <strong>Enigma Console</strong></a> que nada mais é do que um console feito em JAVA utilizando <strong>Swing</strong>.</p>
<p>Primeiramente vamos baixar a biblioteca <a href="http://sourceforge.net/project/showfiles.php?group_id=88079" target="_blank"> Enigma Console</a>. Descompacte o arquivo em uma pasta de sua escolha e adicione à variável de ambiente <strong>CLASSPATH</strong> o caminho absoluto para a biblioteca <strong>Enigma Console</strong> por exemplo:</p>
<p>Variavél de ambiente <strong>CLASSPATH</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.;c:\enigma\enigma-all_en_US.jar;</pre></div></div>

<p>Agora basta utiliza-la no código como no exemplo abaixo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.Color</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">enigma.console.*</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">enigma.core.Enigma</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Cor<span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        Console s_console <span style="color: #339933;">=</span> Enigma.<span style="color: #006633;">getConsole</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
        TextAttributes attrs<span style="color: #339933;">;</span>
        attrs <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TextAttributes<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">96</span>,<span style="color: #cc66cc;">223</span>,<span style="color: #cc66cc;">79</span><span style="color: #009900;">&#41;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">76</span>,<span style="color: #cc66cc;">62</span>,<span style="color: #cc66cc;">175</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        s_console.<span style="color: #006633;">setTextAttributes</span><span style="color: #009900;">&#40;</span>attrs<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Fundo azul com letras verdes&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
        attrs <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TextAttributes<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">90</span>,<span style="color: #cc66cc;">90</span><span style="color: #009900;">&#41;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">234</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">90</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        s_console.<span style="color: #006633;">setTextAttributes</span><span style="color: #009900;">&#40;</span>attrs<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Fundo amarelo com letras vermelhas&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Na linha 1 à 3 importamos os objetos que iremos utilizar tanto o objeto do console como a classe Color para podermos definir as cores.</p>
<p>Na linha 8 é onde chamamos o método que cria um novo console e muda a saída padrão para ele, ou seja a partir de agora tudo que escrevermos na saída padrão( <strong>System.out</strong> ) será escrito no novo console!</p>
<p>Na linha 10 é onde definimos os atributos do nosso texto, ou seja, a cor de fundo e a cor do texto, o construtor os parâmetros nesta mesma ordem. Note que utilizamos objetos Color para representar as cores, o construtor deste objeto recebe 3 valores inteiros de 0-255 no sistema <a href="http://pt.wikipedia.org/wiki/RGB" target="_blank">RGB</a>(Vermelho,Verde,Azul) para representar a cor, se precisar use um editor de imagem para descobrir os valores da cor que você deseja.</p>
<p>Na linha 11 configuramos o console com as configurações feitas na linha 10. A partir de agora todo texto escrito no console terá as cores definidas.</p>
<p>Para mudar as cores novamente basca configurar o console novamente com as novas cores desejadas.</p>
<p>Veja como vai ficar o exemplo acima:</p>
<p><img src="http://www.botecodigital.info/wp-content/uploads/2009/05/console.jpg" alt="console" title="console" width="450" height="204" class="aligncenter size-full wp-image-347" /></p>
<p>E por hoje é só pessoal!</p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/java/java-console-colorido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passeio do Cavalo</title>
		<link>http://www.botecodigital.info/algoritmos/passeio-do-cavalo/</link>
		<comments>http://www.botecodigital.info/algoritmos/passeio-do-cavalo/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 13:50:00 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[desafio]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[xadrez]]></category>

		<guid isPermaLink="false">http://botecodigital.g8si.com/?p=127</guid>
		<description><![CDATA[Esta estudando um pouco de Java estes tempo e me deparei com um exercício bastante interessante no Livro do Deitel, o Passeio do cavalo. O passeio do cavalo é um problema matemático envolvendo o movimento da peça do cavalo no tabuleiro de xadrez. Coloca-se o cavalo em uma das posições de um tabuleiro de xadrez vazio e deve-se movimentar o cavalo seguindo as regras do xadrez, ou seja, movimentar o cavalo em &#8220;L&#8221; para que ele passe por todas as [...]]]></description>
			<content:encoded><![CDATA[<p>Esta estudando um pouco de <em>Java</em> estes tempo e me deparei com um exercício bastante interessante no Livro do <em>Deitel</em>, o <strong>Passeio do cavalo</strong>.</p>
<p>O <strong>passeio do cavalo</strong> é um problema matemático envolvendo o movimento da peça do cavalo no tabuleiro de xadrez. Coloca-se o cavalo em uma das posições de um tabuleiro de xadrez vazio e deve-se movimentar o cavalo seguindo as regras do xadrez, ou seja, movimentar o cavalo em &#8220;L&#8221; para que ele passe por todas as 64 casas do tabuleiro sem repetir nenhuma.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.botecodigital.info/wp-content/imagens/movimentos_cavalor.png" alt="Movimentos realizados pela peça  do xadrez cavalo cavalo" /></p>
<p>Existem dois tipos de <strong>Passeio do Cavalo</strong> o passeio aberto, onde o cavalo para em qualquer casa do tabuleiro  e o passeio fechado onde o cavalo para em uma casa em que, no próximo movimento, pare na casa onde começou.</p>
<p><a href="http://www.botecodigital.info/wp-content/donwloads/PasseioCavalo.rar" target="_blank">Aqui</a> você pode fazer o download do código que eu criei em <em>Java</em> de um passeio aberto, ele segue um <a href="http://pt.wikipedia.org/wiki/Heuristica" target="_blank">heurística</a> de acessibilidade que consta no livro do <em>Deitel</em> que pode ser vista abaixo.</p>
<p style="text-align: center;"><img class="aligncenter" title="Heurística para a resolução do problema do passeio do cavalo" src="http://www.botecodigital.info/wp-content/imagens/heuristica.png" alt="" /></p>
<p>A heurística de acessibilidade consiste em que quanto mais no canto o cavalo está mais difícil é move-lo, então estas casas devem ser passadas primeiro, como vemos na imagem da heurística acima, as casas dos quatro cantos permitem somente dois movimentos, enquanto as casas centrais permitem todos os oito.</p>
<p>Foi isso então, se alguém quiser modificar o código(que não está muito elegante) fique a vontade, só pesso que deixe  um comentário com o código ou me envie por e-mail para mim anexar ao post.</p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/algoritmos/passeio-do-cavalo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
