Akira, Resumiste todas as possibilidades (pelo menos as que eu próprio tinha em mente).
1. Comparar a versão (que até tenho essa informação) é uma possibilidade sendo que existe um script de migração que é validado sempre mas só corre uma vez. Um dia mais tarde (1 ano) poderá ser removido com segurança. 2. Para mim a hipótese do XML e cache está de fora (cada bit de memória e ms de processamento são importantes para algo que está no centro). 3. Por outro lado o hasProperty acaba por ser uma boa hipótese simplesmente porque sei de antemão que os campos estão todos camel-case (nova versão) ou lower-case (isto é uma garantia). Obrigava a meter este código na minha framework. Acho que vou considerar o uso da hipótese 1, fazendo um backup automaticamente, rename a cada tabela para _old, correr o create table pelo ORM e depois copiar os dados. Abs, Hugo. No dia 3 de agosto de 2015 às 14:36, Akira <[email protected]> escreveu: > Sem usares o XML de introspecção vai ser difícil. Pressupondo que sejam > value objects, se souberes o serial de versão e estrutura do VO poderias > montar um handler consoante a versão. Se não sabes nada disso resta-te : > A) usares o XML e fazeres cache dele > B) tentares o hasProperty com as variações possíveis > Não sei o que será mais rápido. Tudo depende do contexto > On 3 Aug 2015 14:24, "Hugo Ferreira" <[email protected]> wrote: > >> João, >> >> Peço desculpa mas não me devo ter expressado bem. >> >> Imagina que o objecto "entity" tem uma propriedade "name" e eu não sei se >> é "name" ou "Name" mas faço >> var meuValor:String = entity["Name"] >> >> O AS3 não vai encontrar o valor porque a propriedade é case-sensitive. >> >> Fazer entity[field.toLowerCase()] também não me vai resolver o problema >> porque a propriedade pode ser Name na realidade. >> >> Eu sei que é díficil de entender sem contextualizar mas trata-se de uma >> migração/correção de modelo de dados já existindo dados. >> >> Eu posso simplesmente ignorar isto e continuar com o modelo de dados >> antigo mas gostaria de corrigi-lo mas se o preço a pagar for de grande >> risco ou de grande perda de performance vou manter as coisas tal como estão >> dai que eu sei que posso usar a introinspeção do flex obtendo um xml de >> toda a estrutura do objecto mas isto vai ser lento e/ou requerer memória >> para colocar em cache. >> >> >> Obrigado, >> Hugo. >> >> No dia 3 de agosto de 2015 às 12:25, João Fernandes < >> [email protected]> escreveu: >> >>> Tens sempre a possibilidade de fazer toLowerCase() de ambos os lados e >>> funciona quase sempre. Digo quase sempre porque isto não contempla accent >>> insensitive o que não irá funcionar neste caso. >>> >>> Para accent insensitive terás de usar o Collator para comparar 2 >>> expressões mas atenção que só funciona para match direto e não para match >>> algures na expressão comparada. A propriedade a definir é >>> ignoreDiacritics >>> <http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/globalization/Collator.html#ignoreDiacritics> >>> >>> >>> funciona >>> http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/globalization/Collator.html >>> >>> 2015-08-03 1:07 GMT+01:00 Hugo Ferreira <[email protected]>: >>> >>>> Boa noite, >>>> >>>> Neste exemplo a seguir, se por acaso a propriedade existente no objecto >>>> entity for "name" em vez de "Name", o flex não vai localizar uma vez que é >>>> case sensitive. >>>> >>>> var field:String = "Name"; >>>> >>>> if (entity[field] == sameObject[field]) >>>> { >>>> } >>>> >>>> Alguém sabe como tornar isto case insensitive sem perder muito a >>>> performance e que preferência se alterar o comportamento a nível global ? >>>> >>>> PS: Não gostaria de ter de analisar o XML do objectos. >>>> >>>> -- >>>> Recebeu esta mensagem porque subscreveu ao grupo "Mailing List da >>>> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" >>>> do Grupos do Google. >>>> Para anular a subscrição deste grupo e parar de receber emails do >>>> mesmo, envie um email para [email protected]. >>>> Para publicar uma mensagem neste grupo, envie um email para >>>> [email protected]. >>>> Visite este grupo em http://groups.google.com/group/riapt. >>>> Para mais opções, visite https://groups.google.com/d/optout. >>>> >>> >>> >>> >>> -- >>> >>> João Fernandes >>> >>> -- >>> Recebeu esta mensagem porque subscreveu ao grupo "Mailing List da >>> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" do >>> Grupos do Google. >>> Para anular a subscrição deste grupo e parar de receber emails do mesmo, >>> envie um email para [email protected]. >>> Para publicar uma mensagem neste grupo, envie um email para >>> [email protected]. >>> Visite este grupo em http://groups.google.com/group/riapt. >>> Para mais opções, visite https://groups.google.com/d/optout. >>> >> >> -- >> Recebeu esta mensagem porque subscreveu ao grupo "Mailing List da >> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" do >> Grupos do Google. >> Para anular a subscrição deste grupo e parar de receber emails do mesmo, >> envie um email para [email protected]. >> Para publicar uma mensagem neste grupo, envie um email para >> [email protected]. >> Visite este grupo em http://groups.google.com/group/riapt. >> Para mais opções, visite https://groups.google.com/d/optout. >> > -- > Recebeu esta mensagem porque subscreveu ao grupo "Mailing List da > Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" do > Grupos do Google. > Para anular a subscrição deste grupo e parar de receber emails do mesmo, > envie um email para [email protected]. > Para publicar uma mensagem neste grupo, envie um email para > [email protected]. > Visite este grupo em http://groups.google.com/group/riapt. > Para mais opções, visite https://groups.google.com/d/optout. > -- Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google. Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para [email protected]. Para publicar uma mensagem neste grupo, envie um e-mail para [email protected]. Visite este grupo em http://groups.google.com/group/riapt. Para mais opções, consulte https://groups.google.com/d/optout.
