use of org.embulk.spi.type.TimestampType in project embulk by embulk.
the class Timestamps method newTimestampColumnFormatters.
public static TimestampFormatter[] newTimestampColumnFormatters(TimestampFormatter.Task formatterTask, Schema schema, Map<String, ? extends TimestampFormatter.TimestampColumnOption> columnOptions) {
TimestampFormatter[] formatters = new TimestampFormatter[schema.getColumnCount()];
int i = 0;
for (Column column : schema.getColumns()) {
if (column.getType() instanceof TimestampType) {
Optional<TimestampFormatter.TimestampColumnOption> option = Optional.fromNullable(columnOptions.get(column.getName()));
formatters[i] = TimestampFormatter.of(formatterTask, option);
}
i++;
}
return formatters;
}
use of org.embulk.spi.type.TimestampType in project embulk by embulk.
the class DynamicColumnSetterFactory method newColumnSetter.
public DynamicColumnSetter newColumnSetter(PageBuilder pageBuilder, Column column) {
Type type = column.getType();
if (type instanceof BooleanType) {
return new BooleanColumnSetter(pageBuilder, column, defaultValue);
} else if (type instanceof LongType) {
return new LongColumnSetter(pageBuilder, column, defaultValue);
} else if (type instanceof DoubleType) {
return new DoubleColumnSetter(pageBuilder, column, defaultValue);
} else if (type instanceof StringType) {
TimestampFormatter formatter = TimestampFormatter.of(getTimestampFormatForFormatter(column), getTimeZoneId(column));
return new StringColumnSetter(pageBuilder, column, defaultValue, formatter);
} else if (type instanceof TimestampType) {
// TODO use flexible time format like Ruby's Time.parse
final TimestampParser parser;
if (this.useColumnForTimestampMetadata) {
final TimestampType timestampType = (TimestampType) type;
// https://github.com/embulk/embulk/issues/935
parser = TimestampParser.of(getFormatFromTimestampTypeWithDepracationSuppressed(timestampType), getTimeZoneId(column));
} else {
parser = TimestampParser.of(getTimestampFormatForParser(column), getTimeZoneId(column));
}
return new TimestampColumnSetter(pageBuilder, column, defaultValue, parser);
} else if (type instanceof JsonType) {
TimestampFormatter formatter = TimestampFormatter.of(getTimestampFormatForFormatter(column), getTimeZoneId(column));
return new JsonColumnSetter(pageBuilder, column, defaultValue, formatter);
}
throw new ConfigException("Unknown column type: " + type);
}
use of org.embulk.spi.type.TimestampType in project embulk by embulk.
the class Timestamps method newTimestampColumnParsers.
public static TimestampParser[] newTimestampColumnParsers(TimestampParser.Task parserTask, SchemaConfig schema) {
TimestampParser[] parsers = new TimestampParser[schema.getColumnCount()];
int i = 0;
for (ColumnConfig column : schema.getColumns()) {
if (column.getType() instanceof TimestampType) {
TimestampColumnOption option = column.getOption().loadConfig(TimestampColumnOption.class);
parsers[i] = TimestampParser.of(parserTask, option);
}
i++;
}
return parsers;
}
Aggregations