Sha256: d407dc5c5f5ea47511009daad4893f8d0c00afed672a8c7b8e798770a23baba6

Contents?: true

Size: 1.78 KB

Versions: 40

Compression:

Stored size: 1.78 KB

Contents

module Embulk

  class Column < Struct.new(:index, :name, :type, :format)
    def initialize(*args)
      if args.length == 1 && args[0].is_a?(Hash)
        # initialize(hash)
        hash = args.first
        super(hash[:index], hash[:name], hash[:type], hash[:format])
      else
        # initialize(index, name, type, format)
        super(*args)
      end
    end

    def to_json(*args)
      if type == :timestamp && format
        {"index"=>index, "name"=>name, "type"=>type, "format"=>format}.to_json(*args)
      else
        {"index"=>index, "name"=>name, "type"=>type}.to_json(*args)
      end
    end

    if Embulk.java?
      def self.from_java(java_column)
        type = Type.from_java(java_column.getType)
        if type == :timestamp
          format = java_column.getType.getFormat
        else
          format = nil
        end

        Column.new(java_column.getIndex, java_column.getName, type, format)
      end

      def to_java
        if type == :timestamp && format
          Java::Column.new(index, name, Type.new_java_type(type).withFormat(format))
        else
          Java::Column.new(index, name, Type.new_java_type(type))
        end
      end
    end
  end

  module Type
    if Embulk.java?
      def self.from_java(java_type)
        java_type.getName.to_sym
      end

      def self.new_java_type(ruby_type)
        case ruby_type
        when :boolean
          Java::Types::BOOLEAN
        when :long
          Java::Types::LONG
        when :double
          Java::Types::DOUBLE
        when :string
          Java::Types::STRING
        when :timestamp
          Java::Types::TIMESTAMP
        else
          raise ArgumentError, "Unknown type #{ruby_type.inspect}: supported types are :boolean, :long, :double, :string and :timestamp"
        end
      end
    end
  end

end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
embulk-0.6.27 lib/embulk/column.rb
embulk-0.7.2 lib/embulk/column.rb
embulk-0.7.2-java lib/embulk/column.rb
embulk-0.6.26 lib/embulk/column.rb
embulk-0.7.1 lib/embulk/column.rb
embulk-0.7.1-java lib/embulk/column.rb
embulk-0.7.0 lib/embulk/column.rb
embulk-0.7.0-java lib/embulk/column.rb
embulk-0.6.25 lib/embulk/column.rb
embulk-0.6.24 lib/embulk/column.rb
embulk-0.6.23 lib/embulk/column.rb
embulk-0.6.22 lib/embulk/column.rb
embulk-0.6.21 lib/embulk/column.rb
embulk-0.6.20 lib/embulk/column.rb
embulk-0.6.19 lib/embulk/column.rb
embulk-0.6.18 lib/embulk/column.rb
embulk-0.6.17 lib/embulk/column.rb
embulk-0.6.16 lib/embulk/column.rb
embulk-0.6.15 lib/embulk/column.rb
embulk-0.6.14 lib/embulk/column.rb