src/main/java/org/embulk/output/jdbc/setter/ColumnSetterFactory.java in embulk-output-jdbc-0.7.11 vs src/main/java/org/embulk/output/jdbc/setter/ColumnSetterFactory.java in embulk-output-jdbc-0.7.12

- old
+ new

@@ -1,11 +1,15 @@ package org.embulk.output.jdbc.setter; +import com.google.common.base.Optional; import java.util.Calendar; import java.util.Locale; import java.sql.Types; import org.joda.time.DateTimeZone; +import org.embulk.config.ConfigSource; +import org.embulk.config.Task; +import org.embulk.spi.Exec; import org.embulk.spi.time.TimestampFormatter; import org.embulk.output.jdbc.BatchInsert; import org.embulk.output.jdbc.JdbcColumn; import org.embulk.output.jdbc.JdbcColumnOption; import org.embulk.config.ConfigException; @@ -71,15 +75,22 @@ default: throw new ConfigException(String.format("Unknown value_type '%s' for column '%s'", option.getValueType(), column.getName())); } } + private static interface FormatterIntlTask extends Task, TimestampFormatter.Task {} + private static interface FormatterIntlColumnOption extends Task, TimestampFormatter.TimestampColumnOption {} + protected TimestampFormatter newTimestampFormatter(JdbcColumnOption option) { + // TODO: Switch to a newer TimestampFormatter constructor after a reasonable interval. + // Traditional constructor is used here for compatibility. + final ConfigSource configSource = Exec.newConfigSource(); + configSource.set("format", option.getTimestampFormat().getFormat()); + configSource.set("timezone", getTimeZone(option)); return new TimestampFormatter( - option.getJRuby(), - option.getTimestampFormat().getFormat(), - getTimeZone(option)); + Exec.newConfigSource().loadConfig(FormatterIntlTask.class), + Optional.fromNullable(configSource.loadConfig(FormatterIntlColumnOption.class))); } protected Calendar newCalendar(JdbcColumnOption option) { return Calendar.getInstance(getTimeZone(option).toTimeZone(), Locale.ENGLISH);