src/obsolete-files/CinecastSerializer.js
branchnew-model
changeset 904 510ebab76fa3
parent 882 61c384dda19e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/obsolete-files/CinecastSerializer.js	Fri May 18 18:23:51 2012 +0200
@@ -0,0 +1,186 @@
+/* Cinecast Cinelab Serializer */
+
+if (typeof IriSP.serializers === "undefined") {
+    IriSP.serializers = {}
+}
+
+IriSP.serializers.cinecast = {
+    types :  {
+        media : {
+            serialized_name : "medias",
+            model_name : "media",
+            deserializer : function(_data, _source) {
+                var _res = new IriSP.Model.Media(_data.id, _source);
+                _res.video = _data.url;
+                _res.title = _data.meta.title;
+                _res.description = _data.meta.synopsis;
+                _res.setDuration(_data.meta.duration);
+                return _res;        
+            },
+            serializer : function(_data, _source) {
+                return {
+                    id : _source.unNamespace(_data.id),
+                    url : _data.video,
+                    meta : {
+                        title : _data.title,
+                        synopsis : _data.description,
+                        duration : _data.duration.milliseconds
+                    }
+                }
+            }
+        },
+        tag : {
+            serialized_name : "tags",
+            model_name : "tag",
+            deserializer : function(_data, _source) {
+                var _res = new IriSP.Model.Tag(_data.id, _source);
+                _res.title = _data.meta.description;
+                return _res;        
+            },
+            serializer : function(_data, _source) {
+                return {
+                    id : _source.unNamespace(_data.id),
+                    meta : {
+                        description : _data.title
+                    }
+                }
+            }
+        },
+        annotationType : {
+            serialized_name : "annotation_types",
+            deserializer : function(_data, _source) {
+                var _res = new IriSP.Model.AnnotationType(_data.id, _source);
+                _res.title = _source.getNamespaced(_data.id).name;
+                _res.description = _data.meta.description;
+                return _res;        
+            },
+            serializer : function(_data, _source) {
+                return {
+                    id : _source.unNamespace(_data.id),
+                    meta : {
+                        description : _data.description
+                    }
+                }
+            }
+        },
+        annotation : {
+            serialized_name : "annotations",
+            deserializer : function(_data, _source) {
+                var _res = new IriSP.Model.Annotation(_data.id, _source);
+                _res.title = _data.meta.creator_name;
+                _res.description = _data.content.data;
+                _res.created = IriSP.Model.isoToDate(_data.meta.created);
+                _res.setMedia(_data.media, _source);
+                _res.setAnnotationType(_data.type);
+                _res.setTags(IriSP._(_data.tags).map(function(_t) {
+                    if (typeof _source.contents.tag === "undefined") {
+                        _source.contents.tag = new IriSP.Model.List(_source.directory);
+                    }
+                    if (_source.contents.tag.hasId(_t)) {
+                        return _t;
+                    } else {
+                        var _id = _t.toLowerCase()
+                            .replace(/#/g,'')
+                            .replace(/^(\d)/,'_$1')
+                            .replace(/[áâäàã]/g,'a')
+                            .replace(/ç/g,'c')
+                            .replace(/[éèêë]/g,'e')
+                            .replace(/[íìîï]/g,'i')
+                            .replace(/ñ/g,'n')
+                            .replace(/[óòôöõ]/g,'o')
+                            .replace(/œ/g,'oe')
+                            .replace(/[úùûü]/g,'u')
+                            .replace(/ÿ/g,'y')
+                            .replace(/[^A-Za-z0-9_]/g,''),
+                            _tag = new IriSP.Model.Tag(_id, _source);
+                        _tag.title = _t;
+                        _source.contents.tag.push(_tag);
+                        return _id;
+                    }
+                }));
+                _res.setBegin(_data.begin);
+                _res.setEnd(_data.end);
+                _res.creator = _data.meta.creator;
+                return _res;
+            },
+            serializer : function(_data, _source) {
+                return {
+                    id : _source.unNamespace(_data.id),
+                    content : {
+                        data : _data.description
+                    },
+                    begin : _data.begin.milliseconds,
+                    end : _data.begin.milliseconds,
+                    media : _source.unNamespace(_data.media.id),
+                    type : _source.unNamespace(_data.annotationType.id),
+                    meta : {
+                        created : IriSP.Model.dateToIso(_data.created),
+                        creator : _data.creator,
+                        creator_name : _data.title
+                    },
+                    tags : _data.tag.id.map(function(_id) {
+                        return _source.unNamespace(_id)
+                    })
+                }
+            }
+        }
+    },
+    serialize : function(_source) {
+        var _res = {
+                format : "http://advene.org/ns/cinelab/"
+            },
+            _this = this,
+            _nsls = _source.listNamespaces(true);
+        _res.imports = [];
+        for (var _i = 0; _i < _nsls.length; _i++) {
+           if (typeof _source.directory.namespaces[_nsls[_i]] !== "undefined") {
+               _res.imports.push({
+                   id : _nsls[_i],
+                   url : _source.directory.namespaces[_nsls[_i]]
+               })
+           } 
+        }
+        _source.forEach(function(_list, _typename) {
+            if (typeof _this.types[_typename] !== "undefined") {
+                _res[_this.types[_typename].serialized_name] = _list.map(function(_el) {
+                    return _this.types[_typename].serializer(_el, _source);
+                });
+            }
+        });
+        return _res;
+    },
+    loadData : function(_url, _callback) {
+        IriSP.jQuery.getJSON(_url, _callback)
+    },
+    deSerialize : function(_data, _source) {
+        if (typeof _data !== "object" || _data === null) {
+            return;
+        }
+        if (typeof _data.imports !== "undefined") {
+            IriSP._(_data.imports).forEach(function(_import) {
+                _source.directory.namespaces[_import.id] = _import.url;
+            })
+        }
+        IriSP._(this.types).forEach(function(_type, _typename) {
+            var _listdata = _data[_type.serialized_name];
+            if (typeof _listdata !== "undefined" && _listdata !== null) {
+                var _list = new IriSP.Model.List(_source.directory);
+                if (_listdata.hasOwnProperty("length")) {
+                    var _l = _listdata.length;
+                    for (var _i = 0; _i < _l; _i++) {
+                        _list.push(_type.deserializer(_listdata[_i], _source));
+                    }
+                } else {
+                    _list.push(_type.deserializer(_listdata, _source));
+                }
+                _source.addList(_typename, _list);
+            }
+        });
+        
+        if (typeof _data.meta !== "undefined" && typeof _data.meta.main_media !== "undefined" && typeof _data.meta.main_media["id-ref"] !== "undefined") {
+            _source.setCurrentMediaId(_data.meta.id);
+        }
+        _source.setDefaultCurrentMedia();
+    }
+}
+