package com.exanimo.data { import com.exanimo.utils.IEquatable; /** * * A dynamic Data Transfer Object. * * @langversion ActionScript 3 * @playerversion Flash 9.0.0 * * @author Matthew Tretter * @since 2008.01.13 * */ dynamic public class DynamicDTO implements IEquatable { /** * * */ public function DynamicDTO(obj:Object = null) { this._init(obj); } // // public methods // /** * @inheritDoc */ public function equals(obj:Object):Boolean { return this._propertiesAreEqual(this, obj) && this._propertiesAreEqual(obj, this); } // // private methods // /** * * */ private function _init(obj:Object):void { for (var prop:String in obj) { this[prop] = obj[prop]; } } /** * * */ private function _propertiesAreEqual(a:Object, b:Object):Boolean { var propertiesAreEqual:Boolean = true; for (var prop:Object in a) { if (a[prop] != b[prop]) { propertiesAreEqual = false; break; } } return propertiesAreEqual; } } }