diff options
author | Jens Georg <mail@jensge.org> | 2012-08-18 00:38:29 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2012-08-18 12:51:27 +0200 |
commit | 2cfaacf57bf3c3af79719a2d2ec7c2a766fe3a82 (patch) | |
tree | 0c2955db431f162541b1935875d0cf32ba8579b0 | |
parent | 8977dbabb5e78e97aacf39f6590ce72fc339844b (diff) | |
download | rygel-2cfaacf57bf3c3af79719a2d2ec7c2a766fe3a82.tar.gz |
all: Simplify sort criteria default fallback
17 files changed, 43 insertions, 46 deletions
diff --git a/src/librygel-server/rygel-browse.vala b/src/librygel-server/rygel-browse.vala index b9319d41..a3cadfaa 100644 --- a/src/librygel-server/rygel-browse.vala +++ b/src/librygel-server/rygel-browse.vala @@ -111,9 +111,11 @@ internal class Rygel.Browse: Rygel.MediaQueryAction { this.object_id, this.index); + var sort_criteria = this.sort_criteria ?? container.sort_criteria; + var children = yield container.get_children (this.index, this.requested_count, - this.sort_criteria, + sort_criteria, this.cancellable); debug ("Fetched %u children of container '%s' from index %u.", diff --git a/src/librygel-server/rygel-media-container.vala b/src/librygel-server/rygel-media-container.vala index 5780c311..535f6288 100644 --- a/src/librygel-server/rygel-media-container.vala +++ b/src/librygel-server/rygel-media-container.vala @@ -121,7 +121,7 @@ public abstract class Rygel.MediaContainer : MediaObject { */ public async abstract MediaObjects? get_children (uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws Error; diff --git a/src/librygel-server/rygel-search.vala b/src/librygel-server/rygel-search.vala index d35be7ec..4ae99b5b 100644 --- a/src/librygel-server/rygel-search.vala +++ b/src/librygel-server/rygel-search.vala @@ -69,20 +69,22 @@ internal class Rygel.Search: Rygel.MediaQueryAction { throw parser.err; } + var sort_criteria = this.sort_criteria ?? container.sort_criteria; + if (this.hacks != null) { return yield this.hacks.search (container, parser.expression, this.index, this.requested_count, out this.total_matches, - this.sort_criteria, + sort_criteria, this.cancellable); } else { return yield container.search (parser.expression, this.index, this.requested_count, out this.total_matches, - this.sort_criteria, + sort_criteria, this.cancellable); } } diff --git a/src/librygel-server/rygel-searchable-container.vala b/src/librygel-server/rygel-searchable-container.vala index 8dd5e5da..469dad4c 100644 --- a/src/librygel-server/rygel-searchable-container.vala +++ b/src/librygel-server/rygel-searchable-container.vala @@ -45,7 +45,7 @@ public interface Rygel.SearchableContainer : MediaContainer { uint offset, uint max_count, out uint total_matches, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws Error; diff --git a/src/librygel-server/rygel-simple-container.vala b/src/librygel-server/rygel-simple-container.vala index dcb006bc..bb7d18b7 100644 --- a/src/librygel-server/rygel-simple-container.vala +++ b/src/librygel-server/rygel-simple-container.vala @@ -124,7 +124,7 @@ public class Rygel.SimpleContainer : Rygel.MediaContainer, public override async MediaObjects? get_children ( uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws Error { uint stop = offset + max_count; @@ -132,7 +132,7 @@ public class Rygel.SimpleContainer : Rygel.MediaContainer, var sorted_children = this.children.slice (0, this.child_count) as MediaObjects; - sorted_children.sort_by_criteria (sort_criteria ?? this.sort_criteria); + sorted_children.sort_by_criteria (sort_criteria); return sorted_children.slice ((int) offset, (int) stop) as MediaObjects; @@ -195,14 +195,14 @@ public class Rygel.SimpleContainer : Rygel.MediaContainer, uint offset, uint max_count, out uint total_matches, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws Error { return yield this.simple_search (expression, offset, max_count, out total_matches, - sort_criteria ?? this.sort_criteria, + sort_criteria, cancellable); } diff --git a/src/plugins/external/rygel-external-container.vala b/src/plugins/external/rygel-external-container.vala index 40970369..128068fa 100644 --- a/src/plugins/external/rygel-external-container.vala +++ b/src/plugins/external/rygel-external-container.vala @@ -77,7 +77,7 @@ public class Rygel.External.Container : Rygel.MediaContainer, public override async MediaObjects? get_children ( uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { string[] filter = {}; @@ -98,7 +98,7 @@ public class Rygel.External.Container : Rygel.MediaContainer, (offset, max_count, filter); var result = yield this.create_media_objects (children_props, this); - result.sort_by_criteria (sort_criteria ?? this.sort_criteria); + result.sort_by_criteria (sort_criteria); return result; } @@ -107,17 +107,16 @@ public class Rygel.External.Container : Rygel.MediaContainer, uint offset, uint max_count, out uint total_matches, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { - var real_sort_criteria = sort_criteria ?? this.sort_criteria; if (expression == null || !this.searchable) { // Either its wildcard or backend doesn't implement search :( return yield this.simple_search (expression, offset, max_count, out total_matches, - real_sort_criteria, + sort_criteria, cancellable); } @@ -145,7 +144,7 @@ public class Rygel.External.Container : Rygel.MediaContainer, var objects = yield this.create_media_objects (result); // FIXME: Delegate sorting to remote peer - objects.sort_by_criteria (real_sort_criteria); + objects.sort_by_criteria (sort_criteria); return objects; } diff --git a/src/plugins/external/rygel-external-dummy-container.vala b/src/plugins/external/rygel-external-dummy-container.vala index ae0d0fd5..b1ba3793 100644 --- a/src/plugins/external/rygel-external-dummy-container.vala +++ b/src/plugins/external/rygel-external-dummy-container.vala @@ -41,7 +41,7 @@ internal class Rygel.External.DummyContainer : MediaContainer { public override async MediaObjects? get_children ( uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws Error { return new MediaObjects (); diff --git a/src/plugins/media-export/rygel-media-export-db-container.vala b/src/plugins/media-export/rygel-media-export-db-container.vala index 5db2a613..61141a20 100644 --- a/src/plugins/media-export/rygel-media-export-db-container.vala +++ b/src/plugins/media-export/rygel-media-export-db-container.vala @@ -50,11 +50,11 @@ public class Rygel.MediaExport.DBContainer : MediaContainer, public override async MediaObjects? get_children ( uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { return this.media_db.get_children (this, - sort_criteria ?? this.sort_criteria, + sort_criteria, offset, max_count); } @@ -63,16 +63,15 @@ public class Rygel.MediaExport.DBContainer : MediaContainer, uint offset, uint max_count, out uint total_matches, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { MediaObjects children = null; - var real_sort_criteria = sort_criteria ?? this.sort_criteria; try { children = this.media_db.get_objects_by_search_expression (expression, - real_sort_criteria, + sort_criteria, this.id, offset, max_count, @@ -83,7 +82,7 @@ public class Rygel.MediaExport.DBContainer : MediaContainer, offset, max_count, out total_matches, - real_sort_criteria, + sort_criteria, cancellable); } else { throw error; diff --git a/src/plugins/media-export/rygel-media-export-leaf-query-container.vala b/src/plugins/media-export/rygel-media-export-leaf-query-container.vala index cb88e7b9..bd82a882 100644 --- a/src/plugins/media-export/rygel-media-export-leaf-query-container.vala +++ b/src/plugins/media-export/rygel-media-export-leaf-query-container.vala @@ -29,7 +29,7 @@ internal class Rygel.MediaExport.LeafQueryContainer : QueryContainer { public override async MediaObjects? get_children (uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { uint total_matches; @@ -37,7 +37,7 @@ internal class Rygel.MediaExport.LeafQueryContainer : QueryContainer { offset, max_count, out total_matches, - sort_criteria ?? this.sort_criteria, + sort_criteria, cancellable); foreach (var child in children) { child.parent = this; diff --git a/src/plugins/media-export/rygel-media-export-media-cache.vala b/src/plugins/media-export/rygel-media-export-media-cache.vala index b8265b5a..4d02c175 100644 --- a/src/plugins/media-export/rygel-media-export-media-cache.vala +++ b/src/plugins/media-export/rygel-media-export-media-cache.vala @@ -180,7 +180,7 @@ public class Rygel.MediaExport.MediaCache : Object { } public MediaObjects get_children (MediaContainer container, - string? sort_criteria, + string sort_criteria, long offset, long max_count) throws Error { @@ -206,7 +206,7 @@ public class Rygel.MediaExport.MediaCache : Object { public MediaObjects get_objects_by_search_expression (SearchExpression? expression, string? container_id, - string? sort_criteria, + string sort_criteria, uint offset, uint max_count, out uint total_matches) @@ -282,7 +282,7 @@ public class Rygel.MediaExport.MediaCache : Object { public MediaObjects get_objects_by_filter (string filter, GLib.ValueArray args, string? container_id, - string? sort_criteria, + string sort_criteria, long offset, long max_count) throws Error { @@ -867,11 +867,7 @@ public class Rygel.MediaExport.MediaCache : Object { return this.db.query_value (this.sql.make (id), values); } - private string translate_sort_criteria (string? sort_criteria) { - if (sort_criteria == null) { - return "ORDER BY o.title COLLATE CASEFOLD ASC "; - } - + private string translate_sort_criteria (string sort_criteria) { string? collate; var builder = new StringBuilder("ORDER BY "); var fields = sort_criteria.split (","); diff --git a/src/plugins/media-export/rygel-media-export-node-query-container.vala b/src/plugins/media-export/rygel-media-export-node-query-container.vala index c181fdb2..1d400846 100644 --- a/src/plugins/media-export/rygel-media-export-node-query-container.vala +++ b/src/plugins/media-export/rygel-media-export-node-query-container.vala @@ -46,7 +46,7 @@ internal class Rygel.MediaExport.NodeQueryContainer : QueryContainer { public override async MediaObjects? get_children (uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { var children = new MediaObjects (); diff --git a/src/plugins/media-export/rygel-media-export-null-container.vala b/src/plugins/media-export/rygel-media-export-null-container.vala index 60149e3b..6309fbc1 100644 --- a/src/plugins/media-export/rygel-media-export-null-container.vala +++ b/src/plugins/media-export/rygel-media-export-null-container.vala @@ -33,7 +33,7 @@ internal class Rygel.NullContainer : MediaContainer { public override async MediaObjects? get_children ( uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws Error { return new MediaObjects (); diff --git a/src/plugins/media-export/rygel-media-export-query-container.vala b/src/plugins/media-export/rygel-media-export-query-container.vala index abe635e8..99f77cdd 100644 --- a/src/plugins/media-export/rygel-media-export-query-container.vala +++ b/src/plugins/media-export/rygel-media-export-query-container.vala @@ -49,7 +49,7 @@ internal abstract class Rygel.MediaExport.QueryContainer : DBContainer { uint offset, uint max_count, out uint total_matches, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { MediaObjects children = null; @@ -70,7 +70,7 @@ internal abstract class Rygel.MediaExport.QueryContainer : DBContainer { children = this.media_db.get_objects_by_search_expression (combined_expression, null, - sort_criteria ?? this.sort_criteria, + sort_criteria, offset, max_count, out total_matches); diff --git a/src/plugins/media-export/rygel-media-export-root-container.vala b/src/plugins/media-export/rygel-media-export-root-container.vala index 04a286cb..235d3e73 100644 --- a/src/plugins/media-export/rygel-media-export-root-container.vala +++ b/src/plugins/media-export/rygel-media-export-root-container.vala @@ -139,7 +139,7 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer { uint offset, uint max_count, out uint total_matches, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { if (expression == null) { @@ -167,10 +167,9 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer { } if (query_container != null) { - var real_sort_criteria = sort_criteria ?? this.sort_criteria; list = yield query_container.get_children (offset, max_count, - real_sort_criteria, + sort_criteria, cancellable); total_matches = query_container.child_count; diff --git a/src/plugins/tracker/rygel-tracker-category-all-container.vala b/src/plugins/tracker/rygel-tracker-category-all-container.vala index d3d0e366..a1a11850 100644 --- a/src/plugins/tracker/rygel-tracker-category-all-container.vala +++ b/src/plugins/tracker/rygel-tracker-category-all-container.vala @@ -103,14 +103,14 @@ public class Rygel.Tracker.CategoryAllContainer : SearchContainer, uint offset, uint max_count, out uint total_matches, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws Error { return yield this.simple_search (expression, offset, max_count, out total_matches, - sort_criteria ?? this.sort_criteria, + sort_criteria, cancellable); } diff --git a/src/plugins/tracker/rygel-tracker-search-container.vala b/src/plugins/tracker/rygel-tracker-search-container.vala index ea3e3c07..6d2048c9 100644 --- a/src/plugins/tracker/rygel-tracker-search-container.vala +++ b/src/plugins/tracker/rygel-tracker-search-container.vala @@ -107,7 +107,7 @@ public class Rygel.Tracker.SearchContainer : SimpleContainer { public override async MediaObjects? get_children (uint offset, uint max_count, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws GLib.Error { var expression = new RelationalExpression (); @@ -118,7 +118,7 @@ public class Rygel.Tracker.SearchContainer : SimpleContainer { uint total_matches; return yield this.execute_query (expression, - sort_criteria ?? this.sort_criteria, + sort_criteria, offset, max_count, out total_matches, @@ -126,7 +126,7 @@ public class Rygel.Tracker.SearchContainer : SimpleContainer { } public async MediaObjects? execute_query (SearchExpression? expression, - string? sort_criteria, + string sort_criteria, uint offset, uint max_count, out uint total_matches, @@ -175,7 +175,7 @@ public class Rygel.Tracker.SearchContainer : SimpleContainer { uint total_matches; var results = yield this.execute_query (expression, - null, + "", 0, 1, out total_matches, diff --git a/tests/rygel-searchable-container-test.vala b/tests/rygel-searchable-container-test.vala index 8268edf6..f803c4c3 100644 --- a/tests/rygel-searchable-container-test.vala +++ b/tests/rygel-searchable-container-test.vala @@ -113,7 +113,7 @@ public class TestContainer : MediaContainer, Rygel.SearchableContainer { uint offset, uint max_count, out uint total_matches, - string? sort_criteria, + string sort_criteria, Cancellable? cancellable) throws Error { return yield this.simple_search (expression, |