Posts Tagged ‘Java’

TUTORIAL JAVA + FLEX + IREPORT NA PRÁTICA (10)

março 7th, 2010, posted in Pronunciamento

Olá galera, aqui estou eu mais uma vez para passar um conteúdo para vocês que acredito ser de grande ajuda para quem tem que fazer relatórios com java + flex…

Desde de agosto de 2009 tenho trabalhado intensamente com relatórios, na verdade criei um gerador de relatório em flex que assim como  ireport gera um xml válido para o JasperReport, então acredito ter muito a ensinar para vocês e espero que hoje seja só o começo desse assunto por aqui ;)

Tenho recebido muitos emails pedindo “como trabalhar com relatórios java+flex” e ultimamente depois que comentei que iria falar sobre o assunto a cobrança aumentou, e como estou em fase de mudança e sem tempo para escrever um post grande cheio de explicações resolvi criar o meu primeiro screencast para mostrar o que fiz, assim acho que é mais rápido e compreensível, então aí vai o screencast, espero que gostem e me perdoem por falta de experiência com screencast, no mais bons estudos ;)

espero o feedback de vcs ;)

Caso queira o projeto java é só baixar aqui.(com as libs incusive as do ireport).

Caso queira o projeto flex é só baixar aqui.

as libs necessárias do ireport ficam localizadas:

local instalado o ireport ( ex: C:\Arquivos de programas\Jaspersoft\iReport-3.7.1 ) + ireport\modules\ext\

dentro dessa pastas os arquivos .jar

commons-digester-1.7.jar, groovy-all-1.5.5.jar, iText-2.1.0.jar, jasperreports-3.7.1.jar, jasperreports-chart-themes-3.6.2.jar, jasperreports-extensions-3.5.3.jar, jasperreports-fonts-3.6.1.jar.

Cumps.

Popularity: 6% [?]

TUTORIAL JAVA + FLEX NA PRÁTICA 7/6 – Bônus

julho 20th, 2009, posted in #JAVA + FLEX NA PRÁTICA, Adobe Flex, Blazeds, Hibernate, Java, MVC, Spring, Swiz Framework

Esse artigo é continuação do
TUTORIAL JAVA + FLEX NA PRÁTICA 1/6
TUTORIAL JAVA + FLEX NA PRÁTICA 2/6
TUTORIAL JAVA + FLEX NA PRÁTICA 3/6
TUTORIAL JAVA + FLEX NA PRÁTICA 4/6
TUTORIAL JAVA + FLEX NA PRÁTICA 5/6
TUTORIAL JAVA + FLEX NA PRÁTICA 6/6

Não definitivamente você não está delirando e nem eu esqueci conceitos simples da matemática, realmente criei mais um tutorial, a 7/6, o que estou considerando Bônus, para fazer algumas modificações e implementar algumas funcionalidades.

Antes gostaria de agradecer pela participação do pessoal, muitos entenderam o objetivo do tutorial e com certeza fizeram bom proveito, fiquei sabendo este mês de julho que alguns mudaram a forma de trabalhar com Java + flex através deste tutorial :P . Através do mesmo recebi ótimos contatos e oportunidades profissionais, porém, como sempre há alguém que quer mais e gostaria de mais um empurram, então vamos direto ao assunto que tempo é dinheiro.

Essa parte vamos tratar mais de relacionamentos entre tabelas, como tratar esses relacionamentos no Flex e como mostrar mais de um objeto no datagrid… vamos a prática.

Popularity: 48% [?]

TUTORIAL JAVA + FLEX NA PRÁTICA 6/6

maio 28th, 2009, posted in #JAVA + FLEX NA PRÁTICA, Adobe Flex, Blazeds, Data Service, Frameworks, Hibernate, Java, MVC, Spring, Swiz Framework

Esse artigo é continuação do
TUTORIAL JAVA + FLEX NA PRÁTICA 1/6
TUTORIAL JAVA + FLEX NA PRÁTICA 2/6
TUTORIAL JAVA + FLEX NA PRÁTICA 3/6
TUTORIAL JAVA + FLEX NA PRÁTICA 4/6
TUTORIAL JAVA + FLEX NA PRÁTICA 5/6

Na última parte do nosso tutorial vamos fazer a V(View) do nosso MVC, no caso são 2 tipos de arquivo, a interface em si e a Ação da mesma, lembrando que essa separação não é necessária, eu faço porque gosto de tudo bem dividido, isso ajuda e muito na manutenção ou até mesmo na alteração do Layout, uma vez eu já expliquei o porque disso no artigo Separando MXML do Action Script.

Para terminar com chave de ouro vamos ao código:

Popularity: 46% [?]

TUTORIAL JAVA + FLEX NA PRÁTICA 5/6

maio 25th, 2009, posted in #JAVA + FLEX NA PRÁTICA, Adobe Flex, Blazeds, Data Service, Frameworks, Hibernate, Java, MVC, Spring, Swiz Framework

Esse artigo é continuação do
TUTORIAL JAVA + FLEX NA PRÁTICA 1/6
TUTORIAL JAVA + FLEX NA PRÁTICA 2/6
TUTORIAL JAVA + FLEX NA PRÁTICA 3/6
TUTORIAL JAVA + FLEX NA PRÁTICA 4/6

Como tenho feito nos outros artigos que fazem parte deste tutorial vou colocar o projeto para vocês não se perderem

package crudFlex TUTORIAL JAVA + FLEX NA PRÁTICA 5/6

EVENTS

Eventos é forma que encontramos de criar uma comunicação entre Objetos que não tem ou não podem se comunicar de uma forma direta. Algumas coisas são muito bonito falar porém é muito Simples fazer, um exemplo típico são os eventos customizados em flex, como o tutorial é NA PRÁTICA vamos ao código:

EstadoEvent.as

ACTIONSCRIPT:
  1. package com.saberprogramar.events
  2. {
  3.     import flash.events.Event;
  4.  
  5.     public class EstadoEvent extends Event
  6.     {
  7.  
  8.         public static const SAVE:String = "saveEstado";
  9.         public static const REMOVE:String = "removeEstado";
  10.  
  11.  
  12.         public function EstadoEvent(type:String)
  13.         {
  14.             super(type);
  15.         }
  16.  
  17.  
  18.     }
  19. }

Os eventos são muito utilizados no Flex e recomendo por todos que procuram um código limpo, como você consegue perceber declaro variáveis Static com o nome de "SAVE" e "REMOVE", neste caso representa os métodos que será necessário disparar eventos, a necessidade de ter esses eventos no nosso caso de um MVC é que a Controller ele não pode mudar um status na view, isso é responsabilidade da própria view, por isso a necessidade de ter eventos. A view fica a escuta deste evento, então quando a controller dispara esse evento a própria view muda o seu status.

Para criar um evento customizado é só criar uma sub-classe da Classe "Event", na construtora da nossa classe recebemos como parâmetro uma String, que no caso é uma das nossas variáveis que declaramos como static na mesma classe (Mais a frente você verá a utilização da nossa classe e vai entender mais).

CONTROLLER

Agora vamos falar da C(Controller) do nosso MVC, essa parte é a melhor de todas, Aliás é a parte da implementação do MVC mais importante.

A Controller recebe requisições da View e passa para Model e o mesmo acontece no sentido contrário, além disso a Controller dispara os eventos que acabamos de criar no ínicio deste tutorial.

Se você analisar a figura acima vai perceber que existem duas classes na nossa Controller uma interface e a implementação da mesma, vamos ao código:

IEstadoController.as

ACTIONSCRIPT:
  1. package com.saberprogramar.controllers
  2. {
  3.     import com.saberprogramar.models.entitys.Estado;
  4.  
  5.     import mx.collections.ArrayCollection;
  6.  
  7.     public interface IEstadoController
  8.     {
  9.  
  10.         function get estadoList():ArrayCollection;
  11.  
  12.         function findAll():void;
  13.  
  14.         function findByName(nome:String):void;
  15.  
  16.         function save(estado:Estado):void;
  17.  
  18.         function remove(estado:Estado):void;
  19.  
  20.     }
  21. }

Uma simples interface sem muitas explicações que é implementada pela:

EstadoController.as

ACTIONSCRIPT:
  1. package com.saberprogramar.controllers
  2. {
  3.     import com.saberprogramar.events.EstadoEvent;
  4.     import com.saberprogramar.models.delegates.EstadoDelegate;
  5.     import com.saberprogramar.models.entitys.Estado;
  6.  
  7.     import mx.collections.ArrayCollection;
  8.     import mx.controls.Alert;
  9.     import mx.rpc.events.FaultEvent;
  10.     import mx.rpc.events.ResultEvent;
  11.  
  12.     import org.swizframework.Swiz;
  13.     import org.swizframework.controller.AbstractController;
  14.  
  15.     public class EstadoController extends AbstractController
  16.         implements IEstadoController{
  17.  
  18.         [Bindable]
  19.         public var estadoList:ArrayCollection;
  20.  
  21.         [Autowire(bean="estadoDelegate")]
  22.         public var estadoDelegate:EstadoDelegate;
  23.  
  24.         public function EstadoController()
  25.         {
  26.             super();
  27.         }
  28.  
  29.         public function findAll():void{
  30.             executeServiceCall(estadoDelegate.findAll(),onFindAll,onError);
  31.         }
  32.  
  33.         public function findByName(nome:String):void{
  34.             executeServiceCall(estadoDelegate.findByName(nome),onFindByName,onError);
  35.         }
  36.  
  37.         public function save(estado:Estado):void{
  38.             executeServiceCall(estadoDelegate.save(estado),onSave,onError);
  39.         }
  40.  
  41.         public function remove(estado:Estado):void{
  42.             executeServiceCall(estadoDelegate.remove(estado),onRemove,onError);
  43.         }
  44.  
  45.         //*************** Handle Results ************************//
  46.  
  47.         public function onFindAll(event:ResultEvent):void{
  48.             estadoList = ArrayCollection(event.result);
  49.         }
  50.  
  51.         public function onFindByName(event:ResultEvent):void{
  52.             estadoList = event.result as ArrayCollection;
  53.         }
  54.  
  55.         public function onSave(event:ResultEvent):void{
  56.             Swiz.dispatchEvent(new EstadoEvent(EstadoEvent.SAVE));
  57.         }
  58.  
  59.         public function onRemove(event:ResultEvent):void{
  60.             Swiz.dispatchEvent(new EstadoEvent(EstadoEvent.REMOVE));
  61.         }
  62.  
  63.         private function onError(event:FaultEvent):void{
  64.             Alert.show(event.fault.message,"ERROR");
  65.         }
  66.  
  67.  
  68.  
  69.  
  70.     }
  71. }

Vamos a algumas explicações:

AbastractController -> uma classe que faz parte do Framework Swiz, ao estendermos esta classe além de ter a mesma funcionalidade que ganhamos no caso do Delegate podemos usar um método que facilita e muito a forma de tratar as funções, o método executeServiceCall.

executeServiceCall - > recebe como parâmetro um método, o nossa função que vai receber o retorno em caso de sucesso e a nossa função que vai receber o retorno no caso de algum erro.

Na linha abaixo adicionamos uma escuta para nosso bean criado no Bean.mxml chamado de estadoDelegate que mapea e instancia a nossa classe já criada e explicada EstadoDelegate.

ACTIONSCRIPT:
  1. [Autowire(bean="estadoDelegate")]
  2. public var estadoDelegate:EstadoDelegate;



//*************** Handle Results ************************//


Desta linha para baixo estão todas as nossas funções que trata o retorno que vem do nosso Delegate, pode perceber no caso onSave e OnRemove eu disparo o Nosso Evento Criado no ínicio deste artigo pelo framework Swiz e não pelo dispatchEvent do SDK padrão do Flex(Flash), esse disparo de Evento é necessário para que a view saiba que ocorreu tudo certo e mude o seu “status” atual.

OK, na próxima parte vamos mostrar a View feita em Flex, a view que vai ser responsável por “consumir”(se comunicar) com o nosso Controller.

Espero o feedback de vocês galera, se está bom, ruim, péssimo. Podem ficar a vontade para comentar no blog e se gostarem divulgar, o intuito é ajudar quem quer usar um MVC no Flex, espero está ajudando alguém ;)

Vlw e até a próx.

Popularity: 36% [?]