Class: Embulk::Schema
- Inherits:
-
Array
- Object
- Array
- Embulk::Schema
- Defined in:
- lib/embulk/schema.rb
Instance Attribute Summary collapse
-
#names ⇒ Object
readonly
Returns the value of attribute names.
-
#types ⇒ Object
readonly
Returns the value of attribute types.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(src) ⇒ Schema
constructor
A new instance of Schema.
- #java_object ⇒ Object
- #read_record(page_reader) ⇒ Object
- #write_record(page_builder, record) ⇒ Object
Constructor Details
#initialize(src) ⇒ Schema
Returns a new instance of Schema.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/embulk/schema.rb', line 6 def initialize(src) super record_reader_script = "lambda do |reader|\n" record_reader_script << "record = []\n" each do |column| column_script = case column.type when :boolean "record << reader.getBoolean(#{column.index})" when :long "record << reader.getLong(#{column.index})" when :double "record << reader.getDouble(#{column.index})" when :string "record << reader.getString(#{column.index})" when :timestamp "record << reader.getTimestamp(#{column.index}).getRubyTime(JRuby.runtime)" else raise "Unknown type #{column.type.inspect}" end record_reader_script << column_script << "\n" end record_reader_script << "record\n" record_reader_script << "end" @record_reader = eval(record_reader_script) record_writer_script = "lambda do |builder,record|\n" record_writer_script << "java_timestamp_class = ::Embulk::Java::Timestamp\n" each do |column| column_script = case column.type when :boolean "builder.setBoolean(#{column.index}, record[#{column.index}])" when :long "builder.setLong(#{column.index}, record[#{column.index}])" when :double "builder.setDouble(#{column.index}, record[#{column.index}])" when :string "builder.setString(#{column.index}, record[#{column.index}])" when :timestamp "builder.setTimestamp(#{column.index}, java_timestamp_class.fromRubyTime(record[#{column.index}]))" else raise "Unknown type #{column.type.inspect}" end record_writer_script << column_script << "\n" end record_writer_script << "builder.addRecord\n" record_writer_script << "end" @record_writer = eval(record_writer_script) @names = map {|c| c.name } @types = map {|c| c.type } freeze end |
Instance Attribute Details
#names ⇒ Object (readonly)
Returns the value of attribute names.
63 64 65 |
# File 'lib/embulk/schema.rb', line 63 def names @names end |
#types ⇒ Object (readonly)
Returns the value of attribute types.
63 64 65 |
# File 'lib/embulk/schema.rb', line 63 def types @types end |
Class Method Details
.from_java_object(java_schema) ⇒ Object
74 75 76 |
# File 'lib/embulk/schema.rb', line 74 def self.from_java_object(java_schema) new java_schema.getColumns.map {|column| Column.from_java_object(column) } end |
Instance Method Details
#java_object ⇒ Object
78 79 80 81 |
# File 'lib/embulk/schema.rb', line 78 def java_object columns = self.map {|column| column.java_object } Java::Schema.new(columns) end |
#read_record(page_reader) ⇒ Object
65 66 67 |
# File 'lib/embulk/schema.rb', line 65 def read_record(page_reader) @record_reader.call(page_reader) end |
#write_record(page_builder, record) ⇒ Object
69 70 71 |
# File 'lib/embulk/schema.rb', line 69 def write_record(page_builder, record) @record_writer.call(page_builder, record) end |