[rygel] core: Complete API of media-db
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [rygel] core: Complete API of media-db
- Date: Mon, 21 Sep 2009 11:54:18 +0000 (UTC)
commit bef38329e7c65e73483ec630100fac970249f102
Author: Jens Georg <mail jensge org>
Date: Thu Sep 17 09:34:13 2009 +0200
core: Complete API of media-db
src/rygel/rygel-media-db.vala | 49 +++++++++++++++++++++++++++++++++-------
1 files changed, 40 insertions(+), 9 deletions(-)
---
diff --git a/src/rygel/rygel-media-db.vala b/src/rygel/rygel-media-db.vala
index 4778848..287116e 100644
--- a/src/rygel/rygel-media-db.vala
+++ b/src/rygel/rygel-media-db.vala
@@ -27,7 +27,8 @@ using Sqlite;
public errordomain Rygel.MediaDBError {
SQLITE_ERROR,
- GENERAL_ERROR
+ GENERAL_ERROR,
+ INVALID_TYPE
}
public enum Rygel.MediaDBObjectType {
@@ -347,7 +348,7 @@ public class Rygel.MediaDB : Object {
public signal void object_removed (string object_id);
public signal void object_updated (string object_id);
- public signal void item_deleted (string item_id);
+ public signal void item_removed (string item_id);
public signal void item_added (string item_id);
public signal void item_updated (string item_id);
@@ -355,7 +356,7 @@ public class Rygel.MediaDB : Object {
public signal void container_removed (string container_id);
public signal void container_updated (string container_id);
- public void delete_by_id (string id) throws MediaDBError {
+ public void remove_by_id (string id) throws MediaDBError {
Statement statement;
var rc = db.prepare_v2 ("DELETE FROM Object WHERE upnp_id = ?",
@@ -368,7 +369,7 @@ public class Rygel.MediaDB : Object {
}
rc = statement.step ();
if (rc == Sqlite.DONE || rc == Sqlite.OK) {
- item_deleted (id);
+ object_removed (id);
Idle.add (this.sweeper);
}
} else {
@@ -380,8 +381,14 @@ public class Rygel.MediaDB : Object {
}
- public void delete_object (MediaObject obj) throws MediaDBError {
- this.delete_by_id (obj.id);
+ public void remove_object (MediaObject obj) throws MediaDBError {
+ this.remove_by_id (obj.id);
+ if (obj is MediaItem)
+ item_removed (obj.id);
+ else if (obj is MediaContainer)
+ container_removed (obj.id);
+ else
+ throw new MediaDBError.INVALID_TYPE ("Invalid object type");
}
public void save_object (MediaObject obj) throws Error {
@@ -413,6 +420,7 @@ public class Rygel.MediaDB : Object {
save_uris (item);
rc = db.exec ("COMMIT;");
if (rc == Sqlite.OK) {
+ object_added (item.id);
item_added (item.id);
}
} catch (Error error) {
@@ -427,7 +435,7 @@ public class Rygel.MediaDB : Object {
public void update_object (MediaObject obj) {
var rc = db.exec ("BEGIN");
try {
- delete_uris (obj);
+ remove_uris (obj);
if (obj is MediaItem) {
save_metadata ((MediaItem)obj, UPDATE_META_DATA_STRING);
}
@@ -435,7 +443,11 @@ public class Rygel.MediaDB : Object {
save_uris (obj);
rc = db.exec ("COMMIT");
if (rc == Sqlite.OK) {
- item_updated (obj.id);
+ object_updated (obj.id);
+ if (obj is MediaItem)
+ item_updated (obj.id);
+ else if (obj is MediaContainer)
+ container_updated (obj.id);
}
} catch (Error error) {
warning ("Failed to add item with id %s: %s",
@@ -466,7 +478,7 @@ public class Rygel.MediaDB : Object {
}
}
- private void delete_uris (MediaObject obj) throws Error {
+ private void remove_uris (MediaObject obj) throws Error {
Statement statement;
var rc = db.prepare_v2 (DELETE_URI_STRING,
-1,
@@ -741,6 +753,25 @@ public class Rygel.MediaDB : Object {
return obj;
}
+ public MediaItem? get_item (string item_id) throws MediaDBError {
+ var obj = get_object (item_id);
+ if (obj != null && !(obj is MediaItem))
+ throw new MediaDBError.INVALID_TYPE("Object with id %s is not a" +
+ "MediaItem",
+ item_id);
+ return (MediaItem)obj;
+ }
+
+ public MediaContainer? get_container (string container_id) throws MediaDBError {
+ var obj = get_object (container_id);
+ if (obj != null && !(obj is MediaContainer))
+ throw new MediaDBError.INVALID_TYPE("Object with id %s is not a" +
+ "MediaContainer",
+ container_id);
+ return (MediaContainer)obj;
+ }
+
+
private void fill_item (Statement statement, MediaItem item) {
item.author = statement.column_text (7);
item.album = statement.column_text (8);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]