|
From: SVN by r. <sv...@ca...> - 2008-01-30 12:05:52
|
Author: roy
Date: 2008-01-30 12:49:04 +0100 (Wed, 30 Jan 2008)
New Revision: 232
Modified:
src/main/java/nl/improved/sqlclient/SQLUtil.java
src/test/java/nl/improved/sqlclient/SQLUtilTest.java
Log:
more tab completion fixes
Modified: src/main/java/nl/improved/sqlclient/SQLUtil.java
===================================================================
--- src/main/java/nl/improved/sqlclient/SQLUtil.java 2008-01-27 12:43:39 UTC (rev 231)
+++ src/main/java/nl/improved/sqlclient/SQLUtil.java 2008-01-30 11:49:04 UTC (rev 232)
@@ -236,6 +236,8 @@
// 'SELECT x FROM A,B WHERE A.x='x' AND/OR '
String tmpCommand = startOfCommand.substring(startOfCommand.indexOf(lastKeyword)+lastKeyword.length()+1);
String upperCommandString = tmpCommand.toUpperCase();
+ String VAR = "(|"+TABLE+"\\.)(|"+COLUMN+")";
+ String VALUE = "('.*'|[0-9]+|"+VAR+")";
String subPart = "(|"+VAR+"(|[\\s]+"+COMPARATOR+"[\\s]+(|"+VAR+")))";
//String regExp = "(|"+VALUE+"(|[\\s]+"+COMPARATOR+"[\\s]+(|"+VALUE+"(|([\\s]+(AND|OR)[\\s]+)))))";
String regExp = "(|"+VALUE+"(|[\\s]*"+COMPARATOR+"[\\s]*(|"+VALUE+"(|([\\s]+(AND|OR)[\\s]+(|"+VALUE+"(|[\\s]*"+COMPARATOR+"[\\s]*(|"+VALUE+"))))*))))";
@@ -255,7 +257,7 @@
return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES
, parseTableNames(commandInfo, commandPoint), end);
}
- //System.out.println("'"+upperCommandString +"'\n not matches\n"+regExp);
+ System.out.println("'"+upperCommandString +"'\n not matches\n"+regExp);
String end = "";
if (upperCommandString.matches(".*[\\s]+")) {
end = "";
Modified: src/test/java/nl/improved/sqlclient/SQLUtilTest.java
===================================================================
--- src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2008-01-27 12:43:39 UTC (rev 231)
+++ src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2008-01-30 11:49:04 UTC (rev 232)
@@ -246,6 +246,17 @@
System.out.println("I: " + info.getStart());
assertEquals("I", info.getStart());
+ sqlCommand = Arrays.asList(new String[]{"SELECT * FROM A,B WHERE A."});
+ 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(1, matches.size());
+ assertTrue(matches.contains("A"));
+ System.out.println("I:'" + info.getStart() +"'");
+ assertEquals("", info.getStart());
+
// with other conditions
sqlCommand = Arrays.asList(new String[]{"SELECT * FROM A,B WHERE A.x = 'x' AND "});
cursorPos = new Point(sqlCommand.get(0).length(),0);
|