Search in sources :

Example 1 with BooleanColumnSetter

use of org.embulk.spi.util.dynamic.BooleanColumnSetter 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);
}
Also used : TimestampFormatter(org.embulk.spi.time.TimestampFormatter) JsonType(org.embulk.spi.type.JsonType) LongType(org.embulk.spi.type.LongType) LongColumnSetter(org.embulk.spi.util.dynamic.LongColumnSetter) StringType(org.embulk.spi.type.StringType) TimestampParser(org.embulk.spi.time.TimestampParser) BooleanType(org.embulk.spi.type.BooleanType) ConfigException(org.embulk.config.ConfigException) JsonColumnSetter(org.embulk.spi.util.dynamic.JsonColumnSetter) JsonType(org.embulk.spi.type.JsonType) LongType(org.embulk.spi.type.LongType) TimestampType(org.embulk.spi.type.TimestampType) DoubleType(org.embulk.spi.type.DoubleType) Type(org.embulk.spi.type.Type) BooleanType(org.embulk.spi.type.BooleanType) StringType(org.embulk.spi.type.StringType) DoubleColumnSetter(org.embulk.spi.util.dynamic.DoubleColumnSetter) DoubleType(org.embulk.spi.type.DoubleType) TimestampType(org.embulk.spi.type.TimestampType) StringColumnSetter(org.embulk.spi.util.dynamic.StringColumnSetter) BooleanColumnSetter(org.embulk.spi.util.dynamic.BooleanColumnSetter) TimestampColumnSetter(org.embulk.spi.util.dynamic.TimestampColumnSetter)

Aggregations

ConfigException (org.embulk.config.ConfigException)1 TimestampFormatter (org.embulk.spi.time.TimestampFormatter)1 TimestampParser (org.embulk.spi.time.TimestampParser)1 BooleanType (org.embulk.spi.type.BooleanType)1 DoubleType (org.embulk.spi.type.DoubleType)1 JsonType (org.embulk.spi.type.JsonType)1 LongType (org.embulk.spi.type.LongType)1 StringType (org.embulk.spi.type.StringType)1 TimestampType (org.embulk.spi.type.TimestampType)1 Type (org.embulk.spi.type.Type)1 BooleanColumnSetter (org.embulk.spi.util.dynamic.BooleanColumnSetter)1 DoubleColumnSetter (org.embulk.spi.util.dynamic.DoubleColumnSetter)1 JsonColumnSetter (org.embulk.spi.util.dynamic.JsonColumnSetter)1 LongColumnSetter (org.embulk.spi.util.dynamic.LongColumnSetter)1 StringColumnSetter (org.embulk.spi.util.dynamic.StringColumnSetter)1 TimestampColumnSetter (org.embulk.spi.util.dynamic.TimestampColumnSetter)1