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