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:
O semelhante a isso no flex seria:
-
var obj:Object;
-
var className:String = "br.com.pedrogoncalves.flex.Classe";
-
var clazz:Class = Class(getDefinitionByName(className));
-
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:
-
/**
-
* Pega o retorno de uma propriedade de um objeto.
-
*
-
* @param obj - Objeto que têm a propriedade
-
* @param property - Propriedade que deseja pegar o retorno.
-
* @return Classe do objeto.
-
* @author Pedro Gonçalves
-
*/
-
public static function getType(obj:Object,property:String):Class {
-
var xmlDescription:XML = describeType(obj);
-
var val:XMLList = xmlDescription.variable.(@name==property);
-
var type:String = String(val.attribute("type")).replace("::",".");
-
var clazz:Class = Class(getDefinitionByName(type));
-
return clazz;
-
}
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
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.


