package com.googlecode.sqlsheet; import org.apache.commons.io.FileUtils; import org.junit.Assert; import org.junit.Test; import java.io.File; import java.sql.*; import java.util.Date; public class XlsDriverStreamingTest { @Test public void testConnect() throws Exception { Class.forName("com.googlecode.sqlsheet.Driver"); Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xls").getFile()); Statement stmt = conn.createStatement(); ResultSet results = stmt.executeQuery("SELECT * FROM \"2009\""); Assert.assertEquals(results.getMetaData().getColumnCount(), 3L); Long count = 0L; while (results.next()) { Assert.assertEquals(Double.class, results.getObject(1).getClass()); Assert.assertEquals(String.class, results.getObject(2).getClass()); Assert.assertEquals(java.sql.Date.class, results.getObject(3).getClass()); count++; } Assert.assertEquals(count.longValue(), 3L); results.close(); stmt.close(); conn.close(); } @Test public void testXlsConnectReadStream() throws Exception { Class.forName("com.googlecode.sqlsheet.Driver"); Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xls").getFile() + "?readStreaming=true"); Statement stmt = conn.createStatement(); ResultSet results = stmt.executeQuery("SELECT * FROM \"2009\""); Assert.assertEquals(3L, results.getMetaData().getColumnCount()); Long count = 0L; while (results.next()) { Assert.assertEquals(Double.class, results.getObject(1).getClass()); Assert.assertEquals(String.class, results.getObject(2).getClass()); Assert.assertEquals(Date.class, results.getObject(3).getClass()); count++; } Assert.assertEquals(3L, count.longValue()); results.close(); stmt.close(); conn.close(); } @Test public void testXlsxConnectReadStream() throws Exception { Class.forName("com.googlecode.sqlsheet.Driver"); Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xlsx").getFile() + "?readStreaming=true"); Statement stmt = conn.createStatement(); ResultSet results = stmt.executeQuery("SELECT * FROM \"2009\""); Assert.assertEquals(3L, results.getMetaData().getColumnCount()); Long count = 0L; while (results.next()) { Assert.assertEquals(Double.class, results.getObject(1).getClass()); Assert.assertEquals(String.class, results.getObject(2).getClass()); Assert.assertEquals(Date.class, results.getObject(3).getClass()); count++; } Assert.assertEquals(3L, count.longValue()); results.close(); stmt.close(); conn.close(); } @Test public void testXlsConnectReadStreamBigTable() throws Exception { Class.forName("com.googlecode.sqlsheet.Driver"); Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("big-grid.xls").getFile() + "?readStreaming=true"); Statement stmt = conn.createStatement(); ResultSet results = stmt.executeQuery("SELECT * FROM \"Big Grid\""); Assert.assertEquals(20L, results.getMetaData().getColumnCount()); Long count = 0L; while (results.next()) { Assert.assertEquals(String.class, results.getObject(1).getClass()); Assert.assertEquals(Double.class, results.getObject(2).getClass()); Assert.assertEquals(Double.class, results.getObject(3).getClass()); Assert.assertEquals(Double.class, results.getObject(4).getClass()); Assert.assertEquals(Date.class, results.getObject(5).getClass()); count++; } Assert.assertEquals(65535L, count.longValue()); results.close(); stmt.close(); conn.close(); } @Test public void testXlsxConnectReadStreamBigTable() throws Exception { Class.forName("com.googlecode.sqlsheet.Driver"); Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("big-grid.xlsx").getFile() + "?readStreaming=true"); Statement stmt = conn.createStatement(); ResultSet results = stmt.executeQuery("SELECT * FROM \"Big Grid\""); Assert.assertEquals(20L, results.getMetaData().getColumnCount()); Long count = 0L; while (results.next()) { Assert.assertEquals(String.class, results.getObject(1).getClass()); Assert.assertEquals(Double.class, results.getObject(2).getClass()); Assert.assertEquals(Double.class, results.getObject(3).getClass()); Assert.assertEquals(Double.class, results.getObject(4).getClass()); Assert.assertEquals(Date.class, results.getObject(5).getClass()); count++; } Assert.assertEquals(65535L, count.longValue()); results.close(); stmt.close(); conn.close(); } @Test public void testXlsConnectWriteStream() throws Exception { Class.forName("com.googlecode.sqlsheet.Driver"); File test = File.createTempFile("testXlsConnectWriteStream",".xlsx"); FileUtils.copyFile(new File(ClassLoader.getSystemResource("test.xlsx").getFile()),test); Connection writeConnection = DriverManager.getConnection("jdbc:xls:file:" + test.getPath() + "?writeStreaming=true"); Statement writeStatement = writeConnection.createStatement(); writeStatement.executeUpdate("CREATE TABLE TEST_INSERT(COL1 INT, COL2 VARCHAR(255), COL3 DATE)"); writeStatement.close(); PreparedStatement writeStatement2 = writeConnection.prepareStatement("INSERT INTO TEST_INSERT(COL1, COL2, COL3) VALUES(?,?,?)"); for(int i = 0; i<3;i++){ writeStatement2.setDouble(1, i); writeStatement2.setString(2, "Row" + i); writeStatement2.setDate(3, new java.sql.Date(new Date().getTime())); writeStatement2.execute(); } writeStatement2.close(); writeConnection.close(); Connection readConnection = DriverManager.getConnection("jdbc:xls:file:" + test.getPath() + "?readStreaming=true"); Statement readStatementstmt = readConnection.createStatement(); ResultSet results = readStatementstmt.executeQuery("SELECT * FROM TEST_INSERT"); Assert.assertEquals(3L, results.getMetaData().getColumnCount()); Long count = 0L; while (results.next()) { Assert.assertEquals(Double.class, results.getObject(1).getClass()); Assert.assertEquals(String.class, results.getObject(2).getClass()); Assert.assertEquals(Date.class, results.getObject(3).getClass()); count++; } Assert.assertEquals(3L, count.longValue()); results.close(); readStatementstmt.close(); readConnection.close(); Connection readConnection2 = DriverManager.getConnection("jdbc:xls:file:" + test.getPath()); Statement readStatementstmt2 = readConnection.createStatement(); ResultSet results2 = readStatementstmt.executeQuery("SELECT * FROM TEST_INSERT"); Assert.assertEquals(3L, results2.getMetaData().getColumnCount()); Long count2 = 0L; while (results2.next()) { Assert.assertEquals(Double.class, results2.getObject(1).getClass()); Assert.assertEquals(String.class, results2.getObject(2).getClass()); Assert.assertEquals(Date.class, results2.getObject(3).getClass()); count2++; } Assert.assertEquals(3L, count2.longValue()); results2.close(); readStatementstmt2.close(); readConnection2.close(); } }