<?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>Roberto Furutani &#187; Roberto Furutani</title>
	<atom:link href="http://www.furutani.com.br/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.furutani.com.br</link>
	<description>O site de um computólogo curioso!</description>
	<lastBuildDate>Sat, 04 Sep 2010 13:41:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Boas Práticas &#8211; Dica nº 1</title>
		<link>http://www.furutani.com.br/2010/09/boas-praticas-dica-n%c2%ba-1/</link>
		<comments>http://www.furutani.com.br/2010/09/boas-praticas-dica-n%c2%ba-1/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 13:41:26 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Boas Práticas]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=651</guid>
		<description><![CDATA[Bom dia, Ter um blog não é nada fácil, este aqui por exemplo está abandonado já faz quase um mês. A maior dificuldade é encontrar assuntos pra postar. Por isso tive uma idéia, postar uma série de dicas de boas práticas de codificação. A idéia é mostrar com dicas simples como melhorar o código, evitando [...]]]></description>
			<content:encoded><![CDATA[<p>Bom dia,</p>
<p>Ter um blog não é nada fácil, este aqui por exemplo está abandonado já faz quase um mês. A maior dificuldade é encontrar assuntos pra postar. Por isso tive uma idéia, postar uma série de dicas de boas práticas de codificação.<br />
A idéia é mostrar com dicas simples como melhorar o código, evitando erros e melhorando a codificação.</p>
<p>Nesta primeira dica, mostrarei como evitar um <strong>NullPointerException</strong> toda vez em que fazemos uma comparação com objetos com uma constante. Muita gente já conhece essa técnica, principalmente os mais experientes, mas nunca é demais lembrar.</p>
<p><strong>A dica é: Sempre coloque a constante à esquerda (ou o objeto que você terá certeza que não estará nulo) da condição.</strong></p>
<p>Veja o exemplo abaixo:</p>
<pre class="brush: java">
public boolean validar(String result) {

	if (&quot;OK&quot;.equals(result)) {
		return true;
	} else {
		return false;
	}

}</pre>
<p>O código acima compara o parâmetro <strong>result </strong> com a constante <em>OK</strong></em> que está a esquerda da condição.<br />
Se <strong>result </strong> for nulo o método retornará <em>false</em>.</p>
<p>Já dei manutenção em código que estava assim:</p>
<pre class="brush: java">
public boolean validar(String result) {
	if (result == null) {
	        result = &quot;&quot;;
        }
	if (&quot;OK&quot;.equals(result)) {
		return true;
	} else {
		return false;
	}

}</pre>
<p>Percebam que colocaram um <strong>if</strong> desnecessário só para atribuir uma string vazia ao parâmetro, afim de evitar o <strong>NullPointerException</strong> no próximo <strong>if</strong>. Além de ser feio fazer <em>atribuições aos parâmetros</em>, aumenta a complexidade de uma futura manutenção.</p>
<p>Por hoje é só.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/09/boas-praticas-dica-n%c2%ba-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Alterar senha do usuário sys do Oracle XE</title>
		<link>http://www.furutani.com.br/2010/08/alterar-senha-do-usuario-sys-do-oracle-xe/</link>
		<comments>http://www.furutani.com.br/2010/08/alterar-senha-do-usuario-sys-do-oracle-xe/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 01:38:45 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=648</guid>
		<description><![CDATA[Olá! Caso você tem instalado um banco de dados Oracle 10g XE e não se lembra mais da senha do usuário SYS siga os passos abaixo para alterar a senha dele. 1) Abra o SQL*Plus. No botão iniciar escolha a opção &#8220;Executar Linha de Comandos SQL&#8221;; 2) Conecte-se com o comando abaixo: SQL> connect / [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Caso você tem instalado um banco de dados <em>Oracle 10g XE</em> e não se lembra mais da senha do usuário <strong>SYS</strong> siga os passos abaixo para alterar a senha dele.</p>
<p>1) Abra o <em>SQL*Plus</em>. No botão iniciar escolha a opção &#8220;Executar Linha de Comandos SQL&#8221;;<br />
2) Conecte-se com o comando abaixo:<br />
<strong>SQL> connect / as sysdba<br />
Conectado.</strong></p>
<p>3) Altere a senha do usuário<br />
<strong>SQL> alter user  sys identified by <senha>;<br />
Usuário alterado.</strong></p>
<p>Pronto. Agora você poderá acessar http://127.0.0.1:8080/apex/, digitar o usuário sys e a <senha> e ter o controle de volta do banco sem ter que reinstalá-lo.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/08/alterar-senha-do-usuario-sys-do-oracle-xe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Relatório Dinâmico com JasperDesign</title>
		<link>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/</link>
		<comments>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 01:47:25 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=635</guid>
		<description><![CDATA[Olá Que tal fazer um relatório sem iReport? e sem ter de fazer o JRXML? e ser montada de dinamicamente? Pois isso é possível usando algumas classes do JasperReports como a JasperDesign, JRDesignBand, JRDesignStaticText, JRDesignField e JRDesignExpression. Não é muito complicado fazer isso não como você podem ver no exemplo que fiz, o mais díficil [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Que tal fazer um relatório sem iReport? e sem ter de fazer o JRXML? e ser montada de dinamicamente?</p>
<p>Pois isso é possível usando algumas classes do JasperReports como a <strong>JasperDesign, JRDesignBand, JRDesignStaticText, JRDesignField e JRDesignExpression. </strong>Não é muito complicado fazer isso não como você podem ver no exemplo que fiz, o mais díficil mesmo é posicionar os elementos na página. Precisa usar muito a imaginação.<strong><br />
</strong></p>
<p>Basicamente é feito tudo pela classe abaixo.</p>
<pre class="brush: java">package br.com.furutani.reldin;

import java.awt.Color;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignField;
import net.sf.jasperreports.engine.design.JRDesignStaticText;
import net.sf.jasperreports.engine.design.JRDesignTextField;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.type.HorizontalAlignEnum;

public class ReportDesigner {

public JasperDesign getDesign() throws JRException {

// Cria um novo relatório
JasperDesign jasperDesign = new JasperDesign();

// PAGE
configPage(jasperDesign);

// FIELD

JRDesignField field = null;
addField(&quot;referencia&quot;, String.class, jasperDesign);
addField(&quot;consumo&quot;, Integer.class, jasperDesign);

// TITLE

JRDesignBand jrDesignband = null;
JRDesignStaticText staticText = null;
configTitle(jasperDesign);

// PAGE HEADER

jrDesignband = new JRDesignBand();
jrDesignband.setHeight(15);
jasperDesign.setPageHeader(jrDesignband);

// COLUMN HEADER

jrDesignband = new JRDesignBand();
jrDesignband.setHeight(25);
jasperDesign.setColumnHeader(jrDesignband);

//Dados da referencia
staticText = new JRDesignStaticText();
staticText.setX(0);
staticText.setY(5);
staticText.setWidth(150);
staticText.setHeight(15);
staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT);
staticText.setText(&quot;Referência - Mês/Ano&quot;);
staticText.setBold(true);
jrDesignband.addElement(staticText);

//Dados do consumo
staticText = new JRDesignStaticText();
staticText.setX(150);
staticText.setY(5);
staticText.setWidth(100);
staticText.setHeight(15);
staticText.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);
staticText.setText(&quot;Consumo - kWh&quot;);
staticText.setBold(true);
jrDesignband.addElement(staticText);

// DETAIL
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(20);

//Dados da referencia
JRDesignTextField textField = new JRDesignTextField();
textField.setBlankWhenNull(false);
textField.setX(0);
textField.setY(5);
textField.setWidth(150);
textField.setHeight(15);
// Adiciona a expressao no campo
JRDesignExpression expression = new JRDesignExpression();
expression.setValueClass(java.lang.String.class);
expression.setText(&quot;$F{referencia}&quot;);
textField.setExpression(expression);
jrDesignband.addElement(textField);

//Dados do consumo
textField = new JRDesignTextField();
textField.setBlankWhenNull(false);
textField.setX(200);
textField.setY(5);
textField.setWidth(50);
textField.setHeight(15);
textField.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);
//Adiciona a expressao no campo
expression = new JRDesignExpression();
expression.setValueClass(java.lang.Integer.class);
expression.setText(&quot;$F{consumo}&quot;);
textField.setExpression(expression);
jrDesignband.addElement(textField);

jasperDesign.setDetail(jrDesignband);

// COLUMN FOOTER (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setColumnFooter(jrDesignband);

// PAGE FOOTER (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setPageFooter(jrDesignband);

// NO DATA (No JasperViewer não mostra, na web mostraria)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(20);
staticText = new JRDesignStaticText();
staticText.setX(10);
staticText.setY(5);
staticText.setWidth(64);
staticText.setHeight(15);
staticText.setText(&quot;Sem registros para compor o relatório!&quot;);
staticText.setHorizontalAlignment(HorizontalAlignEnum.CENTER);
jrDesignband.addElement(staticText);
jasperDesign.setNoData(jrDesignband);

// SUMMARY (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setSummary(jrDesignband);

return jasperDesign;
}

/**
* Ajusta os parametros do titulo
* @param jasperDesign
*/
private void configTitle(JasperDesign jasperDesign) {
JRDesignBand band = new JRDesignBand();
band.setHeight(50);
JRDesignStaticText staticText = new JRDesignStaticText();
staticText.setX(10);
staticText.setY(10);
staticText.setWidth(450);
staticText.setHeight(40);
staticText.setFontName(&quot;Tahoma&quot;);
staticText.setForecolor(Color.BLUE);
staticText.setHorizontalAlignment(HorizontalAlignEnum.CENTER);
staticText.setFontSize(24);
staticText.setPdfFontName(&quot;Helvetica-Bold&quot;);
staticText.setBold(true);
staticText.setText(&quot;Histórico de Consumo&quot;);

band.addElement(staticText);

jasperDesign.setTitle(band);
}

/**
* Adiciona campos ao relatorio
* @param name
* @param clazz
* @param jasperDesign
* @throws JRException
*/
private void addField(String name, Class clazz, JasperDesign jasperDesign)
throws JRException
{
JRDesignField field = new JRDesignField();

field.setName(name);
field.setValueClass(clazz);
jasperDesign.addField(field);
}

/**
* Configura a pagina
* @param jasperDesign
*/
private void configPage(JasperDesign jasperDesign) {
jasperDesign.setPageWidth(500);
jasperDesign.setPageHeight(1000);
jasperDesign.setColumnCount(1);
jasperDesign.setColumnWidth(450);
jasperDesign.setColumnSpacing(0);
jasperDesign.setLeftMargin(10);
jasperDesign.setRightMargin(10);
jasperDesign.setBottomMargin(5);
jasperDesign.setTopMargin(5);
jasperDesign.setName(&quot;RelatorioDeConsumo&quot;);

}
}</pre>
<p>O exemplo foi feito no Eclipse Galileo. Não foi usado nada de web apesar de ser facilmente adaptado para rodar em ambiente web.</p>
<p>Adicione as bibliotecas no classpath do projeto que estão dentro de &lt;DIR_INSTALL&gt;\iReport-3.7.2\ireport\modules\ext para compilar os fontes:</p>
<p style="padding-left: 30px;">ant-1.7.1.jar<br />
antlr-2.7.6.jar<br />
asm-attrs.jar<br />
asm.jar<br />
barbecue-1.5-beta1.jar<br />
barcode4j-2.0.jar<br />
batik-anim.jar<br />
batik-awt-util.jar<br />
batik-bridge.jar<br />
batik-css.jar<br />
batik-dom.jar<br />
batik-ext.jar<br />
batik-gvt.jar<br />
batik-parser.jar<br />
batik-script.jar<br />
batik-svg-dom.jar<br />
batik-svggen.jar<br />
batik-util.jar<br />
batik-xml.jar<br />
bcel-5.2.jar<br />
bsh-2.0b4.jar<br />
castor-1.2.jar<br />
cglib-2.1.jar<br />
cincom-jr-xmla.jar<br />
commons-beanutils-1.8.2.jar<br />
commons-collections-3.2.1.jar<br />
commons-dbcp-1.2.2.jar<br />
commons-digester-1.7.jar<br />
commons-javaflow-20060411.jar<br />
commons-logging-1.1.jar<br />
commons-math-1.0.jar<br />
commons-pool-1.3.jar<br />
commons-vfs-1.0.jar<br />
dom4j-1.6.jar<br />
ehcache-1.1.jar<br />
eigenbase-properties-1.1.0.10924.jar<br />
eigenbase-resgen-1.3.0.11873.jar<br />
eigenbase-xom-1.3.0.11999.jar<br />
ejb3-persistence.jar<br />
groovy-all-1.5.5.jar<br />
hibernate-annotations.jar<br />
hibernate-commons-annotations.jar<br />
hibernate3.jar<br />
hsqldb-1.8.0-10.jar<br />
iText-2.1.7.jar<br />
iTextAsian.jar<br />
jakarta-bcel-20050813.jar<br />
jasperreports-3.7.2.jar<br />
jasperreports-chart-themes-3.6.2.jar<br />
jasperreports-extensions-3.5.3.jar<br />
jasperreports-fonts-3.7.2.jar<br />
javacup.jar<br />
javassist-3.4.GA.jar<br />
jaxen-1.1.1.jar<br />
jcommon-1.0.15.jar<br />
jdt-compiler-3.1.1.jar<br />
jfreechart-1.0.12.jar<br />
jpa.jar<br />
js_activation-1.1.jar<br />
js_axis-1.4patched.jar<br />
js_commons-codec-1.3.jar<br />
js_commons-discovery-0.2.jar<br />
js_commons-httpclient-3.1.jar<br />
js_jasperserver-common-ws-3.5.0.jar<br />
js_jaxrpc.jar<br />
js_mail-1.4.jar<br />
js_saaj-api-1.3.jar<br />
js_wsdl4j-1.5.1.jar<br />
jta.jar<br />
jxl-2.6.jar<br />
log4j-1.2.15.jar<br />
mondrian-3.1.1.12687-Jaspersoft.jar<br />
olap4j-0.9.7.145.jar<br />
png-encoder-1.5.jar<br />
poi-3.5-FINAL-20090928.jar<br />
rex-20080421.jar<br />
rhino-1.7R1.jar<br />
saaj-api-1.3.jar<br />
slf4j-api.jar<br />
slf4j-log4j12.jar<br />
spring.jar<br />
sqleonardo-2007.03.jar<br />
swingx-2007_10_07.jar<br />
xml-apis-ext.jar<br />
xml-apis.jar</p>
<p>O projeto do Eclipse com os fontes está disponível no link abaixo:<br />
<a href="http://www.furutani.com.br/a/JasperDinamico.zip" title="Baixado: 109 vezes. Tamanho: 9.37 KB">JasperDinamico</a> </p>
<p>O resultado será esse:</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/06/jasper-design-.jpg"><img class="aligncenter size-medium wp-image-640" title="jasper-design---" src="http://www.furutani.com.br/wp-content/uploads/2010/06/jasper-design--300x298.jpg" alt="" width="300" height="298" /></a></p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tutoriais sobre Serviços Web e WS-BPEL</title>
		<link>http://www.furutani.com.br/2010/03/tutoriais-sobre-servicos-web-e-ws-bpel/</link>
		<comments>http://www.furutani.com.br/2010/03/tutoriais-sobre-servicos-web-e-ws-bpel/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 12:05:26 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[SOA]]></category>
		<category><![CDATA[BPEL]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=628</guid>
		<description><![CDATA[Olá, Estou escrevendo este post é para divulgar dois excelentes tutoriais escritos por Fabrício Rocha como resultado de um trabalho que ele faz na Universidade de São Paulo e que com certeza vão ajudar muita gente. Criando e consumindo um Serviço Web usando o Visual Studio 2008 Formato &#8211; Este tutorial contempla os conceitos essênciais  [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Estou escrevendo este post é para divulgar dois excelentes tutoriais escritos por Fabrício Rocha como resultado de um trabalho que ele faz na Universidade de São Paulo e que com certeza vão ajudar muita gente.</p>
<ul>
<li><a href="http://www.servicoweb.hd1.com.br/" target="_blank">Criando e consumindo um Serviço Web usando o Visual Studio 2008   Formato</a> &#8211; <a href="http://www.4shared.com/file/226149419/fffca107/Tutorial_ServicoWeb.html"><img title="Download em PDF" src="http://www.furutani.com.br/wp-content/uploads/2010/03/pdf_icon.png" alt="Download em PDF" width="25" height="25" /></a></li>
</ul>
<p style="padding-left: 30px;">Este tutorial contempla os conceitos essênciais  para entendimento dos serviços web como o XML, WSDL, UDDI e SOAP e também como eles se encaixam na Arquitetura Orientada a Serviços (SOA).</p>
<p style="padding-left: 30px;">
<ul>
<li><a href="http://www.wsbpel.hd1.com.br/">BPEL – Business Process Execution Language Tutorial: Implementando um Processo de Negócio com BPEL</a> &#8211; <a href="http://www.4shared.com/file/226151526/bd78843d/Tutorial_BPEL.html"><img title="Download em PDF" src="http://www.furutani.com.br/wp-content/uploads/2010/03/pdf_icon.png" alt="Download em PDF" width="25" height="25" /></a></li>
</ul>
<p style="padding-left: 30px;">Tratando com profundidade o padrão WS-BPEL, este tutorial apresenta os principais componentes dessa linguagem baseada em XML e um exemplo prático de implementação de um processo de negócio com as ferramentas da Oracle e da Microsoft.</p>
<p>Até mais,</p>
<p>Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/03/tutoriais-sobre-servicos-web-e-ws-bpel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simplificando cálculos com datas com Joda Time &#8211; Java</title>
		<link>http://www.furutani.com.br/2010/02/simplificando-calculos-com-datas-com-joda-time-java/</link>
		<comments>http://www.furutani.com.br/2010/02/simplificando-calculos-com-datas-com-joda-time-java/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 01:01:40 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[joda time]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=623</guid>
		<description><![CDATA[Olá! Quem precisou fazer contas com java.util.Date ou java.util.Calendar saber o trabalho que dá e como a API nativa do Java (até o Java 6 pelo menos) não ajuda muito a fazer coisas simples como adicionar horas na data atual. A API Joda Time veio para simplificar o trabalho com datas no Java, tanto é [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Quem precisou fazer contas com java.util.Date ou java.util.Calendar saber o trabalho que dá e como a API nativa do Java (até o Java 6 pelo menos) não ajuda muito a fazer coisas simples como adicionar horas na data atual. A API <a href="http://joda-time.sourceforge.net/" target="_blank">Joda Time</a> veio para simplificar o trabalho com datas no Java, tanto é que muitas idéias dessa API tem grande chance de estarem no Java 7 através da <a href="http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html" target="_blank">JSR-310</a>.</p>
<p>O que eu mais gostei do Joda Time são os método toString() que aceitam como parâmetro o padrão de formatação (não preciso criar mais SimpleDateFormat para formatar os benditos java.util.Date!!! parecido com o do <a href="http://msdn.microsoft.com/en-us/library/aa326721%28VS.71%29.aspx" target="_blank">C#</a>),  inicialização do objeto com String e o uso de <a href="http://www.martinfowler.com/bliki/FluentInterface.html" target="_blank">interfaces fluentes</a>.</p>
<p>Abaixo exemplos de uso.</p>
<ul>
<li><strong>Inicialização do objeto com String</strong></li>
</ul>
<pre class="brush: java">DateTime date = new DateTime(&quot;2010-2-21T20:19:45.000-03:00&quot;);
System.out.println(date.toString(&quot;dd/MM/yyyy HH:mm:ss&quot;));</pre>
<ul>
<li><strong>Soma de dias escolhendo o ano</strong></li>
</ul>
<pre class="brush: java">LocalDate localDate = new LocalDate();
LocalDate moreDays = localDate.withYear(2008).plusDays(8);
System.out.println(moreDays.toString(&quot;dd/MM/yyyy&quot;));
// 29/02/2008</pre>
<ul>
<li><strong>Dia da semana por extenso</strong></li>
</ul>
<pre class="brush: java">DateTime dateTime = new DateTime();

String dayOfMonth = dateTime.dayOfWeek().getAsText();
System.out.println(dayOfMonth);
// Domingo</pre>
<ul>
<li><strong>Quantidade de dias entre um dia e outro</strong></li>
</ul>
<pre class="brush: java">DateTime inicio = new DateTime(2010, 2, 21, 0, 0, 0, 0);

DateTime fim = new DateTime(2010, 2, 22, 13, 30, 0, 0);
System.out.println(Days.daysBetween(inicio, fim).getDays());
// 1
System.out.println(Hours.hoursBetween(inicio, fim).getHours());
// 37
System.out.println(Minutes.minutesBetween(inicio, fim).getMinutes());
// 2250</pre>
<ul>
<li><strong>Diferença de horas entre fusos horários.</strong></li>
</ul>
<pre class="brush: java">DateTime agora = new DateTime();
DateTime saoPaulo =
agora.withZoneRetainFields(DateTimeZone.forID(&quot;America/Sao_Paulo&quot;));
DateTime rioBranco =
agora.withZoneRetainFields(DateTimeZone.forID(&quot;America/Rio_Branco&quot;));
DateTime japao =
agora.withZoneRetainFields(DateTimeZone.forID(&quot;Asia/Tokyo&quot;));
DateTime londres =
agora.withZoneRetainFields(DateTimeZone.forID(&quot;Europe/London&quot;));

System.out.println(Hours.hoursBetween(japao, saoPaulo).getHours());
System.out.println(Hours.hoursBetween(londres, saoPaulo).getHours());
System.out.println(Hours.hoursBetween(rioBranco, saoPaulo).getHours());
// Diferença de horas entre Japão e São Paulo: 12

// Diferença de horas entre Londre e São Paulo: 3

// Diferença de horas entre Rio Branco/AC e São Paulo: -1</pre>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/simplificando-calculos-com-datas-com-joda-time-java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NullPointerException ou FileNotFoundException ao executar relatórios com Jasper Reports</title>
		<link>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/</link>
		<comments>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 18:35:03 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=617</guid>
		<description><![CDATA[Olá! Muitas pessoas tem dificuldade em utilizar os relatórios feitos no iReport em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos .jasper em sua aplicação para que o Servlet ou o ManagedBean consiga lê-los. Então é bem comum ver  erros como esses: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException java.lang.NullPointerException at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185) Recomendo colocar os arquivos [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Muitas pessoas tem dificuldade em utilizar os relatórios feitos no <a href="http://jasperreports.sourceforge.net/">iReport </a>em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos <strong>.jasper</strong> em sua aplicação para que o <strong>Servlet </strong>ou o <strong>ManagedBean </strong>consiga lê-los. Então é bem comum ver  erros como esses:</p>
<pre class="brush: java">net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException</pre>
<pre class="brush: java">java.lang.NullPointerException
at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
</pre>
<p>Recomendo colocar os arquivos jasper e/ou jrxml juntos as classes Java e <span style="text-decoration: underline;"><strong>não</strong></span> nos diretórios abaixo de <strong>Páginas Web </strong>no Netbeans ou <strong>Web Content</strong> no Eclipse, pois eles podem fica expostos. Não é desejado que os usuários possam baixa os arquivos jasper e/ou jrxml e ficarem fuçando neles.</p>
<p>A figura abaixo mostra o local correto para copiar o arquivo jasper e/ou jrxml no Netbeans. No Eclipse a lógica é a mesma, no lugar de Pacotes de código fontes coloque em Java Resorces: src.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper.png"><img class="aligncenter size-medium wp-image-616" title="Netbeans" src="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-300x225.png" alt="" width="300" height="225" /></a>Note que o arquivo jasper e/ou jrxml está no mesmo pacote do GerarRelatorioServlet.java e para obter o <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html">InputStream</a> no Servlet eufaço assim getResourceAsStream(&#8220;Rel_Precipitacoes.jasper&#8221;).</p>
<p>Para ser mais organizado é possível colocar em outro pacote, nesse caso é preciso ajustar o caminho ao jasper com relação ao local do GerarRelatorioServlet.java. No exemplo abaixo o jasper ficou no pacote br.com.furutani.relatorios logo obtemos o <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html">InputStream</a> passando esse caminho &#8220;../relatorios/Rel_Precipitacoes.jasper&#8221; no GerarRelatorioServlet.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-01.png"><img class="aligncenter size-medium wp-image-620" title="Jasper Netbeans" src="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-01-300x225.png" alt="" width="300" height="225" /></a></p>
<p>O projeto do netbeans com os fontes e bibliotecas do JasperReports podem ser baixados no link:  <a href="http://www.furutani.com.br/a/Jasper.war" title="Baixado: 470 vezes. Tamanho: 32.61 MB">Projeto Jasper</a> Projeto Jasper Netbeans 6.8</p>
<p>Espero ter ajudado.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IsNumber em Oracle PL/SQL</title>
		<link>http://www.furutani.com.br/2010/02/isnumber-em-oracle-plsql/</link>
		<comments>http://www.furutani.com.br/2010/02/isnumber-em-oracle-plsql/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 11:12:55 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=608</guid>
		<description><![CDATA[Olá Existem duas formas de verificar se uma string contém um número válido. A primeira forma é usando as funções translate, trim e length. Quando usadas em conjunto você obtém null se a string for número ou o comprimento da string sem espaços em branco. Veja abaixo: select length(trim(translate(&#039;minha_variavel&#039;, &#039; +-0123456789.&#039;, &#039; &#039;))) n1, length(trim(translate(&#039;123456789.9999&#039;, [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Existem duas formas de verificar se uma string contém um número válido. A primeira forma é usando as funções <strong>translate, trim e length</strong>. Quando usadas em conjunto você obtém <strong>null </strong>se a string for número ou o comprimento da string sem espaços em branco. Veja abaixo:</p>
<pre class="brush: php"> select

length(trim(translate(&#039;minha_variavel&#039;, &#039; +-0123456789.&#039;, &#039; &#039;))) n1,

length(trim(translate(&#039;123456789.9999&#039;, &#039; +-0123456789.&#039;, &#039; &#039;))) n2

from dual;
</pre>
<p>O resultado dessa query é:</p>
<p><strong>N1    N2</strong><br />
14    null</p>
<p>Outra forma é usando a função <strong>to_number()</strong>.  Caso a string passada contiver caracteres não numéricos é lançada uma exceção.</p>
<pre class="brush: php">

declare
n number;
s varchar2(10);
begin
s :=  &#039;1236&#039;;
n :=  to_number(s);
dbms_output.put_line(&#039;É número&#039;);
exception when others then
dbms_output.put_line(&#039;Não é número&#039;);
end;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/isnumber-em-oracle-plsql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JasperReports em Flash</title>
		<link>http://www.furutani.com.br/2010/02/jasperreports-em-flash/</link>
		<comments>http://www.furutani.com.br/2010/02/jasperreports-em-flash/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 02:14:04 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[adobe flex 3]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=604</guid>
		<description><![CDATA[Olá! Faz muito tempo que não publico nada no blog, mas ele não está abandonado.  Neste post vou deixar mais uma dica sobre JasperReports e Flas, na verdade é só um exemplo de que é possivel usar o mesmo .jasper para criar relatórios em PDF e em Flash também. Neste exemplo eu usei um outro [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Faz muito tempo que não publico nada no blog, mas ele não está abandonado.  <img src='http://www.furutani.com.br/wp-includes/images/smilies/icon_redface.gif' alt=':oops:' class='wp-smiley' /> </p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/jasper-flash.jpg"><img class="alignleft size-full wp-image-605" title="jasper-flash" src="http://www.furutani.com.br/wp-content/uploads/2010/02/jasper-flash.jpg" alt="" width="228" height="81" /></a>Neste post vou deixar mais uma dica sobre JasperReports e Flas, na verdade é só um exemplo de que é possivel usar o mesmo .jasper para criar relatórios em PDF e em Flash também.</p>
<p>Neste exemplo eu usei um outro exemplo que acompanha o <a href="http://sourceforge.net/projects/jasperreports/files/archive/jasperreports-flash/JasperReports%20Flash%20Viewer%203.0.0/" target="_blank">JasperReports Flash Viewer 3.0.0</a>.</p>
<p>» <a href="http://www.furutani.com.br:4894/jasperreports-flash/servlets/show">Clique aqui</a> para ver o exemplo funcionando.</p>
<p>» Download dos fontes: <a href="http://www.furutani.com.br/a/reports.zip" title="Baixado: 322 vezes. Tamanho: 135.73 MB">Relatório em JasperReports e Flash</a> Exemplo de relatório em JasperReports e Flash</p>
<p>Outra opção para exibir relatórios em flash é utilizar o xViewer mostrado neste post <a href="http://www.furutani.com.br/2009/07/exibindo-relatorios-gerados-pelo-jasper-report-em-flex/">Exibindo relatórios gerados pelo Jasper Report em Flex</a>. O exemplo precisa do <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk" target="_blank">Adobe Flex</a> e do ant para compilar, mas voce pode importar os fontes para sua IDE favorita sem problemas é só adicionar os jars no classpath.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/jasperreports-em-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convenções de código Java</title>
		<link>http://www.furutani.com.br/2010/01/convencoes-de-codigo-java/</link>
		<comments>http://www.furutani.com.br/2010/01/convencoes-de-codigo-java/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 02:11:58 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=595</guid>
		<description><![CDATA[Olá Nada melhor para quem vai efetuar uma manutenção em código-fonte do que poder ler de forma padronizada. Pensando nisso a SUN disponibiliza uma convenção para formatação de código Java, isso incluí nome das classes, dos métodos, declaração de váriaveis, identação, formatação dos comandos e etc. Apesar da última revisão ter sido em abril de [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Nada melhor para quem vai efetuar uma manutenção em código-fonte do que poder ler de forma padronizada. Pensando nisso a SUN disponibiliza uma convenção para formatação de código Java, isso incluí nome das classes, dos métodos, declaração de váriaveis, identação, formatação dos comandos e etc. Apesar da última revisão ter sido em abril de 1999 ainda está valendo.</p>
<p>Para algumas pessoas a convenção da SUN pode não agradar, pois tem gente que gosta do fonte assim:</p>
<pre class="brush: java">
if (condition)
{
     statements;
}
else if (condition)
{
     statements;
}
else
{
      statements;
}
</pre>
<p>Mas a convenção diz para ser assim:</p>
<pre class="brush: java">if (condition) {
      statements;
} else if (condition) {
      statements;
} else {
      statements;
}
</pre>
<p>Enfim, gostando ou não gostando é importante seguir um padrão, já pensou se as placas de pare fosse octogono em algumas cidades e em outras não? ou se cada banco criasse um código de barras próprio para seus boletos? iria ser muito mais dificil ler.</p>
<p>A convenção que mais ajuda é o de <a href="http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367" target="_blank">nomenclatura</a>, por exemplo os métodos que devem iniciar com verbo e tem a primeira letra minúscula e depois cada palavra capitalizada.</p>
<p><a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html" target="_blank"><strong>Code Conventions for the Java Programming Language</strong></a></p>
<p>Até mais,</p>
<p>Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/01/convencoes-de-codigo-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simulado para SCJP</title>
		<link>http://www.furutani.com.br/2010/01/simulado-para-scjp/</link>
		<comments>http://www.furutani.com.br/2010/01/simulado-para-scjp/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 23:45:02 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[certificacao]]></category>
		<category><![CDATA[scjp]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=592</guid>
		<description><![CDATA[Olá Essa dica vai para quem está estudando ou pretende estudar para certificação de programador Java. Hoje foi lançado um simulado com aproximadamente 300 questões focadas em SCJP 5 chamado SimSCJP criado pelo Camilo Lopes. Segundo ele: O simulado para SCJP foi desenvolvido com o proposito de ajudar aos candidatos que estão se preparando para [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Essa dica vai para quem está estudando ou pretende estudar para certificação de programador Java. Hoje foi lançado um simulado com aproximadamente 300 questões focadas em <a href="http://www.sun.com/training/certification/java/scjp.xml">SCJP 5</a> chamado <a href="http://blog.camilolopes.com.br/?page_id=1312">SimSCJP</a> criado pelo <a href="http://blog.camilolopes.com.br/" target="_blank">Camilo Lopes</a>.</p>
<p>Segundo ele:</p>
<blockquote><p>O simulado para SCJP foi desenvolvido com o proposito de ajudar aos candidatos que estão se preparando para SCJP 5 .  Há questões fáceis como díficeis, exatamente como você irá encontrar no exame real da Sun. Não formatamos os códigos ou organizamos. Pois não espere encontrar no exame um código bonitinho.</p></blockquote>
<p>Parabéns pela iniciativa Camilo, com certeza irá ajudar muita gente.</p>
<p><a href="http://blog.camilolopes.com.br/simscjppublicblog/simscjppublicblog.htm" target="_blank">Link para o simulado em português.</a></p>
<p><a href="http://blog.camilolopes.com.br/simblogus/simblogus.htm">Link para o simulado em inglês com contagem regressiva.</a></p>
<p>Até mais,</p>
<p>Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/01/simulado-para-scjp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
