Sha256: 1216914ef1817af99053ee020944bbd2593c120a10077be7d3eb9020b63ccfcf

Contents?: true

Size: 1.79 KB

Versions: 1

Compression:

Stored size: 1.79 KB

Contents

package org.embulk.filter.calcite.getter;

import org.embulk.input.jdbc.AbstractJdbcInputPlugin;
import org.embulk.input.jdbc.JdbcColumn;
import org.embulk.input.jdbc.JdbcColumnOption;
import org.embulk.input.jdbc.JdbcInputConnection;
import org.embulk.input.jdbc.getter.ColumnGetter;
import org.embulk.input.jdbc.getter.ColumnGetterFactory;
import org.embulk.spi.PageBuilder;
import org.embulk.spi.time.TimestampFormatter;
import org.embulk.spi.type.Type;
import org.joda.time.DateTimeZone;

public class FilterColumnGetterFactory
        extends ColumnGetterFactory
{
    private final DateTimeZone defaultTimeZone;

    public FilterColumnGetterFactory(PageBuilder to, DateTimeZone defaultTimeZone)
    {
        super(to, defaultTimeZone);
        this.defaultTimeZone = defaultTimeZone; // TODO make change super.defaultTimeZone field protected
    }

    @Override
    public ColumnGetter newColumnGetter(JdbcInputConnection con, AbstractJdbcInputPlugin.PluginTask task, JdbcColumn column, JdbcColumnOption option)
    {
        String valueType = option.getValueType();
        Type toType = getToType(option);
        if (valueType.equals("coalesce") && sqlTypeToValueType(column, column.getSqlType()).equals("timestamp")) {
            return new UTCTimestampColumnGetter(to, toType, newTimestampFormatter(option, "%Y-%m-%d"));
        }
        else {
            return super.newColumnGetter(con, task, column, option);
        }
    }

    private TimestampFormatter newTimestampFormatter(JdbcColumnOption option, String defaultTimestampFormat)
    {
        return new TimestampFormatter(
                option.getJRuby(),
                option.getTimestampFormat().isPresent() ? option.getTimestampFormat().get().getFormat() : defaultTimestampFormat,
                option.getTimeZone().or(defaultTimeZone));
    }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
embulk-filter-calcite-0.1.0 src/main/java/org/embulk/filter/calcite/getter/FilterColumnGetterFactory.java