[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kactivities] src/lib/stats: Dealing with url filters in the result watcher
From: Ivan Čukić <ivan.cukic () kde ! org>
Date: 2015-04-04 18:47:51
Message-ID: E1YeT6l-0002zG-Ce () scm ! kde ! org
[Download RAW message or body]
Git commit cdfe9f45ddb7ba6e47f3ee57064dfd13173bab73 by Ivan Čukić.
Committed on 04/04/2015 at 18:47.
Pushed by ivan into branch 'master'.
Dealing with url filters in the result watcher
M +1 -1 src/lib/stats/query.cpp
M +2 -2 src/lib/stats/resultset.cpp
M +19 -1 src/lib/stats/resultwatcher.cpp
M +4 -4 src/lib/stats/terms.cpp
http://commits.kde.org/kactivities/cdfe9f45ddb7ba6e47f3ee57064dfd13173bab73
diff --git a/src/lib/stats/query.cpp b/src/lib/stats/query.cpp
index 3f09d45..0a47ea6 100644
--- a/src/lib/stats/query.cpp
+++ b/src/lib/stats/query.cpp
@@ -126,7 +126,7 @@ bool Query::operator!= (const Query &right) const
IMPLEMENT_QUERY_LIST_FIELD(Types, types, QStringList(":any"))
IMPLEMENT_QUERY_LIST_FIELD(Agents, agents, QStringList(":current"))
IMPLEMENT_QUERY_LIST_FIELD(Activities, activities, QStringList(":current"))
-IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, QStringList("%"))
+IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, QStringList("*"))
#undef IMPLEMENT_QUERY_LIST_FIELD
diff --git a/src/lib/stats/resultset.cpp b/src/lib/stats/resultset.cpp
index f4d573d..2143939 100644
--- a/src/lib/stats/resultset.cpp
+++ b/src/lib/stats/resultset.cpp
@@ -197,9 +197,9 @@ public:
QString urlFilterClause(const QString &urlFilter) const
{
- if (urlFilter == "%") return "1";
+ if (urlFilter == "*") return "1";
- return "resource LIKE '" + urlFilter + "'";
+ return "resource GLOB '" + urlFilter + "'";
}
/**
diff --git a/src/lib/stats/resultwatcher.cpp b/src/lib/stats/resultwatcher.cpp
index 0fe8fc1..10c4752 100644
--- a/src/lib/stats/resultwatcher.cpp
+++ b/src/lib/stats/resultwatcher.cpp
@@ -23,6 +23,8 @@
#include <QSqlQuery>
#include <QSqlError>
#include <QCoreApplication>
+#include <QList>
+#include <QRegExp>
// Local
#include <common/database/Database.h>
@@ -60,6 +62,7 @@ namespace Stats {
class ResultWatcher::Private {
public:
mutable ActivitiesSync::ConsumerPtr activities;
+ QList<QRegExp> urlFilters;
Private(ResultWatcher *parent, Query query)
: linking(new KAMD_DBUS_CLASS_INTERFACE(Resources/Linking, ResourcesLinking, \
Q_NULLPTR)) @@ -67,6 +70,9 @@ public:
, q(parent)
, query(query)
{
+ for (const auto& urlFilter: query.urlFilters()) {
+ urlFilters << QRegExp(urlFilter, Qt::CaseSensitive, \
QRegExp::WildcardUnix); + }
}
// Processing the list of activities as specified by the query.
@@ -96,6 +102,16 @@ public:
);
}
+ // Same as above, but for urls
+ bool urlMatches(const QString &url) const
+ {
+ return std::any_of(urlFilters.cbegin(), urlFilters.cend(),
+ [&] (const QRegExp &matcher) {
+ return matcher.exactMatch(url);
+ }
+ );
+ }
+
bool typeMatches(const QString &resource) const
{
// We don't necessarily need to retrieve the type from
@@ -130,7 +146,9 @@ public:
// from the cheapest, to the most expensive
return agentMatches(agent)
&& activityMatches(activity)
- && typeMatches(resource);
+ && urlMatches(resource)
+ && typeMatches(resource)
+ ;
}
void onResourceLinkedToActivity(const QString &agent,
diff --git a/src/lib/stats/terms.cpp b/src/lib/stats/terms.cpp
index e56ccdf..c48732d 100644
--- a/src/lib/stats/terms.cpp
+++ b/src/lib/stats/terms.cpp
@@ -54,20 +54,20 @@ IMPLEMENT_SPECIAL_TERM_VALUE(Activity, global, ":global")
IMPLEMENT_SPECIAL_TERM_VALUE(Activity, current, ":current")
IMPLEMENT_TERM_CONSTRUCTORS(Url)
-IMPLEMENT_SPECIAL_TERM_VALUE(Url, localFile, "/%")
-IMPLEMENT_SPECIAL_TERM_VALUE(Url, file, QStringList() << "/%" << "smb:%" << "fish:%" \
<< "sftp:%" << "ftp:%") +IMPLEMENT_SPECIAL_TERM_VALUE(Url, localFile, "/*")
+IMPLEMENT_SPECIAL_TERM_VALUE(Url, file, QStringList() << "/*" << "smb:*" << "fish:*" \
<< "sftp:*" << "ftp:*")
#undef IMPLEMENT_TERM_CONSTRUCTORS
#undef IMPLEMENT_SPECIAL_TERM_VALUE
Terms::Url Terms::Url::startsWith(const QString &prefix)
{
- return Url(prefix + "%");
+ return Url(prefix + "*");
}
Terms::Url Terms::Url::contains(const QString &infix)
{
- return Url("%" + infix + "%");
+ return Url("*" + infix + "*");
}
} // namespace Stats
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic