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

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
-
package com.saberprogramar.events
-
{
-
import flash.events.Event;
-
-
public class EstadoEvent extends Event
-
{
-
-
public static const SAVE:String = "saveEstado";
-
public static const REMOVE:String = "removeEstado";
-
-
-
public function EstadoEvent(type:String)
-
{
-
super(type);
-
}
-
-
-
}
-
}
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
-
package com.saberprogramar.controllers
-
{
-
import com.saberprogramar.models.entitys.Estado;
-
-
import mx.collections.ArrayCollection;
-
-
public interface IEstadoController
-
{
-
-
function get estadoList():ArrayCollection;
-
-
function findAll():void;
-
-
function findByName(nome:String):void;
-
-
function save(estado:Estado):void;
-
-
function remove(estado:Estado):void;
-
-
}
-
}
Uma simples interface sem muitas explicações que é implementada pela:
EstadoController.as
-
package com.saberprogramar.controllers
-
{
-
import com.saberprogramar.events.EstadoEvent;
-
import com.saberprogramar.models.delegates.EstadoDelegate;
-
import com.saberprogramar.models.entitys.Estado;
-
-
import mx.collections.ArrayCollection;
-
import mx.controls.Alert;
-
import mx.rpc.events.FaultEvent;
-
import mx.rpc.events.ResultEvent;
-
-
import org.swizframework.Swiz;
-
import org.swizframework.controller.AbstractController;
-
-
public class EstadoController extends AbstractController
-
implements IEstadoController{
-
-
[Bindable]
-
public var estadoList:ArrayCollection;
-
-
[Autowire(bean="estadoDelegate")]
-
public var estadoDelegate:EstadoDelegate;
-
-
public function EstadoController()
-
{
-
super();
-
}
-
-
public function findAll():void{
-
executeServiceCall(estadoDelegate.findAll(),onFindAll,onError);
-
}
-
-
public function findByName(nome:String):void{
-
executeServiceCall(estadoDelegate.findByName(nome),onFindByName,onError);
-
}
-
-
public function save(estado:Estado):void{
-
executeServiceCall(estadoDelegate.save(estado),onSave,onError);
-
}
-
-
public function remove(estado:Estado):void{
-
executeServiceCall(estadoDelegate.remove(estado),onRemove,onError);
-
}
-
-
//*************** Handle Results ************************//
-
-
public function onFindAll(event:ResultEvent):void{
-
estadoList = ArrayCollection(event.result);
-
}
-
-
public function onFindByName(event:ResultEvent):void{
-
estadoList = event.result as ArrayCollection;
-
}
-
-
public function onSave(event:ResultEvent):void{
-
Swiz.dispatchEvent(new EstadoEvent(EstadoEvent.SAVE));
-
}
-
-
public function onRemove(event:ResultEvent):void{
-
Swiz.dispatchEvent(new EstadoEvent(EstadoEvent.REMOVE));
-
}
-
-
private function onError(event:FaultEvent):void{
-
Alert.show(event.fault.message,"ERROR");
-
}
-
-
-
-
-
}
-
}
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.
-
[Autowire(bean="estadoDelegate")]
-
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% [?]
Tags: Código Fonte Flex, Código Fonte java, DomainDriveDesign, Hibernate, hibernate Annotations, Indico a Leitura, Java, pratica java flex, Spring, SPRING ANNOTATIONS, TUTORIAL FLEX, TUTORIAL JAVA
Categoria(s):#JAVA + FLEX NA PRÁTICA, Adobe Flex, Blazeds, Data Service, Frameworks, Hibernate, Java, MVC, Spring, Swiz Framework












Gostei muito do seu tutorial esta de parabens...
Muito Obrigado pelo FeedBack Fernando,e seja bem Vindo ao blog
Cumps.
O tutorial esta muito bom. Principalmente por que voce fala sobre o swiz. Recentemtene eu comecei meus estudos sobre frameworks, entao decidi adotar o swiz para minhas aplicacoes. Estou encontrando algumas barreiras pois nao encontrei materiais em portugues. e o meu ingles e so leitura (ainda em desenvolvimento) existe aquele video do Scott, mas todo em ingles...
enfim voce tem algum material em portugue que possa me auxiliar, desde ja agradeço.
e mais uma vez parabens pelos posts...
Abraço...
mais uma duvida... vc sabe como utilizar o swiz com o amfphp... nao estou conseguindo configurar...
Fala Janderson,
Show de bola o trabalho ... nota 9,5 só não te dou 10 pois estou ancioso para ver o final
Quando vai liberar ?
@Willian Obrigado, sobre material em português do Swiz também não encontrei, só em um Blog chamado SaberProgramar.com, hehe
sobre o Swiz com amfphp também trabalho, mais fica dificil explicar via comentário, na segunda faço um post mostrando como fazer, blz?
@Waldir amanhã, Quinta vai ser lançado a última parte, mais deve ter surpresa na sexta, hehe, espero que eu possa receber um 10 amanhã
Cumps.
Cara...
Eu ia te dar 10, mas como vc falou que sexta ainda tem surpresa, entao te dou uma nota de 9,8 ... hahuahuahuahuahu
Show de bola ... Parabens mesmo.
[...] + 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 [...]
[...] TUTORIAL JAVA + FLEX NA PRÁTICA 5/6 [...]