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); |