wms 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTExMzhlZTZiZGEzMmY2N2E4Yzk4YjUzM2UyNTM3ZTdiMDA3OTNkMQ==
4
+ OTI5MGJiMjYwMGNjNWNiODgwNDNjZWIyM2YwZWMyMTg5MTdjOWI5Mw==
5
5
  data.tar.gz: !binary |-
6
- OGZmNDdhNzE5YTg3NDM1ODZmN2YxNDRmN2FkNTk2YTUzYWYzNDVhNA==
6
+ ZjVlNWI4ODA3MTNhM2YyNmQ3MjAxMDI0N2MwM2MwYmY1ZGJhMjg1OQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODUzYzEzYTEzZmNmNTZhYWI0OWM5MmI3ZGZkNjA1OTIyMmJkMmY2Y2ExNDI4
10
- MDQyZTRjOGFiNjAxMDUwZmJhNzEyYWJkYjE1MWJiODdlMGY2MWIwMmM1MDll
11
- ODkyYjE4ZDMzMmEyNTVlNjI2MjBiOTAzYjU1MTE3ZjI5Y2U2ODI=
9
+ OTg1ZjAxMTIxODUxOGY0NTExZDc5Y2FmZDdlZWJmYzMwMWM1MTUwZDNjODlh
10
+ ZTY0Y2U2NmE5ZTI2YjE0NTZkY2YyODEyN2ZlYmVjYjk1NDMwOTEzMTIyOTg3
11
+ MzNkYmVmMjY2MGQzZTU4NjVmZjMzZDQyODg1ZmQzODMxNDE2YmQ=
12
12
  data.tar.gz: !binary |-
13
- Njg3YWM5NDczYmI3NTkxZWY1OTljNGJkYzAzOWVhMWM4NWQ5MzQwODU4NTQ3
14
- NTRmOGMxZmEyZGIwZWY1Y2ZmNGU5YWY5MTg5MzAzODIzMTJhODU4NTlkNWUy
15
- MmFkODk0NTljM2E4ZDllMzFjNDhjOTFjZDk4NzUzYmFlM2U1ZmE=
13
+ OWQzMjRmZTNmNjY5ODYyZWUxNmRmZGRiZDBiYTUxZjc3NzA1MTVjYjE4NjFl
14
+ YTQ5NzQ2MDBlNGY4NWFlY2Y1YTY1YThmNjE2MzU3YzUxMjQ3NDU4Mjg2ZDMw
15
+ YjAxZTAzMTcxODVkZGM4MmRjMGQ1MmYzZDU0YzM3MTgwMmZlMTU=
@@ -0,0 +1,172 @@
1
+
2
+ require 'wms/input/base'
3
+ require 'wms/config/mixin'
4
+ require 'csv'
5
+ require 'time'
6
+
7
+ class Wms::Input::Filetype1 < Wms::Input::Base
8
+
9
+ attr_accessor :filepath
10
+
11
+
12
+ public
13
+ def register(options={})
14
+ raise "#{self.class.name}: filepath required in options" unless options[:filepath]
15
+ @filepath = options[:filepath]
16
+ @compressed = options[:compressed]
17
+ @file_ext = options[:file_ext]
18
+ @is_gz = options[:file_ext] == '.gz'
19
+
20
+ end # def register
21
+
22
+ # Read from csv file row by row. Callback function will be called when each
23
+ # row is done reading.
24
+ public
25
+ def run(&block)
26
+ # adding options to make data manipulation easy
27
+ total_lines = 0
28
+ str_arr = []
29
+ callback = block
30
+ if @is_gz
31
+ Zlib::GzipReader.open(@filepath) do |csv|
32
+ csv.read.each_line do |line|
33
+ splits = line.split(',')
34
+ type = splits[0]
35
+ timestr = splits[1]
36
+ timestamp = Time.at(splits[2].to_i / 1000.0, splits[2].to_i % 1000.0)
37
+ device_id = splits[3]
38
+
39
+ data = Hash.new
40
+ data[:type] = type
41
+ data[:timestamp] = timestamp
42
+ data[:device_id] = device_id
43
+
44
+ case type
45
+ when "wifi_accesspoint_info"
46
+ joined = splits[4..splits.size].join(',')
47
+ jsoned = JSON.parse(joined)
48
+ data[:list] = jsoned['list']
49
+ callback.call(data)
50
+ when "location"
51
+ (4..splits.size-1).step(2).each do |i|
52
+ data[splits[i]] = cascading_convert(splits[i+1])
53
+ callback.call data
54
+ end
55
+ when "battery"
56
+ (4..splits.size-1).step(2).each do |i|
57
+ data[splits[i]] = cascading_convert(splits[i+1])
58
+ callback.call data
59
+ end
60
+ when "application"
61
+ (4..splits.size-1).step(2).each do |i|
62
+ data[splits[i]] = cascading_convert(splits[i+1])
63
+ callback.call data
64
+ end
65
+
66
+ # when "wifiscan"
67
+
68
+ else
69
+ @logger.debug "Type #{type} is no supported!"
70
+ end
71
+
72
+ @logger.debug data
73
+
74
+
75
+ # str_arr = []
76
+ # str_arr << '['
77
+ # str_arr << line
78
+ # str_arr << ']'
79
+
80
+ # joined_str = str_arr.join("")
81
+ # @logger.debug " ==> #{joined_str}"
82
+ #
83
+ # json_obj = JSON.parse(joined_str)
84
+
85
+ # @logger.debug " --> #{json_obj}"
86
+ # norm_json = normlaize_json_obj(json_obj)
87
+ # callback = block
88
+ # callback.call(norm_json)
89
+ # @logger.debug ">>>>>>#{norm_json}"
90
+
91
+ total_lines += 1
92
+ end
93
+ end
94
+
95
+ @logger.debug "Total line: %d" % total_lines
96
+ else
97
+ File.open(@filepath, "r").each_line do |line|
98
+ str_arr = []
99
+ str_arr << '['
100
+ str_arr << line
101
+ str_arr << ']'
102
+ joined_str = str_arr.join("")
103
+ json_obj = JSON.parse(joined_str)
104
+
105
+
106
+ # norm_json = normlaize_json_obj(json_obj)
107
+ # callback = block
108
+ # callback.call(norm_json)
109
+ # @logger.debug ">>>>>>#{norm_json}"
110
+
111
+ total_lines += 1
112
+ end
113
+ end
114
+
115
+ end # end run(&block)
116
+
117
+ # Try to convert in order
118
+ # Int > Float > String
119
+ private
120
+ def cascading_convert(value)
121
+ result = nil
122
+ begin
123
+ result = Integer(value)
124
+ rescue
125
+ begin
126
+ result = Float(value)
127
+ rescue
128
+ result = value
129
+ end
130
+ end
131
+ result
132
+ end
133
+
134
+ #
135
+ private
136
+ def normlaize_json_obj(json_obj)
137
+ normlaized_json_obj = {}
138
+ if json_obj[0] == 'wifi_accesspoint_info'
139
+ normlaized_json_obj['type'] = 'wifi_accesspoint_info'
140
+ normlaized_json_obj['timestamp'] = Time.at(json_obj[2] / 1000.0, json_obj[2] % 1000.0)
141
+ normlaized_json_obj['device_id'] = json_obj[3]
142
+ normlaized_json_obj['wifi_list'] = json_obj[4]['list']
143
+
144
+ # Convert string values into floats
145
+ convert_level_freq(normlaized_json_obj['wifi_list'])
146
+
147
+
148
+
149
+ elsif json_obj[0] == 'location'
150
+ normlaized_json_obj['type'] = 'location'
151
+ normlaized_json_obj['timestamp'] = Time.at(json_obj[2] / 1000.0, json_obj[2] % 1000.0)
152
+ normlaized_json_obj['device_id'] = json_obj[3]
153
+ stop_at = json_obj.length - 1
154
+ range = (4..stop_at)
155
+ range.step(2).each do |i|
156
+ normlaized_json_obj[json_obj[i]] = json_obj[i+1]
157
+ end
158
+ # @logger.debug normlaized_json_obj
159
+ end
160
+
161
+ return normlaized_json_obj
162
+ end
163
+
164
+ private
165
+ def convert_level_freq(wifi_list)
166
+ wifi_list.each do |wifi|
167
+ wifi['level'] = wifi['level'].to_i if wifi['level']
168
+ wifi['frequency'] = wifi['frequency'].to_i if wifi['frequency']
169
+ end
170
+ end
171
+
172
+ end
@@ -1,3 +1,3 @@
1
1
  module Wms
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phoorichet Thepdusith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-24 00:00:00.000000000 Z
11
+ date: 2013-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,6 +72,7 @@ files:
72
72
  - lib/wms/input/android_sensor.rb
73
73
  - lib/wms/input/android_wifilocation.rb
74
74
  - lib/wms/input/base.rb
75
+ - lib/wms/input/filetype1.rb
75
76
  - lib/wms/plugin/plugin.rb
76
77
  - lib/wms/version.rb
77
78
  - lib/wms/widget/base.rb