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