FLEX: Instanciar objeto a partir da classe


Quando desenvolve-se componentes genéricos em FLEX, é necessário, muitas vezes fazer instâncias de objetos em runtime, porém nem sempre esta instância está a disposição. Depois de quase 2 anos e meio trabalhando com java, ao migrar para o action script 3, senti uma grande falta da API de Reflection que temos lá, quem é considerávelmente completa.

Então a reflexão possui 3 princípios básicos. O primeiro descobrir a classe do objeto, o segundo instânciar e terceiro utilizar de maneira genérica.

O primeiro passo foi descrito num post anterior: http://pedrogoncalves.com.br/2008/07/07/flex-reflexao-com-actionscript-3/ 

Utilizando-se do código do post anterior, vamos a como instanciar em runtime um objeto.

Em java fazemos algo do tipo:

JAVA:
  1. String className = "br.com.pedrogoncalves.flex.Classe";
  2. Class clazz = Class.forName(className);
  3. Object obj = clazz.newInstance();

O semelhante a isso no flex seria:

Actionscript:
  1. var obj:Object;
  2. var className:String = "br.com.pedrogoncalves.flex.Classe";
  3. var clazz:Class = Class(getDefinitionByName(className));
  4. obj= new clazz();

Estranho não? Mas enquanto a adobe não faz algo melhor, é conformar com isso ai mesmo!

Até!

FLEX: Reflexão com ActionScript 3


Precisei fazer reflexão com actionscript3, que era basicamente, descobrir o tipo de um atributo da classe, e se ele for composto - tipo definido em minha aplicação - eu precisaria gerar uma nova instância.

Precisei disso, pois estava montando alguns componentes genéricos, e depois de estudar um bocado e atormentar o Mário Júnior, veio a luz.

Então, desenvolvi o seguinte método:

Actionscript:
  1. /**
  2. * Pega o retorno de uma propriedade de um objeto.
  3. *
  4. * @param obj - Objeto que têm a propriedade
  5. * @param property - Propriedade que deseja pegar o retorno.
  6. * @return Classe do objeto.
  7. * @author Pedro Gonçalves
  8. */
  9. public static function getType(obj:Object,property:String):Class {
  10. var xmlDescription:XML = describeType(obj);
  11. var val:XMLList = xmlDescription.variable.(@name==property);
  12. var type:String = String(val.attribute("type")).replace("::",".");
  13. var clazz:Class = Class(getDefinitionByName(type));
  14. return clazz;
  15. }

Post rápido: Neo versão 3.4


O tempo anda meio corrido, mas a nova versão do Neo Framework já está pronta para o lançamento do em 01/04/2008.

Dentre os principais, foi adicionado as annotations @ValidationOverride e @ValidationsOverrrides, que permite sobrescrever a validação de um bean. Também está disponível o suporte completo a timestamp e o mais importante, a atualização do hibernate para a versão corrente.

Confira as releases:

Bug

  • [NEOFRAMEWORK-6] - Corrigido o bug que fazia com que uma propriedade do tipo arquivo não aparecesse como link em um datagrid (listagem).
  • [NEOFRAMEWORK-7] - Correção de bug no validationOverride.
  • [NEOFRAMEWORK-9] - Correção de bug no Tipo Cnpj, que não permitia limpar os valores dos campos deste tipo
  • [NEOFRAMEWORK-10] - Alteração na classe ListagemResult.java. A query montada para fazer o somatório estava incorreta.
  • [NEOFRAMEWORK-11] - Quando desabilitado os campos do tipo radio não são afetados.
  • [NEOFRAMEWORK-12] - Corrigidos os bugs de fechamento de streams (FileInputStream, FileOutputStream, FileReader, FileWriter, getResourceAsStream).
  • [NEOFRAMEWORK-23] - A tag ComboReloadGroup não dispara os próximos combos após o combo com a propriedade autoSugestUniqueItem.
  • [NEOFRAMEWORK-25] - O fazer um filtro com uma string entre colchetes ( Exemplo: [nome] ), aparece uma excessão ArrayIndexOutOfBounds
  • [NEOFRAMEWORK-26] - Retirar a validação do servidor quando se utitiliza o validationOverride para retirar a obrigatoriedade de um campo.
  • [NEOFRAMEWORK-27] - Listagem de cadastro que possui detalhe.
  • [NEOFRAMEWORK-32] - Truncade funcionado incorretamente
  • [NEOFRAMEWORK-36] - Alteração do <n:submit, é adicionado a url o javascript quando o tipo é link
  • [NEOFRAMEWORK-37] - Implementar conversor Timestamp

Improvement

  • [NEOFRAMEWORK-3] - Adicionado o atributo onlyPositiveNumbers nas tags property e input.
  • [NEOFRAMEWORK-4] - Adicionado o atributo showDelete na tag janelaentrada para determinar se o botão de exclusão será mostrado.
  • [NEOFRAMEWORK-5] - Modificado sistema de validação. Adicionado as annotations @ValidationOverride e @ValidationOverrides
  • [NEOFRAMEWORK-8] - Inclusão do hidden resetCurrentPage no TabelaFiltroTag para forçar que a página inicial dos resultados seja exibida em uma nova consulta
  • [NEOFRAMEWORK-13] - Adicionado configuração "useTransactionOnSaveDetail" na classe SaveOrUpdateStrategy, quando setado como false, não é adicionado transação no detalhe.
  • [NEOFRAMEWORK-14] - Ao utilizar o SaveOrUpdateStrategy, permitir escolher qual propriedade do bean filho utilizar
  • [NEOFRAMEWORK-15] - Limitar tamanho dos campos tipo Money.
  • [NEOFRAMEWORK-16] - Mudar posição das opções para campos do tipo booleano quando usar select-one-radio
  • [NEOFRAMEWORK-17] - Limitar tamanho do campo na listagem quando for uma String.
  • [NEOFRAMEWORK-19] - Atualização das bibliotecas do JFree Chart
  • [NEOFRAMEWORK-20] - Adicionar na tag property propriedade "setfocus"
  • [NEOFRAMEWORK-21] - CLONE -Limitar tamanho dos campos tipo Money.
  • [NEOFRAMEWORK-28] - Atualização Hibernate Para a versão 3.2.6
  • [NEOFRAMEWORK-38] - Adicionar propriedade para controlar a exibição do link de download de um arquivo no navegador.
  • [NEOFRAMEWORK-39] - Criar suporte à chamada de função ao excluir linha de um detalhe.

Criação do conselho de informática


Depois de um longo tempo pensando o porque de apenas a informática não possuia um conselho? Quando queremos algo, quem corre atrás dos nosso interesses? Sindicatos? Putz.. mais atrapalham que ajudam. Trabalho a muito tempo com informática, e até hoje não vi nada que algum sindicado fez para poder ajudar a classe. Não importa. Esse não é o objetivo do post.

Navegando na internet encontrei a seguinte notícia: "Projeto que regulamenta as profissões de analista de sistemas e técnico de informática tem parecer aprovado na CCT". No primeiro momento assustei um pouco porque nunca havia visto nada a respeito. Mas me lembrei de uma conversa com um professor que me disse que já havia algo em movimentação na câmara. A princípio fiquei maravilhado com a notícia do meu professor. Mas logo me desanimou. Poxa, tudo no Brasil anda como uma tartaruga. E assim foi. Já tinha até me esquecido disso, até que encontrei a notícia acima.

Mas e ai? O que isso vai ajudar? Vantagens? Desvantagens?

A princípio apenas via vantagem sobre a criação de um conselho, como apenas trabalhar quem realmente estudou para isso, e ainda ter uma entidade que tem o apoio de todos os profissionais da área (pelo menos deveria =p) e com isso defender o interesse geral. Ainda teria um maior controle das pessoas no mercado, diminuia gradativamente as pessoas sem capacitação para o trabalho (obs: Existem muitas pessoas que não são da área e são excelentes "computeiros").

Ao mesmo tempo me lembro que já trabalhei antes de entrar na faculdade, fazendo serviços freelancer. Quer dizer que se nessa época já tivesse o conselho, eu não poderia trabalhar? Ou pessoas que são formadas em outros cursos e que acabam pulando de para-quedas na informática também não poderá trabalhar?

Acredito que o resultado final será satisfatório, até porque valirizará os meus 4 anos de faculdade né? Ou seja não farei apenas por ter diploma, formarei para poder exercer a minha profissão, e farei com que ele vália de alguma coisa. Atualmente penso que ter e não ter diploma é a mesma coisa. Nenhuma empresa nem sequer perguntou se eu tinha.

 

Confira aqui a notícia completa : http://www.senado.gov.br/agencia/verNoticia.aspx?codNoticia=72306&codAplicativo=2

 

Até a próxima.

Lançamento Gnome 2.2


Gnome 2.2

A data correta de lançamento eu não sei, (Que vergonha!) pois apenas agora vi o site do gnome, quando fui procurar fontes para instalação do mesmo. E que assim que abro o site o que vejo? Oo Lançamento de uma nova versão!

Nesta nova versão, que aparentemente ficou bem mais bonita de se ver, o pessoal do gnome colocaram várias features novas, entre as principais:

  • Say Cheese - Programinha para tirar fotos a partir da sua webcam.
  • Window Compositing - Que são efeitos aplicados nas janelas e também no trocar da janela, ALT+TAB
  • GNOME's Movie Player - Foi melhorado, e agora suporta tocar dvd, e também dá suporte a TV digital. A mais interessante, é possível pesquisar e tocar vídeos diretamente do YouTube.
  • Evolution - Ganhou uma significativa melhoria, agora ele integra com o Google Calendar( Finalmente! )
  • RemoteDesktop - Possibilitade de conectar ao seu desktop remotamente, o mais legal, podem ter usuários simultâneos.
  • Simplified Keyboard Setting - Melhoria na usabilidade do sofware para configuração de teclado!

Isso não é tudo! Confira aqui todas as alterações diretamente do site da equipe gnome.

http://library.gnome.org/misc/release-notes/2.22/

Previous Articles

Bug?! ao colocar atributo com mesmo nome de método em html


Pegadinha: imports de classes estáticas


Revelado o Nokia N96


Como fazer usuários usarem linux


Lançamento J2EE Spider 1.0.0-M1