Sauvegarde en eden

2 views
Skip to first unread message

Fred DUFAU

unread,
Dec 14, 2010, 9:09:55 AM12/14/10
to VEGAS - ECMASCript & ActionScript OpenSource framework
Hello,

Je continue d'avancer dans vegas, j'ai laché les composants lunas qui
en l'etat ne permettent pas de prototyper rapidement une application,
et j'ai basculé sur flash builder qui est maintenant fourni avec CS5.

J'utilise donc vegas dans FB et j'ai une question concernat la
sauvegarde d'objets au format eden.

Voici ce que j'ai fais :

1) dans mon vo j'ai rajouté une méthode toSource custom :

override public function toSource( indent:int = 0 ):String
{
return "new " + getClassPath(this, true) + "(" + dump({id:id,
title:title, text:text}) + ")" ;
}

2) Dans le model qui gére ces VO j'ai ajouté une méthode
toEdenToString :

public function toEdenToString():String
{
return "resultats=" + new
EdenSerializer().serialize( this.toArray() );
}

3) J'ai crée une classe que j'ai appelé saveResultatProxy (pas sur que
ce soit vraiment un proxy) qui contient juste un urlloader qui appelle
un script php pour sauvegarder le eden dans le fichier text :

package net
{
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;

public class SaveResultatsProxy extends EventDispatcher
{
private var _urlLoader:URLLoader;
private var _scriptURL:String;

public function SaveResultatsProxy()
{
}

public function init( value:String ):void
{
_scriptURL = value;
}

public function saveToFile( value:String ):void
{
if( _scriptURL == null )
{
throw new Error( "L'URL du script n'est pas défini" );
}

var urlVars:URLVariables = new URLVariables();
urlVars.data = value;

var urlReq:URLRequest = new URLRequest( _scriptURL );
urlReq.data = urlVars;

_urlLoader = new URLLoader();
_urlLoader.addEventListener(Event.COMPLETE, complete);
_urlLoader.load( urlReq );
}

private function complete(e:Event):void
{
trace(e);
}
}
}



Et donc je me demande si il n'y avait pas plus simple comme process ou
si tu n'avais pas prévu des classes pour gérer ce genre de flux ?

Merci à toi.
a+ Fred

ekameleon

unread,
Dec 14, 2010, 11:14:11 AM12/14/10
to veg...@googlegroups.com
Hello :)

On peut surement prévoir un truc tout fait mais vu le peu de code qu'il faut pour sauver des données avec URLLoader ou FileReference (local) pas besoin de se prendre trop la tête à mon avis :) Sachant que tu peux même envoyer directement le fichier au format txt en le générant avec un ByteArray et ta chaine String dedans :)

A mon avis c'est pas forcément judicieux de mettre ton formatage dans une méthode toEdenString dans ton modèle, encore une fois un modèle n'est pas dans la logique de transformer des choses :) La méthode toSource est faite pour faire du dump sur les objets non primitifs dans eden et c'est un standard en JS d'utiliser cette méthode pour cela donc ok dans le ValueObject. Par contre pour le reste perso si j'étais toi je créerai une fonction constante dans un package (hors de la classe), style :

function serialize( o:Object , varName:String = null ):String
{
     var source:String = "" ;
     if ( varName != null && varName.length > 0 )
     {
           source += varName + "=" ;
     }
     source += dump( o ) ;
     return source ;
}

PS : j'ai pas testé le code au dessus donc méfiance peut y avoir des erreurs ;)

Ou je mettrais en place un formatter en utilisant l'interface Formattable pour créer un formatter singleton dans ton projet :)

EKA+ :)
Reply all
Reply to author
Forward
0 new messages