Author: rhauch
Date: 2009-10-15 15:55:58 -0400 (Thu, 15 Oct 2009)
New Revision: 1293
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/query/parse/SqlQueryParser.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/query/parse/SqlQueryParserTest.java
Log:
DNA-467 Add search/query support to the graph API
Updated test cases for SqlQueryParser.
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/query/parse/SqlQueryParser.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/query/parse/SqlQueryParser.java 2009-10-15
19:55:26 UTC (rev 1292)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/query/parse/SqlQueryParser.java 2009-10-15
19:55:58 UTC (rev 1293)
@@ -446,9 +446,9 @@
return constraint;
}
- protected Collection<StaticOperand> parseInClause( TokenStream tokens,
- ExecutionContext context ) {
- Collection<StaticOperand> result = new ArrayList<StaticOperand>();
+ protected List<StaticOperand> parseInClause( TokenStream tokens,
+ ExecutionContext context ) {
+ List<StaticOperand> result = new ArrayList<StaticOperand>();
tokens.consume("IN");
tokens.consume("(");
if (!tokens.canConsume(")")) {
Modified:
trunk/dna-graph/src/test/java/org/jboss/dna/graph/query/parse/SqlQueryParserTest.java
===================================================================
---
trunk/dna-graph/src/test/java/org/jboss/dna/graph/query/parse/SqlQueryParserTest.java 2009-10-15
19:55:26 UTC (rev 1292)
+++
trunk/dna-graph/src/test/java/org/jboss/dna/graph/query/parse/SqlQueryParserTest.java 2009-10-15
19:55:58 UTC (rev 1293)
@@ -622,6 +622,58 @@
}
//
----------------------------------------------------------------------------------------------------------------
+ // parseInClause
+ //
----------------------------------------------------------------------------------------------------------------
+
+ @Test
+ public void shouldParseInClauseFromStringWithSingleValidLiteral() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN
('value1')"), context);
+ assertThat(result.size(), is(1));
+ assertThat(result.get(0), is((StaticOperand)literal("value1")));
+ }
+
+ @Test
+ public void shouldParseInClauseFromStringWithTwoValidLiteral() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN
('value1','value2')"), context);
+ assertThat(result.size(), is(2));
+ assertThat(result.get(0), is((StaticOperand)literal("value1")));
+ assertThat(result.get(1), is((StaticOperand)literal("value2")));
+ }
+
+ @Test
+ public void shouldParseInClauseFromStringWithThreeValidLiteral() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN
('value1','value2','value3')"), context);
+ assertThat(result.size(), is(3));
+ assertThat(result.get(0), is((StaticOperand)literal("value1")));
+ assertThat(result.get(1), is((StaticOperand)literal("value2")));
+ assertThat(result.get(2), is((StaticOperand)literal("value3")));
+ }
+
+ @Test
+ public void shouldParseInClauseFromStringWithSingleValidLiteralCast() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN
(CAST('value1' AS STRING))"), context);
+ assertThat(result.size(), is(1));
+ assertThat(result.iterator().next(),
is((StaticOperand)literal("value1")));
+
+ result = parser.parseInClause(tokens("IN (CAST('3' AS LONG))"),
context);
+ assertThat(result.size(), is(1));
+ assertThat(result.iterator().next(), is((StaticOperand)literal(new Long(3))));
+ }
+
+ @Test
+ public void shouldParseInClauseFromStringWithMultipleValidLiteralCasts() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN
(CAST('value1' AS STRING),CAST('3' AS LONG),'4')"),
context);
+ assertThat(result.size(), is(3));
+ assertThat(result.get(0), is((StaticOperand)literal("value1")));
+ assertThat(result.get(1), is((StaticOperand)literal(new Long(3))));
+ assertThat(result.get(2), is((StaticOperand)literal("4")));
+ }
+
+ protected Literal literal( Object literalValue ) {
+ return new Literal(literalValue);
+ }
+
+ //
----------------------------------------------------------------------------------------------------------------
// parseFullTextSearchExpression
//
----------------------------------------------------------------------------------------------------------------
Show replies by date