Mechtilde Stehmann pushed to branch upstream at Debian Java Maintainers / 
csvjdbc


Commits:
6f7b560d by Mechtilde at 2019-09-09T17:59:38Z
New upstream version 1.0.35+ds
- - - - -


5 changed files:

- build/build.xml
- pom.xml
- src/main/java/org/relique/jdbc/csv/CsvStatement.java
- src/test/java/org/relique/jdbc/csv/TestCsvDriver.java
- + src/testdata/utf8_bom.csv


Changes:

=====================================
build/build.xml
=====================================
@@ -36,7 +36,7 @@
   <!-- =================================================================== -->
   <property name="TALK" value="false" />
   <property name="name" value="csvjdbc"/>
-  <property name="rel" value="1.0-33"/>
+  <property name="rel" value="1.0-35"/>
   <property name="rel.name" value="${name}-${rel}"/>
   <property name="build.dir" value="../build"/>
   <property name="src.dir" value="../src"/>


=====================================
pom.xml
=====================================
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>net.sourceforge.csvjdbc</groupId>
   <artifactId>csvjdbc</artifactId>
-  <version>1.0.34</version>
+  <version>1.0.35</version>
   <packaging>jar</packaging>
   <name>CsvJdbc</name>
   <description>a Java JDBC driver for reading comma-separated-value 
files</description>
@@ -18,7 +18,7 @@
 
   <scm>
     <connection>scm:git:ssh://git.code.sf.net/p/csvjdbc/code</connection>
-    <tag>csvjdbc-1.0.34</tag>
+    <tag>csvjdbc-1.0.35</tag>
     <url>http://sourceforge.net/p/csvjdbc/_list/git</url>
   </scm>
 


=====================================
src/main/java/org/relique/jdbc/csv/CsvStatement.java
=====================================
@@ -426,6 +426,32 @@ public class CsvStatement implements Statement
                                                input = new 
LineNumberReader(tableReader.getReader(this, tableName));
                                        }
 
+                                       String charset = 
connection.getCharset();
+                                       if (charset != null)
+                                       {
+                                               if 
(charset.equalsIgnoreCase("UTF-8"))
+                                               {
+                                                       /*
+                                                        * Microsoft Windows 
programs write the Byte Order Mark
+                                                        * (BOM) 0xEF 0xBB 0xBF 
at the start of UTF-8 text files.
+                                                        *
+                                                        * Java does not 
support this and returns these three
+                                                        * bytes as first bytes 
in the file, so we have to skip
+                                                        * them manually, if 
they exist.
+                                                        */
+                                                       input.mark(1);
+                                                       int bom = input.read();
+                                                       if (bom != 0xFEFF)
+                                                       {
+                                                               /*
+                                                                * First 
character is not a BOM,
+                                                                * so reset 
back to start of file.
+                                                                */
+                                                               input.reset();
+                                                       }
+                                               }
+                                       }
+
                                        String headerline = 
connection.getHeaderline(tableName);
                                        CsvRawReader rawReader = new 
CsvRawReader(input,
                                                tableName,


=====================================
src/test/java/org/relique/jdbc/csv/TestCsvDriver.java
=====================================
@@ -2727,6 +2727,28 @@ public class TestCsvDriver
                assertFalse(results.next());
        }
 
+       @Test
+       public void testSkippingUtf8ByteOrderMark() throws SQLException, 
ParseException
+       {
+               Properties props = new Properties();
+               props.put("charset", "UTF-8");
+
+               /*
+                * Check that the 3 byte Byte Order Mark at start of file is 
skipped.
+                */
+               Connection conn = 
DriverManager.getConnection("jdbc:relique:csv:"
+                               + filePath, props);
+               Statement stmt = conn.createStatement();
+               ResultSet results = stmt.executeQuery("SELECT * FROM utf8_bom");
+
+               assertTrue(results.next());
+               ResultSetMetaData metadata = results.getMetaData();
+               assertEquals("name of column 1 is incorrect", "foo", 
metadata.getColumnName(1));
+               assertEquals("name of column 2 is incorrect", "bar", 
metadata.getColumnName(2));
+               assertEquals("Incorrect value 1", "1", results.getString(1));
+               assertEquals("Incorrect value 2", "3", results.getString(2));
+       }
+
        @Test
        public void testSkippingLeadingLines() throws SQLException
        {


=====================================
src/testdata/utf8_bom.csv
=====================================
@@ -0,0 +1,3 @@
+"foo","bar","b☺z"
+1,3,5
+2,4,6



View it on GitLab: 
https://salsa.debian.org/java-team/csvjdbc/commit/6f7b560d4e50eb9e3c88dfa6a866a14597cb37b5

-- 
View it on GitLab: 
https://salsa.debian.org/java-team/csvjdbc/commit/6f7b560d4e50eb9e3c88dfa6a866a14597cb37b5
You're receiving this email because of your account on salsa.debian.org.


_______________________________________________
pkg-java-commits mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to