Sha256: d2f263848466ac517ee0567d30179f0374830794aba2752288eab558df322ae6

Contents?: true

Size: 1.64 KB

Versions: 25

Compression:

Stored size: 1.64 KB

Contents

module Embulk
  require 'json'

  class DataSource < Hash
    def param(key, type, options={})
      if self.has_key?(key)
        v = self[key]
        value =
          case type
          when :integer
            Integer(v)
          when :float
            Float(v)
          when :string
            String(v).dup
          when :bool
            !!v  # TODO validation
          when :hash
            raise ArgumentError, "Invalid value for :hash" unless v.is_a?(Hash)
            DataSource.new.merge!(v)
          when :array
            raise ArgumentError, "Invalid value for :array" unless v.is_a?(Array)
            v.dup
          else
            unless type.respond_to?(:load)
              raise ArgumentError, "Unknown type #{type.to_s.dump}"
            end
            type.load(v)
          end

      elsif options.has_key?(:default)
        value = options[:default]

      else
        raise "Required field #{key.to_s.dump} is not set"
      end

      return value
    end

    if Embulk.java?
      def self.from_java(java_data_source_impl)
        json = java_data_source_impl.toString
        new.merge!(JSON.parse(json))
      end

      def self.from_ruby_hash(hash)
        new.merge!(hash)
      end

      def to_java
        json = to_json
        Java::Injected::ModelManager.readObject(Java::DataSourceImpl.java_class, json.to_java)
      end

      def load_config(task_type)
        Java::Injected::ModelManager.readObjectWithConfigSerDe(task_type.java_class, to_json.to_java)
      end

      def load_task(task_type)
        Java::Injected::ModelManager.readObject(task_type.java_class, to_json.to_java)
      end
    end
  end

end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
embulk-0.6.11 lib/embulk/data_source.rb
embulk-0.6.10 lib/embulk/data_source.rb
embulk-0.6.9 lib/embulk/data_source.rb
embulk-0.6.8 lib/embulk/data_source.rb
embulk-0.6.7 lib/embulk/data_source.rb
embulk-0.6.6 lib/embulk/data_source.rb
embulk-0.6.5 lib/embulk/data_source.rb
embulk-0.6.4 lib/embulk/data_source.rb
embulk-0.6.3 lib/embulk/data_source.rb
embulk-0.6.2 lib/embulk/data_source.rb
embulk-0.6.1 lib/embulk/data_source.rb
embulk-0.6.0 lib/embulk/data_source.rb
embulk-0.5.5 lib/embulk/data_source.rb
embulk-0.5.4 lib/embulk/data_source.rb
embulk-0.5.3 lib/embulk/data_source.rb
embulk-0.5.2 lib/embulk/data_source.rb
embulk-0.5.1 lib/embulk/data_source.rb
embulk-0.5.0 lib/embulk/data_source.rb
embulk-0.4.10 lib/embulk/data_source.rb
embulk-0.4.9 lib/embulk/data_source.rb