From: SVN by r. <sv...@ca...> - 2009-03-15 20:44:51
|
Author: roy Date: 2009-03-15 21:44:38 +0100 (Sun, 15 Mar 2009) New Revision: 395 Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java src/test/java/nl/improved/sqlclient/util/SQLParserTest.java Log: set/where unit test added + fix Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java =================================================================== --- src/main/java/nl/improved/sqlclient/util/SQLParser.java 2009-03-14 15:23:00 UTC (rev 394) +++ src/main/java/nl/improved/sqlclient/util/SQLParser.java 2009-03-15 20:44:38 UTC (rev 395) @@ -160,7 +160,7 @@ } } else if (sql.matches("[\\s]*SET.*")) { sqlType = SQLPart.SQLType.SET; - if (sql.matches("[\\s]*WHERE.*")) { + if (sql.matches(".*[\\s]*WHERE.*")) { end = sql.indexOf("WHERE"); } } else { @@ -196,8 +196,6 @@ if (end.lastIndexOf(" ") >0) { end = end.substring(end.lastIndexOf(' ')+1); } - System.err.println("SUB: "+"'"+ subPart+"'"); - System.err.println("END: "+ "'"+end+"'"); return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD, Arrays.asList(new String[]{"WHERE", "GROUP BY", "ORDER BY", ","}), end.trim()); } return new TabCompletionInfo(TabCompletionInfo.MatchType.TABLE_NAMES, Arrays.asList(new String[]{}), end.trim()); @@ -423,7 +421,7 @@ return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES , tableNames, end); } - if (upperCommandString.matches(".*[\\s]+(AND|OR)[\\s]+")) { + if (upperCommandString.matches("[\\s]*") || upperCommandString.matches(".*[\\s]+(AND|OR)[\\s]+")) { return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES , getTableNames(parts)); } Modified: src/test/java/nl/improved/sqlclient/util/SQLParserTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2009-03-14 15:23:00 UTC (rev 394) +++ src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2009-03-15 20:44:38 UTC (rev 395) @@ -796,6 +796,16 @@ matches = info.getPossibleMatches(); assertTrue("WHERE not in " + matches , matches.contains("WHERE")); assertEquals("WH", info.getStart()); + + sqlCommand = Arrays.asList(new String[]{"update l set s='' where "}); + cursorPos = new Point(sqlCommand.get(0).length(),0); + info = SQLParser.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(info.getPossibleMatches().toString(), TabCompletionInfo.MatchType.COLUMN_NAMES, info.getMatchType()); + matches = info.getPossibleMatches(); + assertEquals(1, matches.size()); + assertTrue(matches.contains("l")); + assertEquals("", info.getStart()); } public void testGetTableName() { |