Forum BigDB Example AS3 Code: Cloning for DatabaseObjects

Discussion and help relating to the PlayerIO database solution, BigDB.

Example AS3 Code: Cloning for DatabaseObjects

Postby FulaFisken » September 26th, 2011, 9:37 pm

I just implemented a recursive cloning feature into our editor today. So I thought I might share some code.

Enjoy!

Code: Select all
package generics
{
   import flash.utils.getDefinitionByName;
   import flash.utils.getQualifiedClassName;
   
   import playerio.DatabaseObject;
   
   public class UtilFunctions
   {
      public static function copyObject(source:Object, destination:Object):void
      {
         if((source) && (destination))
         {
            for (var prop:String in source)
            {
               handleData(source, destination, prop);
            }
            
         }
      }
      
      public static function copyArray(source:Object, destination:Object, prop:String):void
      {
         var array:Array = new Array();
         
         for (var i:String in source[prop])
         {
            var copy:Object = new Object();
            
            handleData(source[prop], copy, i);
            
            array.push(copy[i]);
         }
         
         destination[prop] = array;
      }
      
      private static function handleData(source:Object, destination:Object, prop:String):void
      {
         var classDefinition:Object = getDefinitionByName(getQualifiedClassName(source[prop]));
         
         if (classDefinition == (Object as Class).toString())
         {
            destination[prop] = new Object();
            
            copyObject(source[prop], destination[prop]);
         }
         else if (classDefinition == (Array as Class).toString())
         {
            copyArray(source, destination, prop);
         }
         else
         {
            destination[prop] = source[prop];
            //trace(prop, destination[prop]);
         }
      }
   }
}


Edit: Had some errors in the code :]

Edit2: Did a new update, now uses getDefinitionByName(getQualifiedClassName(source[prop]));

Edit3: Did some name refactoring.
Fula Fisken
website blog twitter
Play Game
Astroflux
User avatar
FulaFisken
Paid Member
 
Posts: 139
Joined: March 2nd, 2011, 10:15 am

Return to BigDB