Skip to content

Commit

Permalink
Add is null search query integrated with tree
Browse files Browse the repository at this point in the history
  • Loading branch information
jmigual committed Jul 11, 2016
1 parent adfbfbb commit 6aac36c
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/library/librarytreemodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,11 @@ QString LibraryTreeModel::getQuery(TreeItem* pTree) const {
pAux = pTree;
while (depth >= 0) {
QString value = pAux->dataPath().toString();

result << m_sortOrder[depth] % ":\"" % value % "\"";
if (value == "") {
result << "\\+" + m_sortOrder[depth];
} else {
result << m_sortOrder[depth] % ":\"" % value % "\"";
}
pAux = pAux->parent();
--depth;
}
Expand Down
6 changes: 6 additions & 0 deletions src/library/searchqueryparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ SearchQueryParser::SearchQueryParser(QSqlDatabase& database)
m_allFilters.append(m_specialFilters);

m_fuzzyMatcher = QRegExp(QString("^~(%1)$").arg(m_allFilters.join("|")));
m_isNullMatcher = QRegExp(QString("^\\\\\\+(%1)$").arg(m_allFilters.join("|")));
m_textFilterMatcher = QRegExp(QString("^-?(%1):(.*)$").arg(m_textFilters.join("|")));
m_numericFilterMatcher = QRegExp(QString("^-?(%1):(.*)$").arg(m_numericFilters.join("|")));
m_specialFilterMatcher = QRegExp(QString("^[~-]?(%1):(.*)$").arg(m_specialFilters.join("|")));
Expand Down Expand Up @@ -116,6 +117,11 @@ void SearchQueryParser::parseTokens(QStringList tokens,

if (m_fuzzyMatcher.indexIn(token) != -1) {
// TODO(XXX): implement this feature.
} else if (m_isNullMatcher.indexIn(token) != -1) {
QString field = m_isNullMatcher.cap(1);
std::unique_ptr<QueryNode> pNode(std::make_unique<SqlNode>(
field + " IS NULL"));
pQuery->addNode(std::move(pNode));
} else if (m_textFilterMatcher.indexIn(token) != -1) {
bool negate = token.startsWith(kNegatePrefix);
QString field = m_textFilterMatcher.cap(1);
Expand Down
1 change: 1 addition & 0 deletions src/library/searchqueryparser.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class SearchQueryParser {
QStringList m_allFilters;
QHash<QString, QStringList> m_fieldToSqlColumns;

QRegExp m_isNullMatcher;
QRegExp m_fuzzyMatcher;
QRegExp m_textFilterMatcher;
QRegExp m_numericFilterMatcher;
Expand Down

0 comments on commit 6aac36c

Please sign in to comment.