|
From: SVN by r. <sv...@ca...> - 2008-09-04 12:32:20
|
Author: roy
Date: 2008-09-04 14:32:02 +0200 (Thu, 04 Sep 2008)
New Revision: 303
Modified:
src/main/java/nl/improved/sqlclient/SQLUtil.java
src/test/java/nl/improved/sqlclient/SQLUtilTest.java
Log:
improve some tabcompletion
Modified: src/main/java/nl/improved/sqlclient/SQLUtil.java
===================================================================
--- src/main/java/nl/improved/sqlclient/SQLUtil.java 2008-09-01 09:53:07 UTC (rev 302)
+++ src/main/java/nl/improved/sqlclient/SQLUtil.java 2008-09-04 12:32:02 UTC (rev 303)
@@ -246,14 +246,19 @@
String regExp = "(|"+VALUE+"(|[\\s]*"+COMPARATOR+"[\\s]*(|"+VALUE+"(|([\\s]+(AND|OR)[\\s]+(|"+VALUE+"(|[\\s]*"+COMPARATOR+"[\\s]*(|"+VALUE+"))))*))|[\\s]*IN[\\s]*(.*)[\\s]*))";
if (upperCommandString.matches(regExp)) {
int lastIndex = tmpCommand.lastIndexOf(' ');
- lastIndex = Math.max(lastIndex, tmpCommand.lastIndexOf('.'));
lastIndex = Math.max(lastIndex, tmpCommand.lastIndexOf('\t'));
lastIndex = Math.max(lastIndex, tmpCommand.lastIndexOf('='));
lastIndex = Math.max(lastIndex, tmpCommand.lastIndexOf('>'));
lastIndex = Math.max(lastIndex, tmpCommand.lastIndexOf('>'));
+ int lastBreakIndex = lastIndex;
+ lastIndex = Math.max(lastIndex, tmpCommand.lastIndexOf('.'));
String end = tmpCommand.substring(lastIndex+1);
+ if (lastBreakIndex < 0) lastBreakIndex = 0;
+ List tableNames = (lastIndex > lastBreakIndex) && lastBreakIndex >=0 ?
+ Arrays.asList(new String[]{tmpCommand.substring(lastBreakIndex,lastIndex).trim()}) :
+ parseTableNames(commandInfo, commandPoint);
return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES
- , parseTableNames(commandInfo, commandPoint), end);
+ , tableNames, end);
}
//else System.out.println("'"+upperCommandString +"'\n not matches\n"+regExp);
String end = "";
Modified: src/test/java/nl/improved/sqlclient/SQLUtilTest.java
===================================================================
--- src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2008-09-01 09:53:07 UTC (rev 302)
+++ src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2008-09-04 12:32:02 UTC (rev 303)
@@ -371,7 +371,7 @@
assertNotNull(info);
assertEquals(TabCompletionInfo.MatchType.COLUMN_NAMES, info.getMatchType());
matches = info.getPossibleMatches();
- assertTrue(matches.contains("A"));
+ assertTrue(matches.toString(), matches.contains("A"));
assertEquals("x", info.getStart());
sqlCommand = Arrays.asList(new String[]{"SELECT * FROM A,B WHERE c like 'a%' and A.x"});
@@ -509,6 +509,18 @@
assertEquals("", info.getStart());
}
+ public void testGetTableName() {
+ List<String> sqlCommand = Arrays.asList(new String[]{"select * from a where mytable.b"});
+ Point cursorPos = new Point(sqlCommand.get(0).length(),0);
+ TabCompletionInfo info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos);
+ assertNotNull(info);
+ assertEquals(TabCompletionInfo.MatchType.COLUMN_NAMES, info.getMatchType());
+ List<String> matches = info.getPossibleMatches();
+ assertEquals(1, matches.size());
+ assertEquals("b", info.getStart());
+ assertTrue("Table name should match 'mytable', but was " + matches.get(0), matches.contains("mytable"));
+ }
+
/* public void testTabCompletionInfoDESC() {
List<String> sqlCommand = Arrays.asList(new String[]{"DESC "});
Point cursorPos = new Point(sqlCommand.get(0).length(),0);
|