From: SVN by r. <sv...@ca...> - 2007-10-26 12:21:01
|
Author: roy Date: 2007-10-26 14:20:56 +0200 (Fri, 26 Oct 2007) New Revision: 185 Modified: src/main/java/nl/improved/sqlclient/SQLUtil.java src/test/java/nl/improved/sqlclient/SQLUtilTest.java Log: added more 'failing' queries .. and added fix Modified: src/main/java/nl/improved/sqlclient/SQLUtil.java =================================================================== --- src/main/java/nl/improved/sqlclient/SQLUtil.java 2007-10-09 10:15:53 UTC (rev 184) +++ src/main/java/nl/improved/sqlclient/SQLUtil.java 2007-10-26 12:20:56 UTC (rev 185) @@ -37,7 +37,7 @@ /** * A column name regular expression statement. */ - private static final String COLUMN = "[A-Z]+"+NAMING_CHAR+"*"; + private static final String COLUMN = "(\\*|[A-Z]+"+NAMING_CHAR+"*)"; /** * A variable (table name + columnname) regular expression statement. */ @@ -166,9 +166,10 @@ // if it looks like: // SELECT x // return "FROM" - String upCommand = startOfCommand.trim().toUpperCase(); + String upCommand = startOfCommand.toUpperCase(); if (upCommand.length() > "SELECT".length()) { - if (upCommand.substring("SELECT".length()).matches("[\\s]*(\\*|"+VAR+"[\\s])([\\s]*,[\\s]*"+VAR+"+)*( |\t)*(|F|FR|FRO|FROM)")) { + if (upCommand.substring(upCommand.indexOf("SELECT") + "SELECT".length()) + .matches("[\\s]+"+VAR+"(|[\\s]*,[\\s]*"+VAR+"[\\s]*)[\\s]+(|F|FR|FRO|FROM)")) { String end = startOfCommand.substring(startOfCommand.lastIndexOf(' ')+1); return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD , Arrays.asList(new String[]{"FROM"}), end); Modified: src/test/java/nl/improved/sqlclient/SQLUtilTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2007-10-09 10:15:53 UTC (rev 184) +++ src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2007-10-26 12:20:56 UTC (rev 185) @@ -95,6 +95,26 @@ assertTrue(matches.contains("FROM")); assertEquals("FR", info.getStart()); + sqlCommand = Arrays.asList(new String[]{"SELECT a.test FR"}); + cursorPos = new Point(sqlCommand.get(0).length(),0); + info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(SQLUtil.TabCompletionInfo.MatchType.SQL_KEYWORD, info.getMatchType()); + matches = info.getPossibleMatches(); + assertEquals(1, matches.size()); + assertTrue(matches.contains("FROM")); + assertEquals("FR", info.getStart()); + + sqlCommand = Arrays.asList(new String[]{"SELECT a.test, a.tost FR"}); + cursorPos = new Point(sqlCommand.get(0).length(),0); + info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(SQLUtil.TabCompletionInfo.MatchType.SQL_KEYWORD, info.getMatchType()); + matches = info.getPossibleMatches(); + assertEquals(1, matches.size()); + assertTrue(matches.contains("FROM")); + assertEquals("FR", info.getStart()); + sqlCommand = Arrays.asList(new String[]{"SELECT A."}); cursorPos = new Point(sqlCommand.get(0).length(),0); info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos); |