Sérgio Fantin

JSF, Flex, REST…

Qualidade com o JSFUnit – Artigo Java Magazine 91

Publicado por Sergio Fantin em maio 16, 2011

Venho divulgar meu artigo sobre testes unitários em aplicações que utilizam a tecnologia JSF, presente na edição 91 da revista Java Magazine. São apresentadas, de maneira prática, as principais características do framework JSFUnit, e como sua utilização pode auxiliar o desenvolvedor na identificação de erros na aplicação. Além da parte teórica, o artigo apresenta um projeto que pode ser baixado no site da revista.

Artigos desta edição:

Obrigado ao Eduardo Spínola, editor da Java Magazine, pelo convite!

Enviado em Artigo, Framework, JSF, JSFUnit, Maven | Deixar um comentário »

Lançamento – Head First Android

Publicado por Sergio Fantin em fevereiro 21, 2011

A O’Reilly irá publicar mais um livro da série Head First. O novo livro chamado de Head First Android Development tem o intuito de ensinar de maneira descontraída a utilização dos recursos da plataforma Android. Como os demais livros da série, ele vem recheado de figuras, quebra-cabeças e outros artifícios que facilitam o aprendizado, sem tornar a leitura maçante.

Diferente de um livro convencional

Os criadores da série Head First acham que o seu tempo é valioso demais para ser desperdiçado lutando com novos conceitos. Usando as últimas descobertas da ciência cognitiva e teoria do aprendizado para criar uma experiência multi-sensorial de aprendizagem, Head First Android Development utiliza um formato visualmente rico, projetado para o funcionamento do seu cérebro, não de uma abordagem de texto pesado que o coloca para dormir.

O livro ensina

  • Instalar o Android SDK , o plugin do Eclipse e começar a criar aplicativos
  • Adicionar botões, edição de campos texto, e construir suas próprias opções de navegação no Android menu
  • Personalizar a aparência do seu aplicativo com temas e adição de imagens
  • Utilizar o mecanismo provedor de conteúdo para adicionar imagens e informações de contato para um aplicativo e estabelecer permissões para seu uso
  • Trabalhar com os dispositivos do Android, tais como GPS e acelerômetro
  • Experimentar diversas configurações de emuladores para simular diferentes tamanhos de telas
  • Otimizar, testar, e distribuir sua aplicação no Android Market.

Detalhes

Título: Head First Android Development
Editora: O’Reilly Media
Autor: Jonathan Simon
Idioma: English
ISBN: 1449393306
Páginas: 608
Data publicação: 15-4-2011
Acabamento: Brochura

O livro Head First Android custará U$44,99, e é uma ótima opção para quem quer aprender ou está começando desenvolver para a plataforma Android.
Eu, particularmente, gosto muito dos livros Head First e sempre que posso estou lendo algum livro da série. Esta, com certeza, será minha nova aquisição.

Sampler >>>aqui<<<.

Bons estudos!

Fonte: O’Reilly

Enviado em Android, Java | Deixar um comentário »

Qual Tutorial você gostaria de ver no blog?

Publicado por Sergio Fantin em dezembro 18, 2010

Enviado em Enquete | 2 Comentários »

Tutorial Maven 2

Publicado por Sergio Fantin em agosto 16, 2010

O Apache Maven é uma poderosa ferramenta utilizada para gerenciar projetos Java. Com Maven temos todo o controle de compilação da aplicação, controle de bibliotecas, deployment e relatórios estatísticos. A configuração do Maven se baseia em um arquivo chamado pom.xml (Project Object Model), onde são declaradas todas as dependências do projeto. Depois de feita a configuração, o Maven se encarrega de analisar as dependências declaradas, fazer o download de todas as elas a partir de um repositório, e utilizá-las para compilar, empacotar e distribuir o artefato que pode ser um JAR, WAR ou EAR.

Download e configuração

1) O download do Maven pode ser feito no site: http://maven.apache.org/download.html

2) Descompacte o arquivo em algum diretório. Eu descompactei no diretório: E:\apache-maven-2.2.1

3) Adicionar as variáveis de ambiente M2_HOME e M2 na parte de Variáveis do sistema:

  • M2_HOME = E:\apache-maven-2.2.1
  • M2 = %M2_HOME%\bin

Enviado em Eclipse, Framework, Java, Maven | Deixar um comentário »

JSF – Alterando Skin RichFaces em tempo de execução

Publicado por Sergio Fantin em julho 14, 2010

RichFaces é uma biblioteca de componentes para aplicações que utilizam JSF. Uma das suas características mais poderosas é o uso embutido do AJAX em seus componentes, assim o desenvolvedor não precisa se preocupar em reiventar a roda criando funções JavaScript. De maneira simples podemos utilizar vários componentes complexos apenas inserindo-os em nossa aplicação.

Uma característica bem bacana é o suporte a skins que deixam a interface da aplicação padronizada.

Neste post irei demonstrar como modificar a skin do RichFaces em tempo de execução.

Estrutura do Projeto

Bean.java

public class Bean implements Serializable {

 private static final long serialVersionUID = -6042519587796329117L;

 private String skin;

 public String getSkin() {
 return skin;
 }
 public void setSkin(String skin) {
 this.skin = skin;
 }

}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 id="WebApp_ID" version="2.5">
 <display-name>jsf</display-name>
 <welcome-file-list>
 <welcome-file>index.html</welcome-file>
 <welcome-file>index.htm</welcome-file>
 <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 <servlet>
 <servlet-name>Faces Servlet</servlet-name>
 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>Faces Servlet</servlet-name>
 <url-pattern>*.jsf</url-pattern>
 <url-pattern>*.faces</url-pattern>
 </servlet-mapping>

 <context-param>
 <param-name>org.ajax4jsf.SKIN</param-name>
 <param-value>#{bean.skin}</param-value>
 </context-param>

 <filter>
 <display-name>Ajax4jsf Filter</display-name>
 <filter-name>ajax4jsf</filter-name>
 <filter-class>org.ajax4jsf.Filter</filter-class>
 </filter>
 <filter-mapping>
 <filter-name>ajax4jsf</filter-name>
 <servlet-name>Faces Servlet</servlet-name>
 <dispatcher>REQUEST</dispatcher>
 <dispatcher>FORWARD</dispatcher>
 <dispatcher>INCLUDE</dispatcher>
 </filter-mapping>

 <context-param>
 <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
 <param-value>client</param-value>
 </context-param>
</web-app>

faces-config.xml

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

<faces-config
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
 version="1.2">

 <managed-bean>
 <managed-bean-name>bean</managed-bean-name>
 <managed-bean-class>br.com.serjaum.mb.Bean</managed-bean-class>
 <managed-bean-scope>session</managed-bean-scope>
 <managed-property>
 <property-name>skin</property-name>
 <value>blueSky</value>
 </managed-property>
 </managed-bean>

</faces-config>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="rich" uri="http://richfaces.org/rich"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Modificando RichFaces skin em runtime...</title>
</head>
<body>
<f:view>
 <h:form>
 <rich:panel header="Skin: #{bean.skin}" style="width: 300px">
 <h:panelGrid columns="2">
 <h:outputLabel value="Escolha " />
 <h:selectOneMenu value="#{bean.skin}" onchange="submit()">
 <f:selectItem itemLabel="emeraldTown" itemValue="emeraldTown" />
 <f:selectItem itemLabel="blueSky" itemValue="blueSky" />
 <f:selectItem itemLabel="ruby" itemValue="ruby" />
 <f:selectItem itemLabel="classic" itemValue="classic" />
 <f:selectItem itemLabel="deepMarine" itemValue="deepMarine" />
 </h:selectOneMenu>
 </h:panelGrid>
 </rich:panel>
</h:form>
</f:view>
</body>
</html>

Importando o projeto

  1. Baixe o projeto completo >>aqui<<;
  2. Descompacte o projeto no seu workspace;
  3. No Eclipse vá em: File –> Import –> General – Existing Projects into Workspace –> Next –> Selecione o projeto descompactado no workspace –> Finish.

Resultado

Até o próximo post!

Enviado em Java, JSF | 1 Comentário »

MVC – Design Pattern

Publicado por Sergio Fantin em julho 6, 2010

Criei um post para apresentar o Desing Pattern MVC para a nossa equipe de desenvolvimento, na empresa onde trabalho. A atividade visa a colaboração de conhecimento entre os desenvolvedores. Mais detalhes no blog do Boaglio.

Foto: Alexandre Peixoto (de camisa branca, na verdade os braços gesticulando), Fernando Boaglio, Camila, Eduardo Cerqueira, Marcela e Sérgio Fantin

MVC

O padrão MVC (Model-View-Controller) divide um sistema em três partes: dados e regras de negócios (Model), interface do usuário (View) e camada intermediária (Controller).

Model – O Model (modelo) pode ser entendido como a camada de domínio da aplicação. Nela pode conter a lógica de negócio, persistência de dados, etc.

View – A camada View (Visão) é responsável por apresentar os dados ao usário. No caso de aplicações Java web a View é o código HTML/JSP.
Controller – A camada Controller (Controlador) processa e responde a eventos, recebe alterações no modelo e atualiza a camada View.

MVC em aplicações JSP & Servlets

Para cada página da aplicação temos um servlet Controller, uma classe java Model e a página JSP View:

Frameworks MVC Java

  • JSF
  • Spring MVC Framework
  • Struts
  • Struts2
  • Stripes
  • Tapestry
  • WebWork
  • Wicket

Até a próxima apresentação!

Enviado em Design Pattern, Java | Deixar um comentário »

Vídeo – Java 4-ever

Publicado por Sergio Fantin em junho 26, 2010

Excelente!

Obs: O vídeo foi enviado por Rafael Ponte na lista JavaSF.

Enviado em Java | Deixar um comentário »

JSF – Agrupando elementos com SelectItemGroup

Publicado por Sergio Fantin em junho 25, 2010

Neste post irei demonstrar como agrupar elementos utilizando SelectItemGroup em componentes do tipo <h:selectOneMenu>.

Criei um projeto bem simples pra ilustrar o funcionamento do combo que poderá ser melhorado dependendo da necessidade.

Disponibilizei o projeto para download no fim do post.

Estrutura do projeto

Leia o resto deste post »

Enviado em Eclipse, Java, JSF | Deixar um comentário »

Eclipse Helios

Publicado por Sergio Fantin em junho 23, 2010

Acaba de ser lançada a nova release da IDE mais popular para o desenvolvimento de código Java denominada Eclipse Helios. A IDE é liberada sob a Eclipse Public License e já se encontra disponível para download.

A plataforma pra desenvolvimento web conhecida como WTP vem agora com suporte a JSF 2, Servlet 3 e Tomcat 7, além de debugger JavaScript em tempo de execução.

Outra característica nova é a Eclipse MarketPlace Client que provê uma maneira facilitada para a procura e instalação de novos plugins.

Novas features

  • Eclipse Communication Framework (ECF)
  • Java Devlopment Tools (JDT)
  • Javaserver Faces (JSF) Tools
  • PHP Devlopment Tools (PDT)
  • Rich Ajax Platform (RAP)

Bons códigos!

Enviado em Eclipse, Java, JSF, JUnit | Deixar um comentário »

Flex – Implementando um PickList utilizando dataGrid

Publicado por Sergio Fantin em junho 3, 2010

Esta semana precisei de um componente parecido com um pickList do RichFaces daí pensei: “Ah… com certeza isso já tem pronto em Flex”. Mas pesquisando não encontrei nada parecido. Então dei uma pesquisada na lista flexdev e o pessoal disse seria fácil implementar um pickList na mão. Não achei que seria tão fácil, mas foi! Hehe… Além do comportamento normal clicando nos botões temos a características de drag and drop no componente mx:dataGrid simplesmente habilitando algumas propriedades.

O projeto pode ser baixado >>> aqui <<<.

Versões utilizadas

  • Adobe Flex Builder 3.0 (build 3.0.2.214193)
  • SDK 3.5

Código

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="1120" height="664">

 <mx:TitleWindow x="81" y="37" width="857" height="289" layout="absolute" title="PickList Flex">

 <mx:Script>
 <![CDATA[
 import mx.controls.Alert;
 import mx.collections.ArrayCollection;

 [Bindable]
 public var pessoasDisponiveis:ArrayCollection = new ArrayCollection([
 {nome : "Sérgio Fantin", apelido : "Serjão", cidade : "São Paulo"},
 {nome : "Alex Ferraresi", apelido : "Velhinho", cidade : "São Caetano"},
 {nome : "Fernando Boaglio", apelido : "Boaglio", cidade : "São Paulo"},
 {nome : "Eduardo Cerqueira", apelido : "Edú", cidade : "São Paulo"},
 {nome : "Alexandre Peixoto", apelido : "Montanha", cidade : "São Paulo"},
 {nome : "Thiago Império", apelido : "Thiagão", cidade : "São Paulo"}]);

 [Bindable]
 private var pessoasSelecionadas:ArrayCollection = new ArrayCollection();

 public function adicionarPessoa():void{
 var index:int = dg_pessoas_disponiveis.selectedIndex;

 if(dg_pessoas_disponiveis.selectedIndex != -1){
 pessoasDisponiveis.getItemAt(index);
 pessoasSelecionadas.addItem(pessoasDisponiveis.getItemAt(index));
 pessoasDisponiveis.removeItemAt(index);
 }else{
 Alert.show('Selecione uma pessoa!');
 }
 }

 public function removerPessoa():void{
 var index:int = dg_pessoas_selecionadas.selectedIndex; 

 if(dg_pessoas_selecionadas.selectedIndex != -1){
 pessoasSelecionadas.getItemAt(dg_pessoas_selecionadas.selectedIndex);
 pessoasDisponiveis.addItem(pessoasSelecionadas.getItemAt(index));
 pessoasSelecionadas.removeItemAt(index);
 }else{
 Alert.show('Selecione uma pessoa!');
 }
 }

 public function selecionarTodos():void{
 pessoasSelecionadas.addAll(pessoasDisponiveis);
 pessoasDisponiveis.removeAll();
 }

 public function removerTodos():void{
 pessoasDisponiveis.addAll(pessoasSelecionadas);
 pessoasSelecionadas.removeAll();
 }

 ]]>
 </mx:Script>

 <mx:DataGrid id="dg_pessoas_disponiveis" x="58" y="63" width="299" height="167" dropEnabled="true" dragMoveEnabled="true" dragEnabled="true" allowDragSelection="true" allowMultipleSelection="true" dataProvider="{pessoasDisponiveis}">
 <mx:columns>
 <mx:DataGridColumn headerText="Nome " dataField="nome"/>
 <mx:DataGridColumn headerText="Apelido" dataField="apelido"/>
 <mx:DataGridColumn headerText="Cidade " dataField="cidade"/>
 </mx:columns>
 </mx:DataGrid>

 <mx:Button x="381" y="153" label="&gt;" click="adicionarPessoa()" width="44"/>
 <mx:Button x="381" y="183" label="&lt;" click="removerPessoa()" width="44"/>
 <mx:Button x="381" y="123" label="&lt;&lt;" click="removerTodos()"/>
 <mx:Button x="381" y="93" label="&gt;&gt;" click="selecionarTodos()"/>

 <mx:DataGrid id="dg_pessoas_selecionadas" dropEnabled="true" dragEnabled="true" dragMoveEnabled="true" allowDragSelection="true" allowMultipleSelection="true" x="446" y="62" width="334" height="168" dataProvider="{pessoasSelecionadas}">
 <mx:columns>
 <mx:DataGridColumn headerText="Nome " dataField="nome"/>
 <mx:DataGridColumn headerText="Apelido" dataField="apelido"/>
 <mx:DataGridColumn headerText="Cidade " dataField="cidade"/>
 </mx:columns>
 </mx:DataGrid>
 <mx:Label x="58" y="37" text="Disponíveis"/>
 <mx:Label x="446" y="37" text="Selecionados"/>
 </mx:TitleWindow>

</mx:Application>

Até o próximo post!

Enviado em Flex | 3 Comentários »

 
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.