From 953c35dc97ac53271c67338d786a7077b2ff319f Mon Sep 17 00:00:00 2001 From: Igor Burenkov Date: Mon, 8 Aug 2016 18:36:04 +0300 Subject: [PATCH 1/3] 125 Return column names in original case from .csv file Fix: CsvReader.getUpperColumnNames --- src/main/java/org/relique/jdbc/csv/CsvReader.java | 5 +++-- src/main/java/org/relique/jdbc/csv/CsvResultSet.java | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/relique/jdbc/csv/CsvReader.java b/src/main/java/org/relique/jdbc/csv/CsvReader.java index 38dad1fc..05011320 100644 --- a/src/main/java/org/relique/jdbc/csv/CsvReader.java +++ b/src/main/java/org/relique/jdbc/csv/CsvReader.java @@ -155,9 +155,10 @@ private String[] getUpperColumnNames() { if (upperColumnNames == null) { - upperColumnNames = getColumnNames(); + String columnNames[] = getColumnNames(); + upperColumnNames = new String[ columnNames.length ]; for (int i = 0; i < upperColumnNames.length; i++) - upperColumnNames[i] = upperColumnNames[i].toUpperCase(); + upperColumnNames[i] = columnNames[i].toUpperCase(); } return upperColumnNames; } diff --git a/src/main/java/org/relique/jdbc/csv/CsvResultSet.java b/src/main/java/org/relique/jdbc/csv/CsvResultSet.java index e5389238..b7c6d72f 100644 --- a/src/main/java/org/relique/jdbc/csv/CsvResultSet.java +++ b/src/main/java/org/relique/jdbc/csv/CsvResultSet.java @@ -1417,12 +1417,14 @@ public ResultSetMetaData getMetaData() throws SQLException */ HashSet allReaderColumns = new HashSet(); HashMap env = new HashMap(); + Map originalColumnNames = new HashMap(); for(int i=0; i Date: Mon, 8 Aug 2016 19:43:32 +0300 Subject: [PATCH 2/3] Fix: compilation under jdk 1.7 Fix: TestCsvDriver test for column name proper case --- src/main/java/Test.java | 39 +++++++++++++++++++ .../org/relique/jdbc/csv/CsvResultSet.java | 6 ++- .../org/relique/jdbc/csv/TestCsvDriver.java | 22 +++++------ 3 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 src/main/java/Test.java diff --git a/src/main/java/Test.java b/src/main/java/Test.java new file mode 100644 index 00000000..5f46f293 --- /dev/null +++ b/src/main/java/Test.java @@ -0,0 +1,39 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + + +import java.sql.*; +import org.relique.jdbc.csv.CsvDriver; + +public class Test +{ + public static void main(String[] args) throws Exception + { + // Load the driver. + Class.forName("org.relique.jdbc.csv.CsvDriver"); + + // Create a connection. The first command line parameter is + // the directory containing the .csv files. + // A single connection is thread-safe for use by several threads. + //Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + args[0]); + Connection conn = DriverManager.getConnection("jdbc:relique:csv:c:\\tmpbox\\CSV_relique2\\data\\"); + + // Create a Statement object to execute the query with. + // A Statement is not thread-safe. + Statement stmt = conn.createStatement(); + + // Select the ID and NAME columns from sample.csv + //ResultSet results = stmt.executeQuery("SELECT nAme as NaMe FROM csv2000 group by nAme order by namE desc");// group by Name"); + ResultSet results = stmt.executeQuery("SELECT NAME FROM csv2000 group by nAme order by namE desc");// group by Name"); + // Dump out the results to a CSV file with the same format + // using CsvJdbc helper function + boolean append = true; + CsvDriver.writeToCsv(results, System.out, append); + + // Clean up + conn.close(); + } +} diff --git a/src/main/java/org/relique/jdbc/csv/CsvResultSet.java b/src/main/java/org/relique/jdbc/csv/CsvResultSet.java index b7c6d72f..4d5c99bf 100644 --- a/src/main/java/org/relique/jdbc/csv/CsvResultSet.java +++ b/src/main/java/org/relique/jdbc/csv/CsvResultSet.java @@ -1443,7 +1443,11 @@ public ResultSetMetaData getMetaData() throws SQLException for(int i=0; i Date: Mon, 8 Aug 2016 19:53:40 +0300 Subject: [PATCH 3/3] Remove drafts --- src/main/java/Test.java | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 src/main/java/Test.java diff --git a/src/main/java/Test.java b/src/main/java/Test.java deleted file mode 100644 index 5f46f293..00000000 --- a/src/main/java/Test.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ - - -import java.sql.*; -import org.relique.jdbc.csv.CsvDriver; - -public class Test -{ - public static void main(String[] args) throws Exception - { - // Load the driver. - Class.forName("org.relique.jdbc.csv.CsvDriver"); - - // Create a connection. The first command line parameter is - // the directory containing the .csv files. - // A single connection is thread-safe for use by several threads. - //Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + args[0]); - Connection conn = DriverManager.getConnection("jdbc:relique:csv:c:\\tmpbox\\CSV_relique2\\data\\"); - - // Create a Statement object to execute the query with. - // A Statement is not thread-safe. - Statement stmt = conn.createStatement(); - - // Select the ID and NAME columns from sample.csv - //ResultSet results = stmt.executeQuery("SELECT nAme as NaMe FROM csv2000 group by nAme order by namE desc");// group by Name"); - ResultSet results = stmt.executeQuery("SELECT NAME FROM csv2000 group by nAme order by namE desc");// group by Name"); - // Dump out the results to a CSV file with the same format - // using CsvJdbc helper function - boolean append = true; - CsvDriver.writeToCsv(results, System.out, append); - - // Clean up - conn.close(); - } -}