Posts Tagged ‘FLEX’

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: 7% [?]

SharedObjects – Cookie para sua app flex

novembro 22nd, 2009, posted in Adobe Flex, Dicas

Se você procura uma maneira de usar Cookie no flex o SharedObjects pode ser útil, para quem não sabe o SharedObjects é muito fácil de usar e possui essas Características:

  1. Assim como o Cookie é gerado um arquivo na máquina do usuário final;

  2. Tem extensão .sol;

  3. Não é Cookie... não adianta “limpar o Cookie”(sem piadinhas ao ler essa frase :) ) do navegador... para limpar tem que ser programado e inserido na aplicação flex... no caso usando o método clear() do objeto instanciado como SharedObjects;

  4. Assim como Cookie o usuário final pode bloquear o SharedObjects ou limitar seu tamanho;

  5. pode ser guardar Objetos complexo nesse arquivo...só não pode ter métodos.

Vou mostrar um exemplo simples de como usar essa classe, a idéia é fazer uma espécie de Profiles no Flex, o usuário tem 3 states e o último que ele se encontrava antes de fechar o navegador quero que seja aberto. Vamos ao simples código:

Application.mxml

XML:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300"
  3.     creationComplete="init()" viewSourceURL="srcview/index.html">
  4.     <mx:states>
  5.         <mx:State name="state2">
  6.             <mx:SetProperty target="{button1}" name="label" value="State Principal"/>
  7.             <mx:SetProperty target="{panel}" name="title" value="State 2"/>
  8.             <mx:SetProperty target="{button2}" name="x" value="283"/>
  9.             <mx:SetProperty target="{button2}" name="y" value="54"/>
  10.             <mx:SetEventHandler target="{button1}" name="click" handler="mudaState('')"/>
  11.         </mx:State>
  12.         <mx:State name="state3">
  13.             <mx:SetProperty target="{button2}" name="label" value="State Principal"/>
  14.             <mx:SetProperty target="{button2}" name="x" value="241"/>
  15.             <mx:SetProperty target="{panel}" name="title" value="State 3"/>
  16.             <mx:SetProperty target="{button2}" name="y" value="54"/>
  17.             <mx:SetEventHandler target="{button2}" name="click" handler="mudaState('')"/>
  18.         </mx:State>
  19.     </mx:states>
  20.     <mx :P anel x="10" y="86" width="380" height="120" layout="absolute" title="State Principal" id="panel">
  21.         <mx:Button label="State 2" x="10" y="54" id="button1" click="mudaState('state2')"/>
  22.         <mx:Button label="State 3" x="283" height="22" y="54" id="button2" click="mudaState('state3')"/>
  23.     </mx :P anel>
  24.  
  25.     <mx:Script>
  26.         <![CDATA[
  27.  
  28.             public var profile:SharedObject;
  29.  
  30.             private function init():void{
  31.                 profile = SharedObject.getLocal("profile");
  32.                 if (profile.data.state != undefined){
  33.                     mudaState(profile.data.state);
  34.                 }else {
  35.                     mudaState('');
  36.                 }
  37.             }
  38.  
  39.             private function mudaState(state:String):void{
  40.                 this.currentState = state;
  41.                 profile.data.state = state;
  42.             }
  43.  
  44.             /*Função não usada é só um exemplo para limpar o
  45.              nosso SharedObject*/
  46.             private function limparProfile():void{
  47.                 profile.clear();
  48.             }
  49.  
  50.         ]]>
  51.     </mx:Script>
  52.  
  53. </mx:Application>

viu como é simples!

CODE:
  1. profile = SharedObject.getLocal("profile");

é onde atribuímos o valor do objeto profile, SharedObject.getLocal procura se existe um arquivo com esse nome e pega os valores armazenados no mesmo, se não existe neste momento é criado.

O resto é bem didático vamos nos poupar..rs olha esse exemplo funcionando logo abaixo:

faz um teste aí..muda de state Principal para 2 ou 3...fecha o navegador..acesse novamente esse post e você vai perceber que vai abrir no state que você estava por último ;)

Então fica aí uma dica de uso do SharedObject ;)

Cumps.

Popularity: 14% [?]

#Dica1 FLEX – loop? que tal Repeater?

setembro 1st, 2009, posted in Adobe Flex, Dicas

Olá, no atual projeto em que estou trabalhando há necessidade de construir componentes em flex em tempo de execução, mas como fazer isso? para muitos isso é um mito para outros já imaginaram um loop em Action script que faça isso, como o exemplo abaixo:

CODE:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  3.     creationComplete="{init()}">
  4.  
  5.     <mx:Script>
  6.         <![CDATA[
  7.             import mx.controls.Label;
  8.             import mx.collections.ArrayCollection;
  9.  
  10.             [Bindable]
  11.             private var array:ArrayCollection = new ArrayCollection(
  12.             [{nome:"teste"},{nome:"de"},{nome:"janderson"},{nome:"saberprogramar.com"},{nome:"gostou?"}]);
  13.  
  14.             private function init():void{
  15.  
  16.                 for (var i:int=0; i <array.length;i++){
  17.                     var label:Label = new Label();
  18.                     label.text = array.getItemAt(i).nome;
  19.                     box.addChild(label);
  20.                 }
  21.  
  22.             }
  23.  
  24.         ]]>
  25.     </mx:Script>
  26.  
  27.     <mx:VBox id="box">
  28.     </mx:VBox>
  29.  
  30. </mx:Application>

parabéns para aqueles que imaginaram o código acima, vai funcionar e vai ser criado os labels um abaixo do outro pois se encontra em um vBox ;)

Mas se eu disser que não é necessário, que existe uma forma mais simples que vc não vai precisar desta function que faz esse Loop? sim é verdade, poucos sabem mas o flex tem um recurso muito legal que simplifica ao máximo a vida do programador na hora de criar componentes em tempo de execução, estou falando do REPEATER.

esse exemplo que acabei de mostrar acima com repeater ficaria assim:

CODE:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
  3.  
  4.     <mx:Script>
  5.         <![CDATA[
  6.             import mx.controls.Label;
  7.             import mx.collections.ArrayCollection;
  8.  
  9.             [Bindable]
  10.             private var array:ArrayCollection = new ArrayCollection(
  11.             [{nome:"teste"},{nome:"de"},{nome:"janderson"},{nome:"saberprogramar.com"},{nome:"gostou?"}]);
  12.  
  13.  
  14.         ]]>
  15.     </mx:Script>
  16.  
  17.     <mx:VBox id="box">
  18.         <mx:Repeater id="myRepeater" dataProvider="{array}">
  19.             <mx:Label text="{myRepeater.currentItem.nome}"/>
  20.         </mx:Repeater>
  21.     </mx:VBox>
  22.  
  23. </mx:Application>

Bem mais simples não? é claro que não serve só para o caso citado acima, dê uma olhada na documentação aqui.

Bem é isso,  post simples para mostrar algo simples que pode simplificar muita coisa :)

Cumps.

Popularity: 8% [?]

MVC da teoria para a prática

março 15th, 2009, posted in Java, MVC, PHP

Uma coisa muito difícil para quem começa no mundo da programação é entender a Arquitetura MVC e se ele realmente é necessário (já que sem ela funciona e normalmente se aprende bem depois a fazer algo com MVC)

Antes de qualquer coisa leia esses links para entender melhor o que é MVC

Links sobre MVC

http://fragmental.com.br/wiki/index.php?title=MVC_e_Camadas

http://pt.wikipedia.org/wiki/MVC

http://msdevstudio.com/blog/2008/11/06/tutorial-mvc-no-flex-entendendo-a-logica/

Depois dos links acima vamos às minhas conclusões feitas sobre o MVC

Antes de qualquer coisa entenda uma coisa MVC <> programação em Camadas, Dividir em camadas estamos apenas organizando nossos componentes (no nosso caso OO normalmente as classes) e MVC é uma arquitetura ou|e padrões de projeto que mostra como devemos interagir com os nossos componentes para que fiquem menos acoplados e ajude na organização e manutenção dos nossos componentes.

Ok, você continua não entendendo o que é MVC, vamos então simplificar as coisas respondendo algumas Perguntas:

Pergunta 1

Janderson, eu tenho um site em JAVA que acho que está com arquitetura MVC, a arquitetura é a seguinte: tenho a View (JSP), Controller (httpService) e tenho a Model (DAO), isso é MVC?

Depende. Se sua JSP em hipótese nenhuma se comunica com a DAO, se o Httpservice pega informação do JSP e passa para a DAO ou da DAO passar para o HttpService e sua DAO enviar informação para JSP(não recomendado), a reposta é SIM.

View envia dados para Controller

Controller se comunica com View e Model

Model envia dados para Controller e View

Ou seja, se você respeitar o que cada Letra do MVC é responsável você estará usando MVC

Pergunta 2

Janderson, tenho um sistema feito em Java cuja camada de apresentação é em flex, arquitetura é a seguinte: CAMADA DADOS(Arquitetura DAO [JAVA]), CAMADA NEGÓCIO(arquitetura SOA[JAVA]) e CAMADA APRESENTAÇÂO(arquitetura MVC [FLEX]), posso considerar o meu MVC certo mesmo que ele esteja em apenas uma camada do meu projeto?

SIM. São em exemplos um pouco maior como este que entendemos melhor o que é ARQUITETURA MVC, MVC não tem nada haver com camadas, mais sim com um modelo(Design patterns) para mostrar como vamos interagir com os nossos componentes. Neste caso específico nossa model poderia ser uma classe que mapearia ou se comunicaria com um WebService ou RemoteObject para acessar nossa camada de NEGÓCIO ( que por sua vez se comunicaria com a de DADOS), a Controller seria os eventos e ações da tela e a View nosso MXML.

Resumindo

Model <> DAO mesmo que sua DAO seja a Model, ou seja, a DAO é responsável por gravar e ler os dados enquanto a Model é responsável por pedir para alguém para fazer isso, pode pedir para um Objeto remoto, para um WebService ou para própria DAO.

Controller é a responsável por fazer a interseção entre a View e a Model, pegando requisições da view e passando para a Model que por sua vez contendo a informação (não interessa como) pedida pela Controller retorna para a Controller ou para a própria View a informação desejada.

View só vai conter o código necessário para apresentação com o usuário e vai conhecer a controller para solicitar algo que seja necessário para o usuário, ou seja, se precisa de algo pede para Controller fazer e espera resposta do mesmo.

Por mais que tentamos mostrar na prática sempre vamos voltar um pouco para teoria já que MVC é um conceito e não um modelo exato de como você vai fazer. Existe N maneiras de arquitetar um MVC, o importante é que você sempre lembre o objetivo do MVC, assim você estará sempre usando MVC independente de camada, ferramentas,Frameworks ou não, linguagens...

Espero que ajude alguém e até a próx.

Popularity: 16% [?]