From: SVN by r. <sv...@ca...> - 2008-05-19 20:28:59
|
Author: roy Date: 2008-05-19 22:28:44 +0200 (Mon, 19 May 2008) New Revision: 261 Modified: src/main/java/nl/improved/sqlclient/DBConnector.java src/main/java/nl/improved/sqlclient/SQLShell.java Log: mysql fixes (table names are case sensitive) Modified: src/main/java/nl/improved/sqlclient/DBConnector.java =================================================================== --- src/main/java/nl/improved/sqlclient/DBConnector.java 2008-04-04 18:43:39 UTC (rev 260) +++ src/main/java/nl/improved/sqlclient/DBConnector.java 2008-05-19 20:28:44 UTC (rev 261) @@ -22,8 +22,7 @@ import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; -import java.text.DateFormat; -import java.text.SimpleDateFormat; +import java.util.HashMap; import java.util.Hashtable; import java.util.Set; import java.util.Map; @@ -50,8 +49,8 @@ private static final String DEFAULT_TIME_PATTERN = "HH:mm:ss"; private static DBConnector instance = null; - private boolean tableNamesUppercase = false; + private Map<String, String> tableNames; private Map<String, ConnectionSettings> predefinedConnections; private String defaultConnector; @@ -100,10 +99,8 @@ if (name == null) { return null; } - if (tableNamesUppercase) { - return name.toUpperCase(); - } - return name.toLowerCase(); + String returnValue = tableNames == null ? null : tableNames.get(name.toLowerCase()); + return returnValue == null ? name : returnValue; } public boolean treatDateAsTimestamp() { @@ -287,18 +284,14 @@ activeConnection = DriverManager.getConnection(settings.getConnectionURL(), username, password); activeConnection.setAutoCommit(autoCommit); // INITIALIZE database settings + tableNames = new HashMap<String, String>(); try { DatabaseMetaData metaData = activeConnection.getMetaData(); ResultSet rs = metaData.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; - } - } + tableNames.put(tableName.toLowerCase(), tableName); } rs = metaData.getTypeInfo(); dateIsTimeStamp = true; @@ -331,6 +324,7 @@ activeConnection = null; } queryExecutor = null; + tableNames = null; } public Connection getConnection() { Modified: src/main/java/nl/improved/sqlclient/SQLShell.java =================================================================== --- src/main/java/nl/improved/sqlclient/SQLShell.java 2008-04-04 18:43:39 UTC (rev 260) +++ src/main/java/nl/improved/sqlclient/SQLShell.java 2008-05-19 20:28:44 UTC (rev 261) @@ -660,11 +660,12 @@ } if (match != null) { if (sub.length() > 0) { - if (Character.isUpperCase(sub.charAt(0))) { + /*if (Character.isUpperCase(sub.charAt(0))) { match = match.toUpperCase(); } else { match = match.toLowerCase(); - } + }*/ + match = DBConnector.getInstance().translateDbVar(match); } return match.substring(sub.length()); } |