summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.co.uk>2014-01-27 18:34:00 -0500
committerXavier Claessens <xavier.claessens@collabora.co.uk>2014-02-06 12:57:35 -0500
commit8efa92877cd402c219eda05fb7250623c78bc449 (patch)
tree902f2332230eab7f70b5824d8350e600147d8985
parent5325c8fedfeaa34de7b9f33f697c3eaf7ac01a94 (diff)
downloadtracker-8efa92877cd402c219eda05fb7250623c78bc449.tar.gz
TrackerDecorator: Avoid code duplication
query_append_rdf_type_filter() was copy/pasted in 2 modules, better share one internal function. https://bugzilla.gnome.org/show_bug.cgi?id=719802
-rw-r--r--src/libtracker-miner/Makefile.am1
-rw-r--r--src/libtracker-miner/tracker-decorator-fs.c29
-rw-r--r--src/libtracker-miner/tracker-decorator-internal.h32
-rw-r--r--src/libtracker-miner/tracker-decorator.c9
4 files changed, 40 insertions, 31 deletions
diff --git a/src/libtracker-miner/Makefile.am b/src/libtracker-miner/Makefile.am
index 500140b7a..7a5b45785 100644
--- a/src/libtracker-miner/Makefile.am
+++ b/src/libtracker-miner/Makefile.am
@@ -57,6 +57,7 @@ miner_sources = \
$(libtracker_miner_monitor_headers) \
tracker-decorator.c \
tracker-decorator.h \
+ tracker-decorator-internal.h \
tracker-decorator-fs.c \
tracker-decorator-fs.h \
tracker-miner-dbus.h \
diff --git a/src/libtracker-miner/tracker-decorator-fs.c b/src/libtracker-miner/tracker-decorator-fs.c
index ac8265dd9..8812aaab5 100644
--- a/src/libtracker-miner/tracker-decorator-fs.c
+++ b/src/libtracker-miner/tracker-decorator-fs.c
@@ -24,6 +24,7 @@
#include <libtracker-miner/tracker-storage.h>
#include "tracker-decorator-fs.h"
+#include "tracker-decorator-internal.h"
#define TRACKER_DECORATOR_FS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_DECORATOR_FS, TrackerDecoratorFSPrivate))
@@ -128,32 +129,6 @@ remove_files_cb (GObject *object,
}
static void
-query_append_rdf_type_filter (GString *query,
- TrackerDecorator *decorator)
-{
- const gchar **class_names;
- gint i = 0;
-
- class_names = tracker_decorator_get_class_names (decorator);
-
- if (!class_names || !*class_names)
- return;
-
- g_string_append (query, "&& (");
-
- while (class_names[i]) {
- if (i != 0)
- g_string_append (query, "||");
-
- g_string_append_printf (query, "EXISTS { ?urn a %s }",
- class_names[i]);
- i++;
- }
-
- g_string_append (query, ") ");
-}
-
-static void
check_files (TrackerDecorator *decorator,
const gchar *mount_point_urn,
gboolean available,
@@ -177,7 +152,7 @@ check_files (TrackerDecorator *decorator,
"FILTER (! EXISTS { ?urn nie:dataSource <%s> } ",
data_source);
- query_append_rdf_type_filter (query, decorator);
+ _tracker_decorator_query_append_rdf_type_filter (decorator, query);
if (available)
g_string_append (query, "&& BOUND(tracker:available(?urn))");
diff --git a/src/libtracker-miner/tracker-decorator-internal.h b/src/libtracker-miner/tracker-decorator-internal.h
new file mode 100644
index 000000000..e3fd2ef9c
--- /dev/null
+++ b/src/libtracker-miner/tracker-decorator-internal.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2014 Carlos Garnacho <carlosg@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __LIBTRACKER_MINER_DECORATOR_INTERNAL_H__
+#define __LIBTRACKER_MINER_DECORATOR_INTERNAL_H__
+
+#include "tracker-decorator.h"
+
+G_BEGIN_DECLS
+
+void _tracker_decorator_query_append_rdf_type_filter (TrackerDecorator *decorator,
+ GString *query);
+
+G_END_DECLS
+
+#endif /* __LIBTRACKER_MINER_DECORATOR_INTERNAL_H__ */
diff --git a/src/libtracker-miner/tracker-decorator.c b/src/libtracker-miner/tracker-decorator.c
index 9a8e7b622..b45eeb816 100644
--- a/src/libtracker-miner/tracker-decorator.c
+++ b/src/libtracker-miner/tracker-decorator.c
@@ -20,6 +20,7 @@
#include "config.h"
#include "tracker-decorator.h"
+#include "tracker-decorator-internal.h"
#define QUERY_BATCH_SIZE 100
#define DEFAULT_BATCH_SIZE 100
@@ -736,9 +737,9 @@ tracker_decorator_finalize (GObject *object)
G_OBJECT_CLASS (tracker_decorator_parent_class)->finalize (object);
}
-static void
-query_append_rdf_type_filter (GString *query,
- TrackerDecorator *decorator)
+void
+_tracker_decorator_query_append_rdf_type_filter (TrackerDecorator *decorator,
+ GString *query)
{
const gchar **class_names;
gint i = 0;
@@ -836,7 +837,7 @@ tracker_decorator_started (TrackerMiner *miner)
"FILTER (! EXISTS { ?urn nie:dataSource <%s> } ",
data_source);
- query_append_rdf_type_filter (query, decorator);
+ _tracker_decorator_query_append_rdf_type_filter (decorator, query);
g_string_append (query, "&& BOUND(tracker:available(?urn)))}");
sparql_conn = tracker_miner_get_connection (miner);