class Embulk::PageBuilder

Public Class Methods

new(schema, java_page_output=nil, java_dynamic_page_builder: nil) click to toggle source
# File lib/embulk/page_builder.rb, line 27
def initialize(schema, java_page_output=nil, java_dynamic_page_builder: nil)
  if java_page_output.nil? && java_dynamic_page_builder.nil?
    raise ArgumentError, 'PageBuilder.new must take either of java_page_output or java_dynamic_page_builder'
  end
  if java_page_output && java_dynamic_page_builder
    raise ArgumentError, 'PageBuilder.new must not take both java_page_output and java_dynamic_page_builder'
  end

  require 'msgpack'  # used at DynamicPageBuilder.set(Value)

  if java_page_output
    # TODO get task as an argument
    task = Java::SPI::Exec.newConfigSource.load_config(Java::DynamicPageBuilder::BuilderTask.java_class)
    @page_builder = Java::DynamicPageBuilder.createWithTimestampMetadataFromBuilderTask(
        task, Java::Injected::BufferAllocator, schema.to_java, java_page_output)
  else
    @page_builder = java_dynamic_page_builder
  end

  @schema = schema
end

Public Instance Methods

[](index_or_column) click to toggle source
# File lib/embulk/page_builder.rb, line 60
def [](index_or_column)
  case index_or_column
  when Integer
    @page_builder.column_or_null(index_or_column)
  when Column
    @page_builder.column_or_null(index_or_column.index)
  else
    @page_builder.column_or_null(index_or_column)
  end
end
add(record) click to toggle source
# File lib/embulk/page_builder.rb, line 49
def add(record)
  i = 0
  m = record.size
  while i < m
    @page_builder.column(i).set(record[i])
    i += 1
  end
  @page_builder.addRecord
  nil
end
add!() click to toggle source
# File lib/embulk/page_builder.rb, line 93
def add!
  @page_builder.add_record
end
close() click to toggle source
# File lib/embulk/page_builder.rb, line 105
def close
  @page_builder.close
end
column(index_or_column) click to toggle source
# File lib/embulk/page_builder.rb, line 71
def column(index_or_column)
  case index_or_column
  when Integer
    @page_builder.column(index_or_column)
  when Column
    @page_builder.column(index_or_column.index)
  else
    @page_builder.lookupColumn(index_or_column)
  end
end
column_or_skip(index_or_column) click to toggle source
# File lib/embulk/page_builder.rb, line 82
def column_or_skip(index_or_column)
  case index_or_column
  when Integer
    @page_builder.column_or_skip(index_or_column)
  when Column
    @page_builder.column_or_skip(index_or_column.index)
  else
    @page_builder.column_or_skip(index_or_column)
  end
end
finish() click to toggle source
# File lib/embulk/page_builder.rb, line 101
def finish
  @page_builder.finish
end
flush() click to toggle source
# File lib/embulk/page_builder.rb, line 97
def flush
  @page_builder.flush
end