From: SVN by r. <sv...@ca...> - 2008-01-27 10:53:02
|
Author: roy Date: 2008-01-27 11:41:23 +0100 (Sun, 27 Jan 2008) New Revision: 229 Modified: src/main/java/nl/improved/sqlclient/DBConnector.java src/main/java/nl/improved/sqlclient/commands/DescCommand.java src/main/java/nl/improved/sqlclient/commands/ShowCommand.java Log: fix case sensitivity that differs per databse (oracle wants uppercase, mysql wants lowercase.. sigh) Modified: src/main/java/nl/improved/sqlclient/DBConnector.java =================================================================== --- src/main/java/nl/improved/sqlclient/DBConnector.java 2008-01-24 21:02:26 UTC (rev 228) +++ src/main/java/nl/improved/sqlclient/DBConnector.java 2008-01-27 10:41:23 UTC (rev 229) @@ -17,6 +17,7 @@ import java.sql.Connection; import java.sql.DriverManager; +import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Hashtable; @@ -37,6 +38,7 @@ public final class DBConnector { private static DBConnector instance = null; + private boolean tableNamesUppercase = false; private Map<String, ConnectionSettings> predefinedConnections; private String defaultConnector; @@ -79,6 +81,16 @@ return connect(defaultConnector, null, null); } + public String translateDbVar(String name) { + if (name == null) { + return null; + } + if (tableNamesUppercase) { + return name.toUpperCase(); + } + return name.toLowerCase(); + } + /** * Return the used schema. * NOTE: hack because Oracle uses as a schema the current username @@ -244,6 +256,24 @@ activeConnection = DriverManager.getConnection(settings.getConnectionURL(), username, password); activeConnection.setAutoCommit(autoCommit); + // INITIALIZE to uppercase type + try { + ResultSet rs = activeConnection.getMetaData() + .getTables(activeConnection.getCatalog(), getSchema() + , null, new String[]{"TABLE"}); + while (rs.next()) { + String tableName = rs.getString("TABLE_NAME"); + for (int i = 0; i < tableName.length(); i++) { + if (Character.isLetter(tableName.charAt(i))) { + this.tableNamesUppercase = Character.isUpperCase(tableName.charAt(i)); + break; + } + } + } + } catch(Exception e) { + /* ignore */ + } + // END INITIALIZE return activeConnection; } Modified: src/main/java/nl/improved/sqlclient/commands/DescCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/DescCommand.java 2008-01-24 21:02:26 UTC (rev 228) +++ src/main/java/nl/improved/sqlclient/commands/DescCommand.java 2008-01-27 10:41:23 UTC (rev 229) @@ -40,7 +40,7 @@ if (cmd.endsWith(";")) { cmd = cmd.substring(0, cmd.length()-1); } - String tableName = cmd.substring(cmd.lastIndexOf(' ')).trim().toUpperCase(); + String tableName = DBConnector.getInstance().translateDbVar(cmd.substring(cmd.lastIndexOf(' ')).trim()); ResultBuilder result = new ResultBuilder(); result.setHorizontalSeparatorEnabled(false); result.setVerticalSeparator(' '); @@ -101,11 +101,13 @@ * Return the command string desc. * @return the command string desc. */ + @Override public CharSequence getCommandString() { return "desc"; } + @Override public TabCompletionInfo getTabCompletionInfo(SQLCommand command, Point commandPoint) { List commandInfo = command.getLines(); Modified: src/main/java/nl/improved/sqlclient/commands/ShowCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/ShowCommand.java 2008-01-24 21:02:26 UTC (rev 228) +++ src/main/java/nl/improved/sqlclient/commands/ShowCommand.java 2008-01-27 10:41:23 UTC (rev 229) @@ -44,7 +44,7 @@ if (subCommand.startsWith("TABLES")) { if (subCommand.indexOf(' ') > 0) { String otherCommand = subCommand.substring(subCommand.indexOf(' ')).trim(); - String columnName = otherCommand.substring(otherCommand.indexOf(' ')).trim().toUpperCase(); + String columnName = DBConnector.getInstance().translateDbVar(otherCommand.substring(otherCommand.indexOf(' ')).trim()); if (otherCommand.toUpperCase().matches("HAVING[\\s]+[A-Z]+.*")) { try { ResultSet rs = conn.getMetaData().getColumns(conn.getCatalog() @@ -103,6 +103,7 @@ * @param commandPoint the cursor position * @return some tab completion info for the specified command. */ + @Override public TabCompletionInfo getTabCompletionInfo(SQLCommand command, Point commandPoint) { String commandString = command.getUntrimmedCommandString(); String commandStringUpper = commandString.toUpperCase(); |