Sha256: d5fd636d7a7a38ef478a8bdd12acb5f0e337040a94e39e9f04b694682a03ce14

Contents?: true

Size: 1.89 KB

Versions: 3

Compression:

Stored size: 1.89 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.type.Type;
import org.joda.time.DateTimeZone;

public class FilterColumnGetterFactory
        extends ColumnGetterFactory {

    private final DateTimeZone defaultTimeZone;

    /**
     * Creates a factory object to create {@code ColumnGetter}s for converting JdbcType to Embulk
     * type.
     *
     * @param to              a {@code PageBuilder} object that is passed to column getters.
     * @param defaultTimeZone a {@code DateTimeZone} object passed to timestamp column getters as
     *                        default.
     */
    public FilterColumnGetterFactory(PageBuilder to, DateTimeZone defaultTimeZone) {
        super(to, defaultTimeZone);
        // TODO make change super.defaultTimeZone field protected
        this.defaultTimeZone = defaultTimeZone;
    }

    @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 FilterTimestampColumnGetter(to,
                    toType,
                    option.getTimeZone().or(defaultTimeZone));
        } else {
            return super.newColumnGetter(con, task, column, option);
        }
    }
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
embulk-filter-calcite-0.2.0 src/main/java/org/embulk/filter/calcite/getter/FilterColumnGetterFactory.java
embulk-filter-calcite-0.1.3 src/main/java/org/embulk/filter/calcite/getter/FilterColumnGetterFactory.java
embulk-filter-calcite-0.1.2 src/main/java/org/embulk/filter/calcite/getter/FilterColumnGetterFactory.java