src/js/serializers/PlatformSerializer.js
branchnew-model
changeset 856 41c574c807d1
child 858 ad1ffe0c0955
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/js/serializers/PlatformSerializer.js	Wed Apr 11 16:39:03 2012 +0200
@@ -0,0 +1,62 @@
+if (typeof IriSP.serializers === "undefined") {
+    IriSP.serializers = {}
+}
+
+IriSP.serializers.platform = {
+    deSerialize : function(_data, _container) {
+        
+        var _types = [
+            {
+                serialized_name : "medias",
+                model_name : "media",
+                deserializer : function(_data) {
+                    var _res = new IriSP.Model.Media(_data.id, _data);
+                    _res.url = _data.href;
+                    _res.title = _data.meta["dc:title"];
+                    _res.description = _data.meta["dc:description"];
+                    _res.setDuration(_data.meta["dc:duration"]);
+                    return _res;        
+                }
+            },
+            {
+                serialized_name : "annotation-types",
+                model_name : "annotationType",
+                deserializer : function(_data) {
+                    var _res = new IriSP.Model.AnnotationType(_data.id, _data);
+                    _res.title = _data["dc:title"];
+                    _res.description = _data["dc:description"];
+                    return _res;        
+                }
+            },
+            {
+                serialized_name : "annotations",
+                model_name : "annotation",
+                deserializer : function(_data) {
+                    var _res = new IriSP.Model.Annotation(_data.id, _data);
+                    _res.title = _data.content.title;
+                    _res.description = _data.content.description;
+                    _res.setMedia(_data.media, _container);
+                    _res.setAnnotationType(_data.meta["id-ref"], _container);
+                    _res.setBegin(_data.begin);
+                    _res.setEnd(_data.end);
+                    return _res;
+                }
+            }
+        ];
+        
+        IriSP._(_types).each(function(_type) {
+            if (typeof _data[_type.serialized_name] !== "undefined") {
+                var _list = new IriSP.Model.List();
+                IriSP._(_data[_type.serialized_name]).each(function(_el) {
+                    _list.addElement(_type.deserializer(_el));
+                });
+                _container.addList(_type.model_name, _list);
+            }
+        });
+        
+        if (typeof _data.meta !== "undefined" && typeof _data.meta.main_media !== "undefined" && typeof _data.meta.main_media["id-ref"] !== "undefined") {
+            _container.setCurrentMediaById(_data.meta.main_media["id-ref"]);
+        }
+        _container.setDefaultCurrentMedia();
+    }
+}
\ No newline at end of file