Sha256: dd94eb50795309236a410e8f2ff95583dfb8034268bd5c6c20c7bb1442faf957

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

package org.embulk.filter.add_time.reader;

import org.embulk.filter.add_time.converter.ValueConverter;
import org.embulk.spi.Column;
import org.embulk.spi.PageBuilder;
import org.embulk.spi.PageReader;

public abstract class AbstractColumnReader<T extends AbstractColumnReader>
        implements ColumnReader<T>
{
    protected final ValueConverter valueConverter;
    protected boolean isNull = false;

    protected AbstractColumnReader(ValueConverter valueConverter)
    {
        this.valueConverter = valueConverter;
    }

    @Override
    public void readValue(Column column, PageReader pageReader)
    {
        if (!(isNull = pageReader.isNull(column))) {
            readNonNullValue(column, pageReader);
        }
    }

    protected abstract void readNonNullValue(Column column, PageReader pageReader);

    @Override
    public void convertValue(Column column, PageBuilder pageBuilder)
    {
        try {
            if (isNull) {
                valueConverter.convertNull(column, pageBuilder);
            }
            else {
                convertNonNullValue(column, pageBuilder);
            }
        }
        finally {
            isNull = false;
        }
    }

    protected abstract void convertNonNullValue(Column column, PageBuilder pageBuilder);

    @Override
    public void copyTo(T columnReader)
    {
        columnReader.isNull = this.isNull;
        copyValueTo(columnReader);
    }

    protected abstract void copyValueTo(T columnReader);
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
embulk-filter-add_time-0.2.0 src/main/java/org/embulk/filter/add_time/reader/AbstractColumnReader.java
embulk-filter-add_time-0.1.1 src/main/java/org/embulk/filter/add_time/reader/AbstractColumnReader.java
embulk-filter-add_time-0.1.0 src/main/java/org/embulk/filter/add_time/reader/AbstractColumnReader.java