}
var triplets = new QueryTriplets ();
- triplets.add (new QueryTriplet (QUERY_ID, "a", category));
+ triplets.add (new QueryTriplet (QUERY_ID, "a", "nfo:Media"));
triplets.add (new QueryTriplet (QUERY_ID, "a", type));
triplets.add (new QueryTriplet (QUERY_ID, "nmm:uPnPShared", "true"));
triplets.add (new QueryTriplet (QUERY_ID, "tracker:available", "true"));
uint offset,
uint max_count,
out uint total_matches,
- Cancellable? cancellable)
+ Cancellable? cancellable,
+ bool generic_type = false)
throws GLib.Error {
var results = new MediaObjects ();
var query = this.create_query (expression as RelationalExpression,
(int) offset,
- (int) max_count);
+ (int) max_count,
+ generic_type);
+
if (query != null) {
yield query.execute (this.resources);
0,
1,
out total_matches,
- cancellable);
+ cancellable,
+ true);
if (results.size > 0) {
return results[0];
} else {
private SelectionQuery? create_query (RelationalExpression? expression,
int offset,
- int max_count) {
+ int max_count,
+ bool generic_type) {
if (expression.operand1 == "upnp:class" &&
!this.item_factory.upnp_class.has_prefix (expression.operand2)) {
return null;
}
}
+ // Drop to generic RDF type for find_object
+ if (generic_type) {
+ foreach (var triplet in query.triplets) {
+ if (triplet.predicate == "a" &&
+ triplet.obj.has_prefix ("nmm:")) {
+ triplet.obj = "nfo:Media";
+ }
+ }
+ }
+
query.offset = offset;
query.max_count = max_count;