echi-converter 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -133,4 +133,25 @@
133
133
  * Added error traps for ECHI_LOGS
134
134
  * Bug fix(es):
135
135
  * Fixed a bug where the utility was not properly deleting the files from the ftp server
136
- * Fixed a bug for the pco schema usage changing the echi_log column processed_at to processedat via the 005_change_log_processedat_name migration
136
+ * Fixed a bug for the pco schema usage changing the echi_log column processed_at to processedat via the 005_change_log_processedat_name migration
137
+
138
+ == 0.3.4 2007-11-TBD
139
+
140
+ * Major enhancement(s):
141
+ * Minor enhancement(s):
142
+ * Added a database test script to examples/db_connect_test.rb
143
+ * Set the default ftp port in application.yml to 21
144
+ * Properly report that the database has been initialized at the start of processing as opposed to a successful connection
145
+ * Encapsulate the ASCII/BINARY database transactions in Begin/Rescue clauses to report on additional database issues that might arise
146
+ * Changed the schema YML references to 'echi_records' from 'fields' in order to use that file to store additional database table definitions
147
+ * Changed the default databse name to 'echi' in database.yml
148
+ * Added 006_create_echi_aux_reasons.rb, 007_create_echi_cwcs.rb and 008_create_echi_vdns.rb migrations following the same format as 001_create_echi_records.rb
149
+ * Startup sequence now shows which settings were used
150
+ * Changed the application.yml setting of echi_update_agent_data to echi_process_dat_files
151
+ * Refactored logging mechanism
152
+ * Added support for additional '.dat' files including aux_rsn.dat, cwc.dat and vdn.dat
153
+ * Added utf8 encoding option to config/database.yml
154
+ * Refactored FTP management into a new class
155
+ * FTP now supports setting an alternative port by setting 'echi_port' in the application.yml file
156
+ * Added option in config/application.yml, 'max_ftp_sessions', to allow for multiple ftp sessions to be used to increase ftp interaction performance
157
+ * Bug fix(es):
data/Manifest.txt CHANGED
@@ -10,6 +10,7 @@ lib/database_presence.rb
10
10
  lib/main.rb
11
11
  lib/main_win32.rb
12
12
  lib/echi-converter.rb
13
+ lib/ftp_fetcher.rb
13
14
  scripts/txt2html
14
15
  setup.rb
15
16
  test/test_echi-converter.rb
@@ -31,8 +32,12 @@ db/migrate/002_create_echi_logs.rb
31
32
  db/migrate/003_create_echi_agents.rb
32
33
  db/migrate/004_change_log_name_size.rb
33
34
  db/migrate/005_change_log_processedat_name.rb
35
+ db/migrate/006_create_echi_aux_reasons.rb
36
+ db/migrate/007_create_echi_cwcs.rb
37
+ db/migrate/008_create_echi_vdns.rb
34
38
  bin/echi-converter
35
39
  examples/extended_version12/chr0003
36
40
  examples/extended_version12/chr0003.txt
37
41
  examples/schemas/oracle_echi.sql
38
42
  examples/ascii_csv/chr5500.123
43
+ examples/db_connect_test.rb
@@ -2,7 +2,7 @@
2
2
 
3
3
  #Connection details for the Avaya CMS/ECHI host
4
4
  echi_host: localhost
5
- echi_port: 22
5
+ echi_port: 21
6
6
  echi_username: anonymous
7
7
  echi_password:
8
8
  echi_connect_type: ftp #only ftp supported now, possible for ssh in the future
@@ -12,14 +12,19 @@ echi_ftp_delete: Y #to not delete the files off of the FTP server set to N, Y t
12
12
  echi_schema: extended_version13.yml
13
13
  echi_format: BINARY #valid settings are ASCII or BINARY
14
14
  echi_process_log: Y #valid is Y/N to turn it on or off
15
- echi_update_agent_data: N #Insert data in the 'echi_agents' table with the 'agname.dat' file, and update regularly (not available when 'pco_process' set to 'Y')
16
- echi_update_agent_data_freq: 24 #Number of hours to wait before updating the 'echi_agents' table
15
+ echi_process_dat_files: N #Insert additional tables with data from the '.dat' files, and update regularly (not available when 'pco_process' set to 'Y')
16
+ #Filenames of the dat files
17
+ echi_agent_dat: agname.dat
18
+ echi_aux_rsn_dat: aux_rsn.dat
19
+ echi_cwc_dat: cwc.dat
20
+ echi_vdn_dat: vdn.dat
17
21
 
18
22
  #Currently only ftp supported, but may want to add SSH/SFTP later
19
23
  echi_xfer_type: ftp
20
24
 
21
25
  #How frequently to fetch records off of the Avaya CMS ftp server
22
26
  fetch_interval: 60 #in seconds
27
+ max_ftp_sessions: 2 #Number of simultaneous ftp connections to use
23
28
 
24
29
  #Whether or not to insert into a database, into a csv file or both
25
30
  export_type: database
@@ -44,4 +49,4 @@ smtp_server: smtp.yourdomain.com
44
49
  smtp_port: 25
45
50
 
46
51
  #Special settings for a specific application database
47
- pco_process: N #Set to yes (Y) or no (N) if running with a PCO database
52
+ pco_process: N #Set to Y (yes) to enable using the PCO database or to no N (no) if not using the PCO database
data/config/database.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  #Database connection configuration, uses Active Record from Ruby on Rails
2
2
  adapter: mysql
3
- database: echi_records
3
+ database: echi
4
4
  username: root
5
5
  password:
6
- host: localhost
6
+ host: localhost
7
+ #encoding: utf8
@@ -1,6 +1,6 @@
1
1
  #ECH File construct, order is important, as the application sequentially reads the file
2
2
  #Version 12 - Extended Schema
3
- fields:
3
+ echi_records:
4
4
  - name: callid
5
5
  type: int
6
6
  length: 4
@@ -231,4 +231,52 @@ fields:
231
231
  length: 8
232
232
  - name: asaiuui
233
233
  type: str
234
- length: 96
234
+ length: 96
235
+
236
+ #Agents table definition derived from agname.dat
237
+ echi_agents:
238
+ - name: group_id
239
+ type: str
240
+ length: 255
241
+ - name: login_id
242
+ type: str
243
+ length: 255
244
+ - name: name
245
+ type: str
246
+ length: 255
247
+
248
+ #Aux Reasons table definition derived from aux_rsn.dat
249
+ echi_aux_reasons:
250
+ - name: group_id
251
+ type: str
252
+ length: 255
253
+ - name: aux_reason
254
+ type: str
255
+ length: 255
256
+ - name: name
257
+ type: str
258
+ length: 255
259
+
260
+ #CWC definition derived from cwc.dat
261
+ echi_cwcs:
262
+ - name: group_id
263
+ type: str
264
+ length: 255
265
+ - name: cwc
266
+ type: str
267
+ length: 255
268
+ - name: name
269
+ type: str
270
+ length: 255
271
+
272
+ #VDN definition derived from vdn.dat
273
+ echi_vdns:
274
+ - name: group_id
275
+ type: str
276
+ length: 255
277
+ - name: vdn
278
+ type: str
279
+ length: 255
280
+ - name: name
281
+ type: str
282
+ length: 255
@@ -1,6 +1,6 @@
1
1
  #ECH File construct, order is important, as the application sequentially reads the file
2
2
  #Version 13 - Extended Schema
3
- fields:
3
+ echi_records:
4
4
  - name: callid
5
5
  type: int
6
6
  length: 4
@@ -231,4 +231,52 @@ fields:
231
231
  length: 8
232
232
  - name: asaiuui
233
233
  type: str
234
- length: 96
234
+ length: 96
235
+
236
+ #Agents table definition derived from agname.dat
237
+ echi_agents:
238
+ - name: group_id
239
+ type: str
240
+ length: 255
241
+ - name: login_id
242
+ type: str
243
+ length: 255
244
+ - name: name
245
+ type: str
246
+ length: 255
247
+
248
+ #Aux Reasons table definition derived from aux_rsn.dat
249
+ echi_aux_reasons:
250
+ - name: group_id
251
+ type: str
252
+ length: 255
253
+ - name: aux_reason
254
+ type: str
255
+ length: 255
256
+ - name: name
257
+ type: str
258
+ length: 255
259
+
260
+ #CWC definition derived from cwc.dat
261
+ echi_cwcs:
262
+ - name: group_id
263
+ type: str
264
+ length: 255
265
+ - name: cwc
266
+ type: str
267
+ length: 255
268
+ - name: name
269
+ type: str
270
+ length: 255
271
+
272
+ #VDN definition derived from vdn.dat
273
+ echi_vdns:
274
+ - name: group_id
275
+ type: str
276
+ length: 255
277
+ - name: vdn
278
+ type: str
279
+ length: 255
280
+ - name: name
281
+ type: str
282
+ length: 255
@@ -35,6 +35,9 @@ files_to_copy:
35
35
  - name: db/migrate/003_create_echi_agents.rb
36
36
  - name: db/migrate/004_change_log_name_size.rb
37
37
  - name: db/migrate/005_change_log_processedat_name.rb
38
+ - name: db/migrate/006_create_echi_aux_reasons.rb
39
+ - name: db/migrate/007_create_echi_cwcs.rb
40
+ - name: db/migrate/008_create_echi_vdns.rb
38
41
  - name: examples/extended_version12/chr0003
39
42
  - name: examples/extended_version12/chr0003.txt
40
43
  - name: examples/ascii_csv/chr5500.123
@@ -44,7 +47,9 @@ files_to_copy:
44
47
  - name: lib/main.rb
45
48
  - name: lib/main_win32.rb
46
49
  - name: lib/echi-converter/version.rb
50
+ - name: lib/ftp_fetcher.rb
47
51
  - name: examples/schemas/oracle_echi.sql
52
+ - name: examples/db_connect_test.rb
48
53
 
49
54
  files_to_upgrade:
50
55
  - name: lib/database.rb
@@ -53,6 +58,10 @@ files_to_upgrade:
53
58
  - name: lib/main.rb
54
59
  - name: lib/main_win32.rb
55
60
  - name: lib/echi-converter/version.rb
61
+ - name: lib/ftp_fetcher.rb
56
62
  - name: db/migrate/003_create_echi_agents.rb
57
63
  - name: db/migrate/004_change_log_name_size.rb
58
64
  - name: db/migrate/005_change_log_processedat_name.rb
65
+ - name: db/migrate/006_create_echi_aux_reasons.rb
66
+ - name: db/migrate/007_create_echi_cwcs.rb
67
+ - name: db/migrate/008_create_echi_vdns.rb
@@ -1,6 +1,6 @@
1
1
  #ECH File construct, order is important, as the application sequentially reads the file
2
2
  #Version 12 - Standard Schema
3
- fields:
3
+ echi_records:
4
4
  - name: callid
5
5
  type: int
6
6
  length: 4
@@ -195,4 +195,52 @@ fields:
195
195
  length: 17
196
196
  - name: cwcs4
197
197
  type: str
198
- length: 17
198
+ length: 17
199
+
200
+ #Agents table definition derived from agname.dat
201
+ echi_agents:
202
+ - name: group_id
203
+ type: str
204
+ length: 255
205
+ - name: login_id
206
+ type: str
207
+ length: 255
208
+ - name: name
209
+ type: str
210
+ length: 255
211
+
212
+ #Aux Reasons table definition derived from aux_rsn.dat
213
+ echi_aux_reasons:
214
+ - name: group_id
215
+ type: str
216
+ length: 255
217
+ - name: aux_reason
218
+ type: str
219
+ length: 255
220
+ - name: name
221
+ type: str
222
+ length: 255
223
+
224
+ #CWC definition derived from cwc.dat
225
+ echi_cwcs:
226
+ - name: group_id
227
+ type: str
228
+ length: 255
229
+ - name: cwc
230
+ type: str
231
+ length: 255
232
+ - name: name
233
+ type: str
234
+ length: 255
235
+
236
+ #VDN definition derived from vdn.dat
237
+ echi_vdns:
238
+ - name: group_id
239
+ type: str
240
+ length: 255
241
+ - name: vdn
242
+ type: str
243
+ length: 255
244
+ - name: name
245
+ type: str
246
+ length: 255
@@ -1,6 +1,6 @@
1
1
  #ECH File construct, order is important, as the application sequentially reads the file
2
2
  #Version 13 - Standard Schema
3
- fields:
3
+ echi_records:
4
4
  - name: callid
5
5
  type: int
6
6
  length: 4
@@ -195,4 +195,52 @@ fields:
195
195
  length: 17
196
196
  - name: cwcs4
197
197
  type: str
198
- length: 17
198
+ length: 17
199
+
200
+ #Agents table definition derived from agname.dat
201
+ echi_agents:
202
+ - name: group_id
203
+ type: str
204
+ length: 255
205
+ - name: login_id
206
+ type: str
207
+ length: 255
208
+ - name: name
209
+ type: str
210
+ length: 255
211
+
212
+ #Aux Reasons table definition derived from aux_rsn.dat
213
+ echi_aux_reasons:
214
+ - name: group_id
215
+ type: str
216
+ length: 255
217
+ - name: aux_reason
218
+ type: str
219
+ length: 255
220
+ - name: name
221
+ type: str
222
+ length: 255
223
+
224
+ #CWC definition derived from cwc.dat
225
+ echi_cwcs:
226
+ - name: group_id
227
+ type: str
228
+ length: 255
229
+ - name: cwc
230
+ type: str
231
+ length: 255
232
+ - name: name
233
+ type: str
234
+ length: 255
235
+
236
+ #VDN definition derived from vdn.dat
237
+ echi_vdns:
238
+ - name: group_id
239
+ type: str
240
+ length: 255
241
+ - name: vdn
242
+ type: str
243
+ length: 255
244
+ - name: name
245
+ type: str
246
+ length: 255
@@ -2,7 +2,7 @@ class CreateEchiRecords < ActiveRecord::Migration
2
2
  def self.up
3
3
  #We create the table from the one defined in the application.yml file
4
4
  create_table "echi_records", :force => true do |t|
5
- @@echi_schema["fields"].each do | field |
5
+ @@echi_schema["echi_records"].each do | field |
6
6
  case field["type"]
7
7
  when 'int'
8
8
  t.column field["name"], :integer, :limit => field["length"], :precision => field["length"], :scale => 0
@@ -1,9 +1,21 @@
1
1
  class CreateEchiAgents < ActiveRecord::Migration
2
2
  def self.up
3
+ #We create the table from the one defined in the application.yml file
3
4
  create_table "echi_agents", :force => true do |t|
4
- t.column "group_id", :string
5
- t.column "login_id", :string
6
- t.column "name", :string
5
+ @@echi_schema["echi_agents"].each do | field |
6
+ case field["type"]
7
+ when 'int'
8
+ t.column field["name"], :integer, :limit => field["length"], :precision => field["length"], :scale => 0
9
+ when 'str'
10
+ t.column field["name"], :string, :limit => field["length"]
11
+ when 'datetime'
12
+ t.column field["name"], :datetime
13
+ when 'bool'
14
+ t.column field["name"], :string, :limit => 1
15
+ when 'bool_int'
16
+ t.column field["name"], :string, :limit => 1
17
+ end
18
+ end
7
19
  end
8
20
  add_index "echi_agents", "login_id"
9
21
  end
@@ -0,0 +1,27 @@
1
+ class CreateEchiAuxReasons < ActiveRecord::Migration
2
+ def self.up
3
+ #We create the table from the one defined in the application.yml file
4
+ create_table "echi_aux_reasons", :force => true do |t|
5
+ @@echi_schema["echi_aux_reasons"].each do | field |
6
+ case field["type"]
7
+ when 'int'
8
+ t.column field["name"], :integer, :limit => field["length"], :precision => field["length"], :scale => 0
9
+ when 'str'
10
+ t.column field["name"], :string, :limit => field["length"]
11
+ when 'datetime'
12
+ t.column field["name"], :datetime
13
+ when 'bool'
14
+ t.column field["name"], :string, :limit => 1
15
+ when 'bool_int'
16
+ t.column field["name"], :string, :limit => 1
17
+ end
18
+ end
19
+ end
20
+ add_index "echi_aux_reasons", "aux_reason"
21
+ end
22
+
23
+ def self.down
24
+ remove_index "echi_aux_reasons", "aux_reason"
25
+ drop_table "echi_aux_reasons"
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ class CreateEchiCwcs < ActiveRecord::Migration
2
+ def self.up
3
+ #We create the table from the one defined in the application.yml file
4
+ create_table "echi_cwcs", :force => true do |t|
5
+ @@echi_schema["echi_cwcs"].each do | field |
6
+ case field["type"]
7
+ when 'int'
8
+ t.column field["name"], :integer, :limit => field["length"], :precision => field["length"], :scale => 0
9
+ when 'str'
10
+ t.column field["name"], :string, :limit => field["length"]
11
+ when 'datetime'
12
+ t.column field["name"], :datetime
13
+ when 'bool'
14
+ t.column field["name"], :string, :limit => 1
15
+ when 'bool_int'
16
+ t.column field["name"], :string, :limit => 1
17
+ end
18
+ end
19
+ end
20
+ add_index "echi_cwcs", "cwc"
21
+ end
22
+
23
+ def self.down
24
+ remove_index "echi_cwcs", "cwc"
25
+ drop_table "echi_cwcs"
26
+ end
27
+ end