|
From: SVN by r. <sv...@ca...> - 2008-01-12 11:15:05
|
Author: roy
Date: 2008-01-12 11:58:07 +0100 (Sat, 12 Jan 2008)
New Revision: 209
Modified:
src/main/java/nl/improved/sqlclient/SQLUtil.java
src/test/java/nl/improved/sqlclient/SQLUtilTest.java
Log:
added (initial) support for order by tab completion
Modified: src/main/java/nl/improved/sqlclient/SQLUtil.java
===================================================================
--- src/main/java/nl/improved/sqlclient/SQLUtil.java 2008-01-12 10:52:04 UTC (rev 208)
+++ src/main/java/nl/improved/sqlclient/SQLUtil.java 2008-01-12 10:58:07 UTC (rev 209)
@@ -51,7 +51,7 @@
*/
private static final String VALUE = "('.*'|[0-9]+|"+VAR+")";
- public static List<String> KEYWORDS = Arrays.asList(new String[]{"SELECT", "UPDATE", "FROM", "WHERE", "VALUES", "SET", "INSERT", "INTO", "DELETE", "IS", "NULL", "IN", "NOT", "GROUP BY", "DESC"});
+ public static List<String> KEYWORDS = Arrays.asList(new String[]{"SELECT", "UPDATE", "FROM", "WHERE", "VALUES", "SET", "INSERT", "INTO", "DELETE", "IS", "NULL", "IN", "NOT", "GROUP BY", "ORDER BY", "DESC"});
/**
* Private constructor.
@@ -298,7 +298,8 @@
return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD
, Arrays.asList(new String[]{"AND", "OR", "IN", "GROUP BY", "ORDER BY"}));
*/
- } else if (lastKeyword.equalsIgnoreCase("GROUP BY")) {
+ } else if (lastKeyword.equalsIgnoreCase("GROUP BY")
+ || lastKeyword.equalsIgnoreCase("ORDER BY")) {
String upperStart = startOfCommand.toUpperCase();
String columns = startOfCommand.substring(upperStart.indexOf("SELECT")+"SELECT".length(), upperStart.indexOf("FROM")).replaceAll(" ","");
return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES, Arrays.asList(columns.split(",")));
Modified: src/test/java/nl/improved/sqlclient/SQLUtilTest.java
===================================================================
--- src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2008-01-12 10:52:04 UTC (rev 208)
+++ src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2008-01-12 10:58:07 UTC (rev 209)
@@ -359,6 +359,29 @@
assertTrue(matches.contains("c2"));
}
+ public void testOrderBy() {
+ List<String> sqlCommand = Arrays.asList(new String[]{"SELECT c1,c2 FROM A,B WHERE a.b=b.b ORDER BY "});
+ Point cursorPos = new Point(sqlCommand.get(0).length(),0);
+ TabCompletionInfo info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos);
+ assertNotNull(info);
+ assertEquals(TabCompletionInfo.MatchType.COLUMN_NAMES, info.getMatchType());
+ List<String> matches = info.getPossibleMatches();
+ assertEquals(2, matches.size());
+ assertTrue(matches.contains("c1"));
+ assertTrue(matches.contains("c2"));
+
+
+ sqlCommand = Arrays.asList(new String[]{"SELECT c1 , c2 FROM A,B WHERE a.b=b.b ORDER BY "});
+ cursorPos = new Point(sqlCommand.get(0).length(),0);
+ info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos);
+ assertNotNull(info);
+ assertEquals(TabCompletionInfo.MatchType.COLUMN_NAMES, info.getMatchType());
+ matches = info.getPossibleMatches();
+ assertEquals(2, matches.size());
+ assertTrue(matches.contains("c1"));
+ assertTrue(matches.contains("c2"));
+ }
+
public void testParseTableNames() {
List<String> sqlCommand = Arrays.asList(new String[]{"SELECT * FROM A WHERE "});
Point cursorPos = new Point(sqlCommand.get(0).length(),0);
|