|
From: SVN by r. <sv...@ca...> - 2009-03-31 19:38:36
|
Author: roy
Date: 2009-03-31 21:38:19 +0200 (Tue, 31 Mar 2009)
New Revision: 398
Modified:
src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java
src/main/java/nl/improved/sqlclient/util/SQLParser.java
Log:
tab completion fixes in select
Modified: src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java
===================================================================
--- src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java 2009-03-26 18:49:51 UTC (rev 397)
+++ src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java 2009-03-31 19:38:19 UTC (rev 398)
@@ -60,7 +60,9 @@
import nl.improved.sqlclient.history.HistoryPersister;
import nl.improved.sqlclient.history.exception.CouldNotLoadHistoryException;
import nl.improved.sqlclient.history.exception.CouldNotSaveHistoryException;
+import nl.improved.sqlclient.util.Function;
import nl.improved.sqlclient.util.LimitedArrayList;
+import nl.improved.sqlclient.util.oracle.Functions;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -727,6 +729,7 @@
}
CharSequence newText;
if (inp.getCharacter() == '\t') {
+ new Throwable().printStackTrace();
try {
Point cursorPosition = screen.getCursorPosition();
newText = getTabCompletion(commandLines, cursorPosition);
@@ -1017,6 +1020,16 @@
return nullToEmpty(findMatch(getTableNames(), info.getStart()));
}
if (info.getMatchType() == TabCompletionInfo.MatchType.COLUMN_NAMES) {
+ if (info.getStart().length() > 0) {
+ try {
+ List<Function> functions = Functions.getFunctionMatches(getConnection(), info.getStart());
+ if (functions.size() > 0) {
+ debug("Found function matches: "+ functions);
+ }
+ } catch (SQLException ex) {
+ Logger.getLogger(AbstractSQLShellWindow.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
return nullToEmpty(findMatch(getColumnNames(info.getPossibleMatches()), info.getStart()));
}
if (info.getMatchType() == TabCompletionInfo.MatchType.OTHER) {
Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java
===================================================================
--- src/main/java/nl/improved/sqlclient/util/SQLParser.java 2009-03-26 18:49:51 UTC (rev 397)
+++ src/main/java/nl/improved/sqlclient/util/SQLParser.java 2009-03-31 19:38:19 UTC (rev 398)
@@ -7,6 +7,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import nl.improved.sqlclient.Point;
import nl.improved.sqlclient.SQLCommand;
@@ -311,11 +312,12 @@
return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES, getTableNames(parts), end);
}
- private static TabCompletionInfo getSelectTabCompletionInfo(SQLPart part, List<SQLPart> parts, int position) {
+ private static TabCompletionInfo getSelectTabCompletionInfo(SQLPart part, List<SQLPart> parts, int charsLeft) {
// if it looks like:
// SELECT x
// return "FROM"
- String startOfCommand = part.getPart().toString();
+ String stringPart = part.getPart().toString();
+ String startOfCommand = stringPart.substring(0, charsLeft);
String upCommand = startOfCommand.toUpperCase();
if (upCommand.equals("SELECT")) {
return new TabCompletionInfo(TabCompletionInfo.MatchType.OTHER
@@ -347,6 +349,11 @@
, Arrays.asList(new String[]{tableName.substring(0,tableName.indexOf('.'))})
, tableName.substring(tableName.indexOf('.')+1));
}
+ List<String> tableNames = getTableNames(parts);
+ if (tableNames.size() > 0) {
+ return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES
+ , tableNames, tableName);
+ }
return new TabCompletionInfo(TabCompletionInfo.MatchType.TABLE_NAMES
, Arrays.asList(new String[0]), tableName);
}
@@ -413,6 +420,9 @@
tableNamesSqlPart = tmpPart;
}
}
+ if (tableNamesSqlPart == null) {
+ return Collections.emptyList();
+ }
return tableNamesSqlPart.getTableNames();
}
|