src/main/java/org/embulk/output/jdbc/setter/ColumnSetterFactory.java in embulk-output-jdbc-0.2.3 vs src/main/java/org/embulk/output/jdbc/setter/ColumnSetterFactory.java in embulk-output-jdbc-0.2.4

- old
+ new

@@ -1,137 +1,137 @@ -package org.embulk.output.jdbc.setter; - -import java.sql.Types; -import org.embulk.spi.time.TimestampFormatter; -import org.embulk.spi.PageReader; -import org.embulk.output.jdbc.BatchInsert; -import org.embulk.output.jdbc.JdbcColumn; - -public class ColumnSetterFactory -{ - protected final BatchInsert batch; - protected final PageReader pageReader; - protected final TimestampFormatter timestampFormatter; - - public ColumnSetterFactory(BatchInsert batch, PageReader pageReader, - TimestampFormatter timestampFormatter) - { - this.batch = batch; - this.pageReader = pageReader; - this.timestampFormatter = timestampFormatter; - } - - public SkipColumnSetter newSkipColumnSetter() - { - return new SkipColumnSetter(batch, pageReader); - } - - public ColumnSetter newColumnSetter(JdbcColumn column) - { - switch(column.getSqlType()) { - //// TODO - // setByte - //case Types.TINYINT: - // return new ByteColumnSetter(batch, pageReader, column); - - //// TODO - //// setShort - //case Types.SMALLINT: - // return new ShortColumnSetter(batch, pageReader, column); - - //// TODO - //// setInt - //case Types.INTEGER: - // return new IntColumnSetter(batch, pageReader, column); - - // setLong - case Types.BIGINT: - return new LongColumnSetter(batch, pageReader, column); - - // setDouble - case Types.DOUBLE: - case Types.FLOAT: - return new DoubleColumnSetter(batch, pageReader, column); - - // TODO - //// setFloat - //case Types.REAL: - // return new FloatColumnSetter(batch, pageReader, column); - - // setBool - case Types.BOOLEAN: - case Types.BIT: // JDBC BIT is boolean, unlike SQL-92 - return new BooleanColumnSetter(batch, pageReader, column); - - // setString, Clob - case Types.CHAR: - case Types.VARCHAR: - case Types.LONGVARCHAR: - case Types.CLOB: - return new StringColumnSetter(batch, pageReader, column, timestampFormatter); - - // TODO - //// setNString, NClob - //case Types.NCHAR: - //case Types.NVARCHAR: - //case Types.LONGNVARCHAR: - // return new NStringColumnSetter(batch, pageReader, column); - - // TODO - //// setBytes Blob - //case Types.BINARY: - //case Types.VARBINARY: - //case Types.LONGVARBINARY: - //case Types.BLOB: - // return new BytesColumnSetter(batch, pageReader, column); - - // Time - //case Types.DATE: - // return new SqlDateColumnSetter(batch, pageReader, column); // TODO - //case Types.TIME: - // return new SqlTimeColumnSetter(batch, pageReader, column); // TODO - case Types.TIMESTAMP: - return new SqlTimestampColumnSetter(batch, pageReader, column); - - // Null - case Types.NULL: - return new NullColumnSetter(batch, pageReader, column); - - // TODO - //// BigDecimal - //case Types.NUMERIC: - //case Types.DECIMAL: - // return new BigDecimalColumnSetter(batch, pageReader, column); - - // others - case Types.ARRAY: // array - case Types.STRUCT: // map - case Types.REF: - case Types.DATALINK: - case Types.SQLXML: // XML - case Types.ROWID: - case Types.DISTINCT: - case Types.JAVA_OBJECT: - case Types.OTHER: - default: - throw unsupportedOperationException(column); - } - } - - //private static String[] UNSUPPORTED = new String[] { - // "ARRAY", - // "STRUCT", - // "REF", - // "DATALINK", - // "SQLXML", - // "ROWID", - // "DISTINCT", - // "OTHER", - //}; - - private static UnsupportedOperationException unsupportedOperationException(JdbcColumn column) - { - throw new UnsupportedOperationException( - String.format("Unsupported type %s (sqlType=%d, size=%d, scale=%d)", - column.getTypeName(), column.getSqlType(), column.getSizeTypeParameter(), column.getScaleTypeParameter())); - } -} +package org.embulk.output.jdbc.setter; + +import java.sql.Types; +import org.embulk.spi.time.TimestampFormatter; +import org.embulk.spi.PageReader; +import org.embulk.output.jdbc.BatchInsert; +import org.embulk.output.jdbc.JdbcColumn; + +public class ColumnSetterFactory +{ + protected final BatchInsert batch; + protected final PageReader pageReader; + protected final TimestampFormatter timestampFormatter; + + public ColumnSetterFactory(BatchInsert batch, PageReader pageReader, + TimestampFormatter timestampFormatter) + { + this.batch = batch; + this.pageReader = pageReader; + this.timestampFormatter = timestampFormatter; + } + + public SkipColumnSetter newSkipColumnSetter() + { + return new SkipColumnSetter(batch, pageReader); + } + + public ColumnSetter newColumnSetter(JdbcColumn column) + { + switch(column.getSqlType()) { + //// TODO + // setByte + //case Types.TINYINT: + // return new ByteColumnSetter(batch, pageReader, column); + + //// TODO + //// setShort + //case Types.SMALLINT: + // return new ShortColumnSetter(batch, pageReader, column); + + //// TODO + //// setInt + //case Types.INTEGER: + // return new IntColumnSetter(batch, pageReader, column); + + // setLong + case Types.BIGINT: + return new LongColumnSetter(batch, pageReader, column); + + // setDouble + case Types.DOUBLE: + case Types.FLOAT: + return new DoubleColumnSetter(batch, pageReader, column); + + // TODO + //// setFloat + //case Types.REAL: + // return new FloatColumnSetter(batch, pageReader, column); + + // setBool + case Types.BOOLEAN: + case Types.BIT: // JDBC BIT is boolean, unlike SQL-92 + return new BooleanColumnSetter(batch, pageReader, column); + + // setString, Clob + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + case Types.CLOB: + return new StringColumnSetter(batch, pageReader, column, timestampFormatter); + + // TODO + //// setNString, NClob + //case Types.NCHAR: + //case Types.NVARCHAR: + //case Types.LONGNVARCHAR: + // return new NStringColumnSetter(batch, pageReader, column); + + // TODO + //// setBytes Blob + //case Types.BINARY: + //case Types.VARBINARY: + //case Types.LONGVARBINARY: + //case Types.BLOB: + // return new BytesColumnSetter(batch, pageReader, column); + + // Time + //case Types.DATE: + // return new SqlDateColumnSetter(batch, pageReader, column); // TODO + //case Types.TIME: + // return new SqlTimeColumnSetter(batch, pageReader, column); // TODO + case Types.TIMESTAMP: + return new SqlTimestampColumnSetter(batch, pageReader, column); + + // Null + case Types.NULL: + return new NullColumnSetter(batch, pageReader, column); + + // TODO + //// BigDecimal + //case Types.NUMERIC: + //case Types.DECIMAL: + // return new BigDecimalColumnSetter(batch, pageReader, column); + + // others + case Types.ARRAY: // array + case Types.STRUCT: // map + case Types.REF: + case Types.DATALINK: + case Types.SQLXML: // XML + case Types.ROWID: + case Types.DISTINCT: + case Types.JAVA_OBJECT: + case Types.OTHER: + default: + throw unsupportedOperationException(column); + } + } + + //private static String[] UNSUPPORTED = new String[] { + // "ARRAY", + // "STRUCT", + // "REF", + // "DATALINK", + // "SQLXML", + // "ROWID", + // "DISTINCT", + // "OTHER", + //}; + + private static UnsupportedOperationException unsupportedOperationException(JdbcColumn column) + { + throw new UnsupportedOperationException( + String.format("Unsupported type %s (sqlType=%d, size=%d, scale=%d)", + column.getTypeName(), column.getSqlType(), column.getSizeTypeParameter(), column.getScaleTypeParameter())); + } +}