|
1 | 1 | package org.embulk.output.jdbc.setter;
|
2 | 2 |
|
3 |
| -import java.util.Calendar; |
4 |
| -import java.util.Locale; |
5 |
| -import java.util.TimeZone; |
| 3 | +import java.time.ZoneId; |
6 | 4 | import java.util.Optional;
|
7 | 5 | import java.sql.Types;
|
8 | 6 | import org.embulk.config.ConfigSource;
|
@@ -59,37 +57,37 @@ public ColumnSetter newColumnSetter(JdbcColumn column, JdbcColumnOption option)
|
59 | 57 | case "nstring":
|
60 | 58 | return new NStringColumnSetter(batch, column, newDefaultValueSetter(column, option), newTimestampFormatter(option));
|
61 | 59 | case "date":
|
62 |
| - return new SqlDateColumnSetter(batch, column, newDefaultValueSetter(column, option), newCalendar(option)); |
| 60 | + return new SqlDateColumnSetter(batch, column, newDefaultValueSetter(column, option), newZoneId(option)); |
63 | 61 | case "time":
|
64 |
| - return new SqlTimeColumnSetter(batch, column, newDefaultValueSetter(column, option), newCalendar(option)); |
| 62 | + return new SqlTimeColumnSetter(batch, column, newDefaultValueSetter(column, option), newZoneId(option)); |
65 | 63 | case "timestamp":
|
66 |
| - return new SqlTimestampColumnSetter(batch, column, newDefaultValueSetter(column, option), newCalendar(option)); |
| 64 | + return new SqlTimestampColumnSetter(batch, column, newDefaultValueSetter(column, option), newZoneId(option)); |
67 | 65 | case "decimal":
|
68 | 66 | return new BigDecimalColumnSetter(batch, column, newDefaultValueSetter(column, option));
|
69 | 67 | case "json":
|
70 | 68 | return new JsonColumnSetter(batch, column, newDefaultValueSetter(column, option));
|
71 | 69 | case "null":
|
72 | 70 | return new NullColumnSetter(batch, column, newDefaultValueSetter(column, option));
|
73 | 71 | case "pass":
|
74 |
| - return new PassThroughColumnSetter(batch, column, newDefaultValueSetter(column, option), newCalendar(option)); |
| 72 | + return new PassThroughColumnSetter(batch, column, newDefaultValueSetter(column, option), newZoneId(option)); |
75 | 73 | default:
|
76 | 74 | throw new ConfigException(String.format("Unknown value_type '%s' for column '%s'", option.getValueType(), column.getName()));
|
77 | 75 | }
|
78 | 76 | }
|
79 | 77 |
|
80 |
| - protected TimestampFormatter newTimestampFormatter(JdbcColumnOption option) |
| 78 | + protected final TimestampFormatter newTimestampFormatter(JdbcColumnOption option) |
81 | 79 | {
|
82 | 80 | final String format = option.getTimestampFormat();
|
83 | 81 | final String timezone = option.getTimeZone().orElse(this.defaultTimeZone);
|
84 | 82 | return TimestampFormatter.builder(format, true).setDefaultZoneFromString(timezone).build();
|
85 | 83 | }
|
86 | 84 |
|
87 |
| - protected Calendar newCalendar(JdbcColumnOption option) |
| 85 | + protected final ZoneId newZoneId(final JdbcColumnOption option) |
88 | 86 | {
|
89 |
| - return Calendar.getInstance(TimeZone.getTimeZone(getTimeZone(option)), Locale.ENGLISH); |
| 87 | + return ZoneId.of(this.getTimeZone(option)); |
90 | 88 | }
|
91 | 89 |
|
92 |
| - protected String getTimeZone(JdbcColumnOption option) |
| 90 | + protected final String getTimeZone(JdbcColumnOption option) |
93 | 91 | {
|
94 | 92 | return option.getTimeZone().orElse(defaultTimeZone);
|
95 | 93 | }
|
@@ -151,11 +149,11 @@ public ColumnSetter newCoalesceColumnSetter(JdbcColumn column, JdbcColumnOption
|
151 | 149 |
|
152 | 150 | // Time
|
153 | 151 | case Types.DATE:
|
154 |
| - return new SqlDateColumnSetter(batch, column, newDefaultValueSetter(column, option), newCalendar(option)); |
| 152 | + return new SqlDateColumnSetter(batch, column, newDefaultValueSetter(column, option), newZoneId(option)); |
155 | 153 | case Types.TIME:
|
156 |
| - return new SqlTimeColumnSetter(batch, column, newDefaultValueSetter(column, option), newCalendar(option)); |
| 154 | + return new SqlTimeColumnSetter(batch, column, newDefaultValueSetter(column, option), newZoneId(option)); |
157 | 155 | case Types.TIMESTAMP:
|
158 |
| - return new SqlTimestampColumnSetter(batch, column, newDefaultValueSetter(column, option), newCalendar(option)); |
| 156 | + return new SqlTimestampColumnSetter(batch, column, newDefaultValueSetter(column, option), newZoneId(option)); |
159 | 157 |
|
160 | 158 | // Null
|
161 | 159 | case Types.NULL:
|
|
0 commit comments