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