Skip to content

Commit 48d480d

Browse files
committed
Case insensitive relation check, fixes #17
1 parent 3a6427a commit 48d480d

5 files changed

Lines changed: 31 additions & 32 deletions

File tree

src/main/java/org/z3950/zing/cql/CQLParser.java

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -282,40 +282,39 @@ private CQLNode parsePrefix(String index, CQLRelation relation,
282282

283283
return new CQLPrefixNode(name, identifier, node);
284284
}
285-
285+
286286
private boolean isWordOrString() {
287-
return CQLTokenizer.TT_WORD == lexer.what()
287+
return CQLTokenizer.TT_WORD == lexer.what()
288288
|| CQLTokenizer.TT_STRING == lexer.what();
289289
}
290290

291291
private boolean isRelation() {
292-
debug("isRelation: checking what()=" + lexer.what() +
293-
" (" + lexer.render() + ")");
294-
if (lexer.what() == CQLTokenizer.TT_WORD &&
295-
(lexer.value().indexOf('.') >= 0 ||
296-
lexer.value().equals("any") ||
297-
lexer.value().equals("all") ||
298-
lexer.value().equals("within") ||
299-
lexer.value().equals("encloses") ||
300-
(lexer.value().equals("exact") && compat != V1POINT2) ||
301-
(lexer.value().equals("scr") && compat != V1POINT2) ||
302-
(lexer.value().equals("adj") && compat == V1POINT2) ||
303-
customRelations.contains(lexer.value())))
304-
return true;
305-
292+
debug("isRelation: checking what()=" + lexer.what() +
293+
" (" + lexer.render() + ")");
294+
if (lexer.what() == CQLTokenizer.TT_WORD) {
295+
return lexer.value().indexOf('.') >= 0 ||
296+
lexer.value().equalsIgnoreCase("any") ||
297+
lexer.value().equalsIgnoreCase("all") ||
298+
lexer.value().equalsIgnoreCase("within") ||
299+
lexer.value().equalsIgnoreCase("encloses") ||
300+
(lexer.value().equalsIgnoreCase("exact") && compat != V1POINT2) ||
301+
(lexer.value().equalsIgnoreCase("scr") && compat != V1POINT2) ||
302+
(lexer.value().equalsIgnoreCase("adj") && compat == V1POINT2) ||
303+
customRelations.stream().anyMatch(r -> r.equalsIgnoreCase(lexer.value()));
304+
}
306305
return isSymbolicRelation();
307306
}
308307

309308
private boolean isSymbolicRelation() {
310-
debug("isSymbolicRelation: checking what()=" + lexer.what() +
311-
" (" + lexer.render() + ")");
312-
return (lexer.what() == '<' ||
313-
lexer.what() == '>' ||
314-
lexer.what() == '=' ||
315-
lexer.what() == CQLTokenizer.TT_LE ||
316-
lexer.what() == CQLTokenizer.TT_GE ||
317-
lexer.what() == CQLTokenizer.TT_NE ||
318-
lexer.what() == CQLTokenizer.TT_EQEQ);
309+
debug("isSymbolicRelation: checking what()=" + lexer.what() +
310+
" (" + lexer.render() + ")");
311+
return (lexer.what() == '<' ||
312+
lexer.what() == '>' ||
313+
lexer.what() == '=' ||
314+
lexer.what() == CQLTokenizer.TT_LE ||
315+
lexer.what() == CQLTokenizer.TT_GE ||
316+
lexer.what() == CQLTokenizer.TT_NE ||
317+
lexer.what() == CQLTokenizer.TT_EQEQ);
319318
}
320319

321320
private void match(int token)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
title any fish
1+
title Any fish
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<searchClause>
22
<index>title</index>
33
<relation>
4-
<value>any</value>
4+
<value>Any</value>
55
</relation>
66
<term>fish</term>
77
</searchClause>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sortby sortby sortby sortby sortby
1+
Sortby Sortby Sortby Sortby Sortby

src/test/resources/regression/09/06.xcql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
<relation>
44
<value>=</value>
55
</relation>
6-
<term>sortby</term>
6+
<term>Sortby</term>
77
<sortKeys>
88
<key>
9-
<index>sortby</index>
9+
<index>Sortby</index>
1010
</key>
1111
<key>
12-
<index>sortby</index>
12+
<index>Sortby</index>
1313
</key>
1414
<key>
15-
<index>sortby</index>
15+
<index>Sortby</index>
1616
</key>
1717
</sortKeys>
1818
</searchClause>

0 commit comments

Comments
 (0)