[rygel] server: Move date and creator to MediaObject



commit c86ce4031c583bfb6180d89a870e15e283781380
Author: Jens Georg <mail jensge org>
Date:   Sat Jun 21 22:45:19 2014 +0200

    server: Move date and creator to MediaObject
    
    Split out of the patch from 720218
    
    Signed-off-by: Jens Georg <mail jensge org>

 src/librygel-server/rygel-media-item.vala   |   63 ---------------------------
 src/librygel-server/rygel-media-object.vala |   49 +++++++++++++++++++++
 2 files changed, 49 insertions(+), 63 deletions(-)
---
diff --git a/src/librygel-server/rygel-media-item.vala b/src/librygel-server/rygel-media-item.vala
index f175c79..54cf6eb 100644
--- a/src/librygel-server/rygel-media-item.vala
+++ b/src/librygel-server/rygel-media-item.vala
@@ -35,10 +35,6 @@ private errordomain Rygel.MediaItemError {
  * These objects correspond to items in the UPnP ContentDirectory's DIDL-Lite XML.
  */
 public abstract class Rygel.MediaItem : MediaObject {
-    public string date { get; set; }
-
-    public string creator { get; set; }
-
     // Resource info
     public string mime_type { get; set; }
     public string dlna_profile { get; set; }
@@ -186,24 +182,6 @@ public abstract class Rygel.MediaItem : MediaObject {
         return res;
     }
 
-    internal override int compare_by_property (MediaObject media_object,
-                                               string      property) {
-        if (!(media_object is MediaItem)) {
-           return 1;
-        }
-
-        var item = media_object as MediaItem;
-
-        switch (property) {
-        case "dc:creator":
-            return this.compare_string_props (this.creator, item.creator);
-        case "dc:date":
-            return this.compare_by_date (item);
-        default:
-            return base.compare_by_property (item, property);
-        }
-    }
-
     internal override void apply_didl_lite (DIDLLiteObject didl_object) {
         base.apply_didl_lite (didl_object);
 
@@ -351,45 +329,4 @@ public abstract class Rygel.MediaItem : MediaObject {
         }
     }
 
-    private int compare_by_date (MediaItem item) {
-        if (this.date == null) {
-            return -1;
-        } else if (item.date == null) {
-            return 1;
-        } else {
-            var our_date = this.date;
-            var other_date = item.date;
-
-            if (!our_date.contains ("T")) {
-                our_date += "T00:00:00Z";
-            }
-
-            if (!other_date.contains ("T")) {
-                other_date += "T00:00:00Z";
-            }
-
-            var tv1 = TimeVal ();
-            assert (tv1.from_iso8601 (this.date));
-
-            var tv2 = TimeVal ();
-            assert (tv2.from_iso8601 (item.date));
-
-            var ret = this.compare_long (tv1.tv_sec, tv2.tv_sec);
-            if (ret == 0) {
-                ret = this.compare_long (tv1.tv_usec, tv2.tv_usec);
-            }
-
-            return ret;
-        }
-    }
-
-    private int compare_long (long a, long b) {
-        if (a < b) {
-            return -1;
-        } else if (a > b) {
-            return 1;
-        } else {
-            return 0;
-        }
-    }
 }
diff --git a/src/librygel-server/rygel-media-object.vala b/src/librygel-server/rygel-media-object.vala
index 039e547..43df421 100644
--- a/src/librygel-server/rygel-media-object.vala
+++ b/src/librygel-server/rygel-media-object.vala
@@ -42,6 +42,8 @@ public abstract class Rygel.MediaObject : GLib.Object {
     public string id { get; set construct; }
     public string ref_id { get; set; }
     public string upnp_class { get; construct set; }
+    public string date { get; set; }
+    public string creator { get; set; }
     public uint64 modified { get; set; }
     public uint object_update_id { get; set; }
 
@@ -270,6 +272,11 @@ public abstract class Rygel.MediaObject : GLib.Object {
         case "upnp:class":
             return this.compare_string_props (this.upnp_class,
                                               media_object.upnp_class);
+        case "dc:creator":
+            return this.compare_string_props (this.creator,
+                                              media_object.creator);
+        case "dc:date":
+            return this.compare_by_date (media_object);
         default:
             return 0;
         }
@@ -325,4 +332,46 @@ public abstract class Rygel.MediaObject : GLib.Object {
             return true;
         }
     }
+
+    private int compare_by_date (MediaObject object) {
+        if (this.date == null) {
+            return -1;
+        } else if (object.date == null) {
+            return 1;
+        } else {
+            var our_date = this.date;
+            var other_date = object.date;
+
+            if (!our_date.contains ("T")) {
+                our_date += "T00:00:00Z";
+            }
+
+            if (!other_date.contains ("T")) {
+                other_date += "T00:00:00Z";
+            }
+
+            var tv1 = TimeVal ();
+            assert (tv1.from_iso8601 (this.date));
+
+            var tv2 = TimeVal ();
+            assert (tv2.from_iso8601 (object.date));
+
+            var ret = this.compare_long (tv1.tv_sec, tv2.tv_sec);
+            if (ret == 0) {
+                ret = this.compare_long (tv1.tv_usec, tv2.tv_usec);
+            }
+
+            return ret;
+        }
+    }
+
+    private int compare_long (long a, long b) {
+        if (a < b) {
+            return -1;
+        } else if (a > b) {
+            return 1;
+        } else {
+            return 0;
+        }
+    }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]