norikra-udf-lookup 0.0.1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b01908e0a86f828de588a4cf2e26418fecd3b298
4
+ data.tar.gz: 787fb9c26a32f6f85b2068325a1f5b17787f1b46
5
+ SHA512:
6
+ metadata.gz: 972032745ed7468d8fd84d8fa79352c1da3377e48b8f126c130c59b159c196a57473add7b0784540fbf2b50c44f1cb3fd91753aaed31b61a122125901b0c46ef
7
+ data.tar.gz: a2259e1a1dc74966a28e41550b71fad628a03325fbc00ec88cb5668a22b2d1104f207004ea7e3d0a2f0d2ed54ef714b384f26480686566748d70e46b149eeddc
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - jruby-19mode
4
+ jdk:
5
+ - oraclejdk8
6
+ - oraclejdk7
7
+ - openjdk7
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in norikra-udf-lookup.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # Norikra::Udf::Lookup
2
+
3
+ Norikra UDF to lookup external data source. (Currently, only TSV file)
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'norikra-udf-lookup'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install norikra-udf-lookup
20
+
21
+ ## Usage
22
+
23
+
24
+ ### lookup_tsv(string, string, string)
25
+
26
+ Parameters are: TSV file path, key to lookup, return value if the key was not found.
27
+
28
+ Lookup key in TSV file and return corresponding value.
29
+
30
+ For example, create such file with "key<tab>value" pairs.
31
+
32
+ ```
33
+ % cat /tmp/lookuptest.tsv
34
+ 1 aaa
35
+ 2 bbb
36
+ 3 ccc
37
+ ```
38
+
39
+ Register query with this UDF.
40
+
41
+ ```
42
+ SELECT
43
+ id, lookup_tsv('/tmp/lookuptest.tsv',id,'not found') as name, count(*) as cnt
44
+ FROM
45
+ test_stream.win:time_batch(1 min)
46
+ GROUP by id
47
+ ```
48
+
49
+ Send some events.
50
+
51
+ ```
52
+ % echo '{"id":"1"}' | norikra-client event send test_stream
53
+ % echo '{"id":"2"}' | norikra-client event send test_stream
54
+ % echo '{"id":"3"}' | norikra-client event send test_stream
55
+ % echo '{"id":"4"}' | norikra-client event send test_stream
56
+ ```
57
+
58
+ Then, you will get there records.
59
+
60
+ ```
61
+ {"time":"2015/07/28 12:13:24","query":"lookuptest","id":"3","cnt":1,"name":"ccc"}
62
+ {"time":"2015/07/28 12:13:24","query":"lookuptest","id":"2","cnt":1,"name":"bbb"}
63
+ {"time":"2015/07/28 12:13:24","query":"lookuptest","id":"1","cnt":1,"name":"aaa"}
64
+ {"time":"2015/07/28 12:13:24","query":"lookuptest","id":"4","cnt":1,"name":"not found"}
65
+ ```
66
+
67
+ ## Copyright
68
+
69
+ * Copyright (c) 2015- OGIBAYASHI Hironori
70
+ * License
71
+ * GPL v2
data/Rakefile ADDED
@@ -0,0 +1,37 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec) do |t|
5
+ t.rspec_opts = ["-Ijar", "-Ilib", "-c", "-f progress"] # '--format specdoc'
6
+ t.pattern = 'spec/**/*_spec.rb'
7
+ end
8
+
9
+ task :compile do
10
+ require 'rubygems'
11
+
12
+ jarname = FileList['norikra-udf-*.gemspec'].first.gsub(/\.gemspec$/, '.jar')
13
+
14
+ jarfiles = FileList['jar/**/*.jar'].select{|f| not f.end_with?('/' + jarname)}
15
+ jarfiles << Gem.find_latest_files('esper-*.jar').first
16
+
17
+ java_classpath = "-classpath src:java:#{jarfiles.join(':')}"
18
+ FileList['src/**/*.java'].each do |fn|
19
+ sh "env LC_ALL=C javac -J-Duser.language=en #{java_classpath} -d java #{fn}"
20
+ end
21
+
22
+ jruby_classpath = "--classpath java:#{jarfiles.join(':')}"
23
+ FileList['lib/esper_plugin/**/*.rb'].each do |fn|
24
+ sh "env LC_ALL=C jrubyc --javac --target java #{jruby_classpath} #{fn}"
25
+ end
26
+
27
+ sh "env LC_ALL=C jar -J-Duser.language=en -cf jar/#{jarname} -C java ."
28
+ end
29
+
30
+ task :clean do
31
+ sh "rm -rf java/*"
32
+ end
33
+
34
+ task :test => [:compile, :spec]
35
+ task :default => :test
36
+
37
+ task :all => [:clean, :compile, :spec, :build]
data/jar/.touched ADDED
File without changes
Binary file
data/java/.touched ADDED
File without changes
@@ -0,0 +1,20 @@
1
+ require 'java'
2
+ java_package 'jp.gr.java_conf.ogibayashi.norikra.udf'
3
+
4
+ class Lookup # FQDN: org.example.yourcompany.norikra.udf.MyUDF1
5
+ @@lookup_table = nil
6
+
7
+ def self.read_tsv(path)
8
+ data = File.open(path).readlines.map do |line|
9
+ line.chomp.split("\t")
10
+ end
11
+ Hash[data]
12
+ end
13
+
14
+ def self.lookup_tsv(path,key,default_value)
15
+ unless @@lookup_table
16
+ @@lookup_table = self.read_tsv(path)
17
+ end
18
+ @@lookup_table[key] || default_value
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ module Norikra
2
+ module Udf
3
+ module Lookup
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ require 'java'
2
+ require 'norikra/udf'
3
+
4
+
5
+ module Norikra
6
+ module UDF
7
+
8
+ class LookupTsv < Norikra::UDF::SingleRow
9
+ # class method
10
+ def self.init
11
+ require 'norikra-udf-lookup.jar'
12
+ end
13
+
14
+ # instance method
15
+ def definition
16
+ # function_name, Java Class Name (fqdn), static function name
17
+ ["lookup_tsv", "jp.gr.java_conf.ogibayashi.norikra.udf.Lookup", "lookup_tsv"]
18
+ end
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'norikra/udf/lookup/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "norikra-udf-lookup"
8
+ spec.version = Norikra::Udf::Lookup::VERSION
9
+ spec.authors = ["Hironori Ogibayashi"]
10
+ spec.email = ["ogibayashi@gmail.com"]
11
+
12
+ spec.summary = %q{Norikra UDF to Lookup keys from a table}
13
+ spec.description = %q{Norikra UDF to Lookup keys from a table}
14
+ spec.homepage = "https://github.com/ogibayashi"
15
+ spec.platform = "java"
16
+
17
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # delete this section to allow pushing this gem to any host.
19
+ if spec.respond_to?(:metadata)
20
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
+ else
22
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ end
24
+
25
+ spec.files = `git ls-files`.split($/)
26
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
27
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
28
+ spec.require_paths = ["lib","jar"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.7"
31
+ spec.add_development_dependency "rake"
32
+ spec.add_development_dependency "rspec"
33
+ spec.add_runtime_dependency "norikra"
34
+ end
@@ -0,0 +1,28 @@
1
+ require 'norikra/udf_spec_helper'
2
+ include Norikra::UDFSpecHelper
3
+ require 'norikra/udf/lookup' # this is your UDF definition file
4
+
5
+ # for single row UDF
6
+ describe Norikra::UDF::LookupTsv do
7
+ udf_function Norikra::UDF::LookupTsv
8
+ TMP_TABLE_FILE = "/tmp/lookuptest.tsv"
9
+
10
+ before do
11
+ File.open(TMP_TABLE_FILE,"w"){ |f|
12
+ f.puts "key1\thoge"
13
+ f.puts "key2\tfoo"
14
+ }
15
+ end
16
+
17
+ it 'Key found' do
18
+ expect(fcall(:lookup_tsv, TMP_TABLE_FILE, "key1","notfound")).to eql("hoge")
19
+ end
20
+
21
+ it 'Key not found' do
22
+ expect(fcall(:lookup_tsv, TMP_TABLE_FILE, "key5","notfound")).to eql("notfound")
23
+ end
24
+
25
+ after do
26
+ File.unlink(TMP_TABLE_FILE)
27
+ end
28
+ end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ class Norikra::Udf::LookupTest < Minitest::Test
4
+ def test_that_it_has_a_version_number
5
+ refute_nil ::Norikra::Udf::Lookup::VERSION
6
+ end
7
+
8
+ def test_it_does_something_useful
9
+ assert false
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'norikra/udf/lookup'
3
+
4
+ require 'minitest/autorun'
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: norikra-udf-lookup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: java
6
+ authors:
7
+ - Hironori Ogibayashi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: '1.7'
25
+ prerelease: false
26
+ type: :development
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ prerelease: false
40
+ type: :development
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ prerelease: false
54
+ type: :development
55
+ - !ruby/object:Gem::Dependency
56
+ name: norikra
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ prerelease: false
68
+ type: :runtime
69
+ description: Norikra UDF to Lookup keys from a table
70
+ email:
71
+ - ogibayashi@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - .travis.yml
78
+ - Gemfile
79
+ - README.md
80
+ - Rakefile
81
+ - jar/.touched
82
+ - jar/norikra-udf-lookup.jar
83
+ - java/.touched
84
+ - lib/esper_plugin/lookup.rb
85
+ - lib/norikra/udf/lookup.rb
86
+ - lib/norikra/udf/lookup/version.rb
87
+ - norikra-udf-lookup.gemspec
88
+ - spec/lookup_spec.rb
89
+ - test/norikra/udf/lookup_test.rb
90
+ - test/test_helper.rb
91
+ homepage: https://github.com/ogibayashi
92
+ licenses: []
93
+ metadata:
94
+ allowed_push_host: https://rubygems.org
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ - jar
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.4.5
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: Norikra UDF to Lookup keys from a table
116
+ test_files:
117
+ - spec/lookup_spec.rb
118
+ - test/norikra/udf/lookup_test.rb
119
+ - test/test_helper.rb