Sha256: de6fb9b1fd631c24b51bbfcf31f87dcf2e4c46865fe29e76b55dd80daa67c8db

Contents?: true

Size: 1.52 KB

Versions: 3

Compression:

Stored size: 1.52 KB

Contents

package org.embulk.filter.calcite.adapter.page;

import org.apache.calcite.linq4j.Enumerator;
import org.embulk.filter.calcite.PageConverter;
import org.embulk.spi.Page;
import org.embulk.spi.PageReader;
import org.embulk.spi.Schema;

public class PageEnumerator implements Enumerator<Object[]> {

    private final Schema schema;
    private final PageConverter pageConverter;
    private final PageReader pageReader;

    /**
     * Creates an enumerator to read {@code Page} objects
     *
     * @param schema        a {@code Schema} that is used for reading {@code Page} objects.
     * @param pageConverter a converter to translate values from Embulk types to Calcite types.
     */
    public PageEnumerator(Schema schema, PageConverter pageConverter) {
        this.schema = schema;
        this.pageReader = new PageReader(schema);
        this.pageConverter = pageConverter;
    }

    public void setPage(Page page) {
        this.pageReader.setPage(page);
        this.pageConverter.setPageReader(pageReader);
    }

    @Override
    public Object[] current() {
        // this is called from org.apache.calcite.linq4j.EnumerableDefaults
        schema.visitColumns(pageConverter);
        return pageConverter.getRow();
    }

    @Override
    public boolean moveNext() {
        return pageReader.nextRecord();
    }

    @Override
    public void reset() {
        throw new UnsupportedOperationException();
    }

    @Override
    public void close() {
        if (pageReader != null) {
            pageReader.close();
        }
    }
}

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/adapter/page/PageEnumerator.java
embulk-filter-calcite-0.1.3 src/main/java/org/embulk/filter/calcite/adapter/page/PageEnumerator.java
embulk-filter-calcite-0.1.2 src/main/java/org/embulk/filter/calcite/adapter/page/PageEnumerator.java