From: SVN by r. <sv...@ca...> - 2009-03-04 08:09:00
|
Author: roy Date: 2009-03-04 09:08:46 +0100 (Wed, 04 Mar 2009) New Revision: 392 Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java src/test/java/nl/improved/sqlclient/util/SQLParserTest.java Log: some tab compl fixes Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java =================================================================== --- src/main/java/nl/improved/sqlclient/util/SQLParser.java 2009-03-02 08:54:07 UTC (rev 391) +++ src/main/java/nl/improved/sqlclient/util/SQLParser.java 2009-03-04 08:08:46 UTC (rev 392) @@ -336,15 +336,24 @@ String end; if (tmpCommand.indexOf(' ') > 0) { end = tmpCommand.substring(tmpCommand.lastIndexOf(' ')+1).trim(); + if (tmpCommand.matches(".*"+COMPARATOR+"[\\s]*"+VAR+"[\\s]+(|W|WH|WHE|WHER|WHERE)")) { + return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD + , Arrays.asList(new String[]{",", "WHERE"}), end); + } + return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD + , Arrays.asList(new String[]{"=", "<>", "LIKE", "<", ">"}), end); } else { end = tmpCommand.trim(); + return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES + , getTableNames(parts), end); } - if (tmpCommand.trim().length() > 0) { + /*if (tmpCommand.trim().length() > 0) { return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD , Arrays.asList(new String[]{"=", "<>", "LIKE", "<", ">"}), end); } return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD , Arrays.asList(new String[]{",", "WHERE"})); // TODO END +*/ } private static String getTableName(String alias, List<SQLPart> parts) { Modified: src/test/java/nl/improved/sqlclient/util/SQLParserTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2009-03-02 08:54:07 UTC (rev 391) +++ src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2009-03-04 08:08:46 UTC (rev 392) @@ -664,6 +664,15 @@ assertTrue("=", matches.contains("=")); assertEquals("", info.getStart()); + sqlCommand = Arrays.asList(new String[]{"UPDATE A SET B"}); + cursorPos = new Point(sqlCommand.get(0).length(),0); + info = SQLParser.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(TabCompletionInfo.MatchType.COLUMN_NAMES, info.getMatchType()); + matches = info.getPossibleMatches(); + assertTrue("A", matches.contains("A")); + assertEquals("B", info.getStart()); + sqlCommand = Arrays.asList(new String[]{"UPDATE A SET B = "}); cursorPos = new Point(sqlCommand.get(0).length(),0); info = SQLParser.getTabCompletionInfo(sqlCommand, cursorPos); @@ -672,6 +681,15 @@ matches = info.getPossibleMatches(); assertTrue("A", matches.contains("A")); assertEquals("", info.getStart()); + + sqlCommand = Arrays.asList(new String[]{"UPDATE A SET B = B WH"}); + cursorPos = new Point(sqlCommand.get(0).length(),0); + info = SQLParser.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(TabCompletionInfo.MatchType.SQL_KEYWORD, info.getMatchType()); + matches = info.getPossibleMatches(); + assertTrue("WHERE not in " + matches , matches.contains("WHERE")); + assertEquals("WH", info.getStart()); } public void testGetTableName() { |