[rygel] tracker: Item factories provide properties only



commit 875c0bfa0d9ac7b8392c1ce3452a04ec1bfe0b91
Author: Sunil Mohan Adapa <sunil medhas org>
Date:   Tue Dec 7 23:04:01 2010 +0530

    tracker: Item factories provide properties only
    
    Instead of providing key chains directly, item factories now only provide
    property strings. These property strings are mapped to key chains during query
    construction using the global property to key chain map.

 .../tracker/rygel-tracker-item-factory.vala        |   23 ++++++--------
 .../tracker/rygel-tracker-music-item-factory.vala  |   30 ++++++++-----------
 .../rygel-tracker-picture-item-factory.vala        |   13 ++++----
 .../tracker/rygel-tracker-search-container.vala    |   11 ++-----
 .../tracker/rygel-tracker-video-item-factory.vala  |   15 ++++-----
 5 files changed, 39 insertions(+), 53 deletions(-)
---
diff --git a/src/plugins/tracker/rygel-tracker-item-factory.vala b/src/plugins/tracker/rygel-tracker-item-factory.vala
index 75f26ae..d1f03e9 100644
--- a/src/plugins/tracker/rygel-tracker-item-factory.vala
+++ b/src/plugins/tracker/rygel-tracker-item-factory.vala
@@ -45,7 +45,7 @@ public abstract class Rygel.Tracker.ItemFactory {
     public string upnp_class;
     public string upload_dir;
 
-    public ArrayList<ArrayList<string>> key_chains;
+    public ArrayList<string> properties;
 
     public ItemFactory (string  category,
                         string  upnp_class,
@@ -54,19 +54,16 @@ public abstract class Rygel.Tracker.ItemFactory {
         this.upnp_class = upnp_class;
         this.upload_dir = upload_dir;
 
-        this.key_chains = new ArrayList<ArrayList<string>> ();
+        this.properties = new ArrayList<string> ();
 
-        for (var i = 0; i < Metadata.LAST_KEY; i++) {
-            this.key_chains.add (new ArrayList<string> ());
-        }
-
-        this.key_chains[Metadata.URL].add ("nie:url");
-        this.key_chains[Metadata.FILE_NAME].add ("nfo:fileName");
-        this.key_chains[Metadata.TITLE].add ("nie:title");
-        this.key_chains[Metadata.DLNA_PROFILE].add ("nmm:dlnaProfile");
-        this.key_chains[Metadata.MIME].add ("nie:mimeType");
-        this.key_chains[Metadata.SIZE].add ("nfo:fileSize");
-        this.key_chains[Metadata.DATE].add ("nie:contentCreated");
+        // These must be the same order as enum Metadata
+        this.properties.add ("res");
+        this.properties.add ("fileName");
+        this.properties.add ("dc:title");
+        this.properties.add ("dlnaProfile");
+        this.properties.add ("mimeType");
+        this.properties.add ("res size");
+        this.properties.add ("date");
     }
 
     public abstract MediaItem create (string          id,
diff --git a/src/plugins/tracker/rygel-tracker-music-item-factory.vala b/src/plugins/tracker/rygel-tracker-music-item-factory.vala
index f6c4805..4d74efb 100644
--- a/src/plugins/tracker/rygel-tracker-music-item-factory.vala
+++ b/src/plugins/tracker/rygel-tracker-music-item-factory.vala
@@ -1,8 +1,10 @@
 /*
  * Copyright (C) 2008 Zeeshan Ali <zeenix gmail com>.
  * Copyright (C) 2008 Nokia Corporation.
+ * Copyright (C) 2010 MediaNet Inh.
  *
- * Author: Zeeshan Ali <zeenix gmail com>
+ * Authors: Zeeshan Ali <zeenix gmail com>
+ *          Sunil Mohan Adapa <sunil medhas org>
  *
  * This file is part of Rygel.
  *
@@ -48,22 +50,16 @@ public class Rygel.Tracker.MusicItemFactory : ItemFactory {
               MusicItem.UPNP_CLASS,
               Environment.get_user_special_dir (UserDirectory.MUSIC));
 
-        for (var i = this.key_chains.size; i < MusicMetadata.LAST_KEY; i++) {
-            this.key_chains.add (new ArrayList<string> ());
-        }
-
-        this.key_chains[MusicMetadata.DURATION].add ("nfo:duration");
-        this.key_chains[MusicMetadata.AUDIO_ARTIST].add ("nmm:performer");
-        this.key_chains[MusicMetadata.AUDIO_ARTIST].add ("nmm:artistName");
-        this.key_chains[MusicMetadata.AUDIO_ALBUM].add ("nmm:musicAlbum");
-        this.key_chains[MusicMetadata.AUDIO_ALBUM].add ("nmm:albumTitle");
-        this.key_chains[MusicMetadata.AUDIO_TRACK_NUM].add ("nmm:trackNumber");
-        this.key_chains[MusicMetadata.AUDIO_GENRE].add ("nfo:genre");
-        this.key_chains[MusicMetadata.SAMPLE_RATE].add ("nfo:sampleRate");
-        this.key_chains[MusicMetadata.CHANNELS].add ("nfo:channels");
-        this.key_chains[MusicMetadata.BITS_PER_SAMPLE].add
-                                        ("nfo:bitsPerSample");
-        this.key_chains[MusicMetadata.BITRATE].add ("nfo:averageBitrate");
+        // These must be the same order as enum MusicMetadata
+        this.properties.add ("res duration");
+        this.properties.add ("upnp:album");
+        this.properties.add ("upnp:artist");
+        this.properties.add ("upnp:originalTrackNumber");
+        this.properties.add ("upnp:genre");
+        this.properties.add ("sampleRate");
+        this.properties.add ("upnp:nrAudioChannels");
+        this.properties.add ("upnp:bitsPerSample");
+        this.properties.add ("upnp:bitrate");
     }
 
     public override MediaItem create (string          id,
diff --git a/src/plugins/tracker/rygel-tracker-picture-item-factory.vala b/src/plugins/tracker/rygel-tracker-picture-item-factory.vala
index c73a4e6..54737f4 100644
--- a/src/plugins/tracker/rygel-tracker-picture-item-factory.vala
+++ b/src/plugins/tracker/rygel-tracker-picture-item-factory.vala
@@ -1,8 +1,10 @@
 /*
  * Copyright (C) 2008 Zeeshan Ali <zeenix gmail com>.
  * Copyright (C) 2008 Nokia Corporation.
+ * Copyright (C) 2010 MediaNet Inh.
  *
- * Author: Zeeshan Ali <zeenix gmail com>
+ * Authors: Zeeshan Ali <zeenix gmail com>
+ *          Sunil Mohan Adapa <sunil medhas org>
  *
  * This file is part of Rygel.
  *
@@ -41,12 +43,9 @@ public class Rygel.Tracker.PictureItemFactory : ItemFactory {
               PhotoItem.UPNP_CLASS,
               Environment.get_user_special_dir (UserDirectory.PICTURES));
 
-        for (var i = this.key_chains.size; i < PictureMetadata.LAST_KEY; i++) {
-            this.key_chains.add (new ArrayList<string> ());
-        }
-
-        this.key_chains[PictureMetadata.WIDTH].add ("nfo:width");
-        this.key_chains[PictureMetadata.HEIGHT].add ("nfo:height");
+        // These must be in the same order as enum PictureMetadata
+        this.properties.add ("height");
+        this.properties.add ("width");
     }
 
     public override MediaItem create (string          id,
diff --git a/src/plugins/tracker/rygel-tracker-search-container.vala b/src/plugins/tracker/rygel-tracker-search-container.vala
index 335bbaf..7fd6d46 100644
--- a/src/plugins/tracker/rygel-tracker-search-container.vala
+++ b/src/plugins/tracker/rygel-tracker-search-container.vala
@@ -67,14 +67,9 @@ public class Rygel.Tracker.SearchContainer : Rygel.MediaContainer {
                                          "a",
                                          item_factory.category));
 
-        foreach (var chain in this.item_factory.key_chains) {
-            var variable = SelectionQuery.ITEM_VARIABLE;
-
-            foreach (var key in chain) {
-                variable = key + "(" + variable + ")";
-            }
-
-            variables.add (variable);
+        var key_chain_map = KeyChainMap.get_key_chain_map ();
+        foreach (var property in this.item_factory.properties) {
+            variables.add (key_chain_map.map_property (property));
         }
 
         var order_by = MODIFIED_PROPERTY +
diff --git a/src/plugins/tracker/rygel-tracker-video-item-factory.vala b/src/plugins/tracker/rygel-tracker-video-item-factory.vala
index dfdfb4b..1397657 100644
--- a/src/plugins/tracker/rygel-tracker-video-item-factory.vala
+++ b/src/plugins/tracker/rygel-tracker-video-item-factory.vala
@@ -1,8 +1,10 @@
 /*
  * Copyright (C) 2008 Zeeshan Ali <zeenix gmail com>.
  * Copyright (C) 2008 Nokia Corporation.
+ * Copyright (C) 2010 MediaNet Inh.
  *
- * Author: Zeeshan Ali <zeenix gmail com>
+ * Authors: Zeeshan Ali <zeenix gmail com>
+ *          Sunil Mohan Adapa <sunil medhas org>
  *
  * This file is part of Rygel.
  *
@@ -42,13 +44,10 @@ public class Rygel.Tracker.VideoItemFactory : ItemFactory {
               VideoItem.UPNP_CLASS,
               Environment.get_user_special_dir (UserDirectory.VIDEOS));
 
-        for (var i = this.key_chains.size; i < VideoMetadata.LAST_KEY; i++) {
-            this.key_chains.add (new ArrayList<string> ());
-        }
-
-        this.key_chains[VideoMetadata.WIDTH].add ("nfo:width");
-        this.key_chains[VideoMetadata.HEIGHT].add ("nfo:height");
-        this.key_chains[VideoMetadata.DURATION].add ("nfo:duration");
+        // These must be in the same order as enum VideoMetadata
+        this.properties.add ("height");
+        this.properties.add ("width");
+        this.properties.add ("res duration");
     }
 
     public override MediaItem create (string          id,



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