echi-converter 0.3.1 → 0.3.2

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.
@@ -104,7 +104,7 @@
104
104
  * Bug fix(es):
105
105
  * Fixed bug so that the log file properly reports when a file is processed
106
106
 
107
- == 0.3.1 2007-11-TBD
107
+ == 0.3.1 2007-11-04
108
108
 
109
109
  * Major enhancement(s):
110
110
  * Minor enhancement(s):
@@ -112,4 +112,16 @@
112
112
  * Modified the return status when creating or manipulating a Windows service
113
113
  * Add the 'echi-converter status' command to check the status of a Windows service
114
114
  * Bug fix(es):
115
- * Fixed bug #15293, the service now exists cleanly
115
+ * Fixed bug #15293, the service now exists cleanly
116
+
117
+ == 0.3.2 2007-11-05
118
+
119
+ * Major enhancement(s):
120
+ * Minor enhancement(s):
121
+ * FR#15361 - Added the ability to create echi_agents and then insert data from agname.dat
122
+ * Added better error handling by giving a proper error when no project name is provided on a create command
123
+ * Added requirement for 'uuidtools' gem for creating unique filenames for the agname.dat files since the Avaya outputs them the same
124
+ * Capture and report the error when echi-converter create command fails
125
+ * Provided an example ASCII CSV file in examples/ascii_csv for testing
126
+ * Bug fix(es):
127
+ * Bug ##15367 - Added to documentation that when using a Windows FTP server you must specify 'UNIX directory listing format'
@@ -28,8 +28,10 @@ config/standard_version13.yml
28
28
  config/install_files.yml
29
29
  db/migrate/001_create_echi_records.rb
30
30
  db/migrate/002_create_echi_logs.rb
31
+ db/migrate/003_create_echi_agents.rb
32
+ db/migrate/004_change_log_name_size.rb
31
33
  bin/echi-converter
32
34
  examples/extended_version12/chr0003
33
35
  examples/extended_version12/chr0003.txt
34
36
  examples/schemas/oracle_echi.sql
35
-
37
+ examples/ascii_csv/chr5500.123
data/Rakefile CHANGED
@@ -79,8 +79,9 @@ hoe = Hoe.new(GEM_NAME, VERS) do |p|
79
79
  ['activesupport', '>=1.4.2'],
80
80
  ['daemons', '>=1.0.7'],
81
81
  ['fastercsv', '>=1.2.0'],
82
- ['hoe', '>=1.2.2'],
83
- ['rake', '>=0.7.3']
82
+ ['hoe', '>=1.3.0'],
83
+ ['rake', '>=0.7.3'],
84
+ ['uuidtools', '>=1.0.1']
84
85
  ]
85
86
  #p.spec_extras = {} # A hash of extra values to set in the gemspec.
86
87
  end
@@ -72,7 +72,7 @@ def create_project dir_name
72
72
  end
73
73
  rescue => err
74
74
  puts err
75
- puts 'Fatal...exiting...'
75
+ puts 'Fatal...exiting... - ' + err
76
76
  exit
77
77
  end
78
78
  puts ''
@@ -185,7 +185,11 @@ puts ''
185
185
 
186
186
  #Evaluate the selection and execute
187
187
  if ARGV[0] == 'create'
188
- create_project ARGV[1]
188
+ if ARGV[1] != nil
189
+ create_project ARGV[1]
190
+ else
191
+ puts "ECHI-converter - You must enter a project name when creating a project"
192
+ end
189
193
  elsif ARGV[0] == 'upgrade'
190
194
  upgrade_project ARGV[1]
191
195
  elsif RUBY_PLATFORM["-mswin32"]
@@ -7,13 +7,15 @@ echi_username: anonymous
7
7
  echi_password:
8
8
  echi_connect_type: ftp #only ftp supported now, possible for ssh in the future
9
9
  echi_ftp_directory: #/Users/ftp/anonymous #If blank/nil, the system will not do a CD at the start
10
- echi_ftp_retry: 3
10
+ echi_ftp_retry: 10
11
11
  echi_ftp_delete: Y #to not delete the files off of the FTP server set to N, Y to delete the files
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
17
 
16
- #Currently only ftp supported, but may want to add UUCP/Serial later
18
+ #Currently only ftp supported, but may want to add SSH/SFTP later
17
19
  echi_xfer_type: ftp
18
20
 
19
21
  #How frequently to fetch records off of the Avaya CMS ftp server
@@ -37,9 +39,9 @@ log_length: 10240000
37
39
 
38
40
  #Email address to send alerts to, specifically failures to connect to the DB or FTP servers
39
41
  #currently does not support an SMTP server that requires authentication
40
- alert_email_address: jgoecke@presenceco.com
41
- smtp_server: mail.presenceco.com
42
+ alert_email_address: youremail@yourdomain.com
43
+ smtp_server: smtp.yourdomain.com
42
44
  smtp_port: 25
43
45
 
44
46
  #Special settings for a specific application database
45
- pco_process: N #Set to yes or no if running with a PCO database
47
+ pco_process: N #Set to yes (Y) or no (N) if running with a PCO database
@@ -12,6 +12,7 @@ dirs_to_create:
12
12
  - name: examples
13
13
  - name: examples/extended_version12
14
14
  - name: examples/schemas
15
+ - name: examples/ascii_csv
15
16
  - name: lib
16
17
  - name: lib/echi-converter
17
18
 
@@ -31,8 +32,11 @@ files_to_copy:
31
32
  - name: config/standard_version13.yml
32
33
  - name: db/migrate/001_create_echi_records.rb
33
34
  - name: db/migrate/002_create_echi_logs.rb
35
+ - name: db/migrate/003_create_echi_agents.rb
36
+ - name: db/migrate/004_change_log_name_size.rb
34
37
  - name: examples/extended_version12/chr0003
35
38
  - name: examples/extended_version12/chr0003.txt
39
+ - name: examples/ascii_csv/chr5500.123
36
40
  - name: lib/database.rb
37
41
  - name: lib/database_presence.rb
38
42
  - name: lib/echi-converter.rb
@@ -48,3 +52,5 @@ files_to_upgrade:
48
52
  - name: lib/main.rb
49
53
  - name: lib/main_win32.rb
50
54
  - name: lib/echi-converter/version.rb
55
+ - name: db/migrate/003_create_echi_agents.rb
56
+ - name: db/migrate/004_change_log_name_size.rb
@@ -0,0 +1,15 @@
1
+ class CreateEchiAgents < ActiveRecord::Migration
2
+ def self.up
3
+ 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
7
+ end
8
+ add_index "echi_agents", "login_id"
9
+ end
10
+
11
+ def self.down
12
+ remove_index "echi_agents", "login_id"
13
+ drop_table "echi_agents"
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ class ChangeLogNameSize < ActiveRecord::Migration
2
+ def self.up
3
+ change_column "echi_logs", "filename", :string
4
+ end
5
+
6
+ def self.down
7
+ change_column "echi_logs", "filename", :string, :limit => 10
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ 453862,13,0,0,36,126,2007-10-08 10:55:31,2007-10-08 10:57:50,90,0,0,0,5,16,13,15,13,-1,-1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,1,2,4,0,1,0,0,1,0,0,0,0,0,0,0,0,0,00001023911191840931,74013,,1009,,40317,,1009,7415572532,1,,,,,,,,74013,,,,,,,,,
2
+ 453869,0,0,0,163,163,2007-10-08 10:55:22,2007-10-08 10:58:05,0,0,0,138,0,3,-1,1,2,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,00001023781191840922,74001,,1012,,,,1012,6188642689,1,,,,,,,,74001,,,,,,,,,
3
+ 453870,0,0,0,0,60,2007-10-08 10:57:09,2007-10-08 10:58:09,0,0,0,0,0,911,-1,911,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,00001025341191841029,1087,,1087,,,,1087,3465496498,,,,,,,,,,,,,,,,,,
4
+ 453875,6,47,0,60,656,2007-10-08 10:46:04,2007-10-08 10:58:28,227,0,0,0,4,18,14,15,14,-1,-1,0,0,0,3,0,0,0,0,1,0,0,0,0,0,1,1,2,4,1,1,0,0,1,0,0,0,0,0,0,0,0,0,00001016761191840364,74015,,1009,,40155,,1009,7809640792,4,,,,,,,,74015,,,,,,,,,
5
+ 453876,6,2,0,37,247,2007-10-08 10:54:05,2007-10-08 10:58:28,37,0,0,0,4,63,57,7,57,-1,-1,0,0,0,3,0,0,0,0,0,0,0,0,0,1,1,1,2,4,1,1,0,0,3,0,0,0,0,0,0,0,0,0,00001022721191840845,74025,,1011,,40196,,1011,4339496401,1,,,,,,,,74025,,,,,,,,,
6
+ 453877,11,7,0,45,552,2007-10-08 10:48:26,2007-10-08 10:58:28,220,0,0,0,4,16,13,15,13,-1,-1,0,0,0,3,0,0,0,0,0,0,0,0,0,1,1,1,2,4,1,1,0,0,1,0,0,0,0,0,0,0,0,0,00001018691191840506,74013,,1606,,40310,,1606,3133385882,2,,,,,,,,74013,,,,,,,,,
7
+ 453880,0,0,0,34,743,2007-10-08 10:43:05,2007-10-08 10:58:34,0,0,0,0,0,929,-1,929,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,00001014351191840185,,,,,,,,3404687707,,,,,,,,,,,,,,,,,,
8
+ 453887,7,9,0,58,488,2007-10-08 10:50:39,2007-10-08 10:58:47,132,0,0,0,4,18,14,15,14,-1,-1,0,0,0,3,0,0,0,0,0,0,0,0,0,1,1,1,2,4,1,1,0,0,1,0,0,0,0,0,0,0,0,0,00001020131191840639,74015,,1009,,40108,,1009,5114284569,4,,,,,,,,74015,,,,,,,,,
9
+ 453888,0,0,0,0,6,2007-10-08 10:58:53,2007-10-08 10:58:59,0,0,0,0,0,911,-1,911,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,00001026591191841133,1087,,1087,,,,1087,7234961461,,,,,,,,,,,,,,,,,,
10
+ 453891,72,0,0,60,163,2007-10-08 10:55:11,2007-10-08 10:59:06,103,0,0,0,4,18,14,15,14,-1,-1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,1,2,4,0,1,0,0,1,0,0,0,0,0,0,0,0,0,00001023611191840911,74015,,1009,,40111,,1009,7188493989,4,,,,,,,,74015,,,,,,,,,
11
+ 453893,3,0,0,44,173,2007-10-08 10:56:15,2007-10-08 10:59:11,129,0,0,0,4,16,13,15,13,-1,-1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,1,2,4,0,1,0,0,1,0,0,0,0,0,0,0,0,0,00001024601191840975,74013,,1009,,40311,,1009,5119780434,2,,,,,,,,74013,,,,,,,,,
12
+ 453894,0,0,0,0,0,2007-10-08 10:59:12,2007-10-08 10:59:12,0,0,0,0,0,913,-1,913,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,00001026751191841152,1824,,1824,,,,1824,9959938868,,,,,,,,,,,,,,,,,,
13
+ 453899,0,0,0,110,110,2007-10-08 10:57:36,2007-10-08 10:59:26,0,0,0,75,0,2,-1,1,1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,00001025701191841056,74004,,2012,,,,2012,9114281803,1,,,,,,,,74004,,,,,,,,,
14
+ 453900,7,454,0,62,1044,2007-10-08 10:41:57,2007-10-08 10:59:28,528,0,0,0,5,8,6,7,6,-1,-1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,1,2,4,1,1,0,0,3,0,0,0,0,0,0,0,0,0,00001013611191840117,74009,,1011,,40202,,1011,3116878459,1,,,,,,,,74009,,,,,,,,,
15
+ 453901,0,0,0,162,162,2007-10-08 10:56:48,2007-10-08 10:59:30,0,0,0,139,0,3,2,1,2,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,00001025091191841008,74001,,2013,,,,2013,3709843581,1,,,,,,,,74001,,,,,,,,,
16
+ 453904,180,2,0,61,988,2007-10-08 10:41:12,2007-10-08 10:59:32,788,0,0,0,4,18,14,15,14,-1,-1,0,0,0,3,0,0,0,0,1,0,0,0,0,0,1,1,2,4,1,1,0,0,1,0,0,0,0,0,0,0,0,0,00001013161191840072,74015,,1009,,40121,,1009,4148642911,4,,,,,,,,74015,,,,,,,,,
17
+ 453911,545,0,0,62,192,2007-10-08 10:47:37,2007-10-08 10:59:54,130,0,0,0,4,8,6,7,6,-1,-1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,1,2,4,0,1,0,0,3,0,0,0,0,0,0,0,0,0,00001018111191840457,74009,,1011,,41023,,1011,9467885678,1,,,,,,,,74009,,,,,,,,,
18
+ 453913,0,0,0,102,102,2007-10-08 10:58:14,2007-10-08 10:59:56,0,0,0,70,0,2,1,1,1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,00001026141191841094,74004,,2004,,,,2004,6186251935,4,,,,,,,,74004,,,,,,,,,
@@ -3,3 +3,7 @@ end
3
3
 
4
4
  class EchiLog < ActiveRecord::Base
5
5
  end
6
+
7
+ #The EchiAgent database table may not always be present
8
+ class EchiAgent < ActiveRecord::Base
9
+ end
@@ -4,6 +4,7 @@ require 'faster_csv'
4
4
  require 'net/ftp'
5
5
  require 'net/smtp'
6
6
  require 'fileutils'
7
+ require 'uuidtools'
7
8
 
8
9
  class Logger
9
10
  #Change the logging format to include a timestamp
@@ -13,7 +14,6 @@ class Logger
13
14
  end
14
15
 
15
16
  module EchiConverter
16
-
17
17
  def connect_database
18
18
  databaseconfig = $workingdir + '/../config/database.yml'
19
19
  dblogfile = $workingdir + '/../log/database.log'
@@ -259,9 +259,16 @@ module EchiConverter
259
259
  ftp_session.chdir($config["echi_ftp_directory"])
260
260
  end
261
261
  files = ftp_session.list('chr*')
262
+
263
+ #Also fetch the agname.dat file if it is configured to be processed
264
+ if $config["echi_update_agent_data"] == "Y"
265
+ files = files + ftp_session.list("agname.dat")
266
+ end
267
+
262
268
  file_cnt = 0
263
269
  files.each do | file |
264
270
  file_data = file.split(' ')
271
+
265
272
  local_filename = $workingdir + '/../files/to_process/' + file_data[8]
266
273
  ftp_session.getbinaryfile(file_data[8], local_filename)
267
274
  if $config["echi_ftp_delete"] == 'Y'
@@ -280,63 +287,130 @@ module EchiConverter
280
287
  end
281
288
  return
282
289
  end
283
- end
284
290
 
285
- def process_ascii filename
286
- echi_file = $workingdir + "/../files/to_process/" + filename
291
+ def process_ascii filename
292
+ echi_file = $workingdir + "/../files/to_process/" + filename
287
293
 
288
- if $config["echi_process_log"] == "Y"
289
- #Log the file
290
- echi_log = EchiLog.new
291
- echi_log.filename = filename
292
- #echi_log.filenumber = filenumber
293
- #echi_log.version = fileversion
294
- end
294
+ if $config["echi_process_log"] == "Y"
295
+ #Log the file
296
+ echi_log = EchiLog.new
297
+ echi_log.filename = filename
298
+ #echi_log.filenumber = filenumber
299
+ #echi_log.version = fileversion
300
+ end
295
301
 
296
- #Perform a transaction for each file, including the log table
297
- #in order to commit as one atomic action upon success
298
- EchiRecord.transaction do
299
- @record_cnt = 0
300
- FasterCSV.foreach(echi_file) do |row|
301
- if row != nil
302
- @log.debug '<====================START RECORD ' + @record_cnt.to_s + ' ====================>'
303
- echi_record = EchiRecord.new
304
- cnt = 0
305
- @echi_schema["fields"].each do | field |
306
- if field["type"] == "bool" || field["type"] == "bool_int"
307
- case row[cnt]
308
- when "0"
309
- echi_record[field["name"]] = "N"
310
- when "1"
311
- echi_record[field["name"]] = "Y"
312
- end
313
- @log.debug field["name"] + ' == ' + row[cnt]
314
- else
315
- echi_record[field["name"]] = row[cnt]
316
- if row[cnt] != nil
302
+ #Perform a transaction for each file, including the log table
303
+ #in order to commit as one atomic action upon success
304
+ EchiRecord.transaction do
305
+ @record_cnt = 0
306
+ FasterCSV.foreach(echi_file) do |row|
307
+ if row != nil
308
+ @log.debug '<====================START RECORD ' + @record_cnt.to_s + ' ====================>'
309
+ echi_record = EchiRecord.new
310
+ cnt = 0
311
+ @echi_schema["fields"].each do | field |
312
+ if field["type"] == "bool" || field["type"] == "bool_int"
313
+ case row[cnt]
314
+ when "0"
315
+ echi_record[field["name"]] = "N"
316
+ when "1"
317
+ echi_record[field["name"]] = "Y"
318
+ end
317
319
  @log.debug field["name"] + ' == ' + row[cnt]
320
+ else
321
+ echi_record[field["name"]] = row[cnt]
322
+ if row[cnt] != nil
323
+ @log.debug field["name"] + ' == ' + row[cnt]
324
+ end
318
325
  end
326
+ cnt += 1
319
327
  end
320
- cnt += 1
328
+ echi_record.save
329
+ @log.debug '<====================STOP RECORD ' + @record_cnt.to_s + ' ====================>'
330
+ @record_cnt += 1
321
331
  end
322
- echi_record.save
323
- @log.debug '<====================STOP RECORD ' + @record_cnt.to_s + ' ====================>'
324
- @record_cnt += 1
325
332
  end
326
333
  end
327
- end
328
334
 
329
- #Move the file to the processed directory
330
- FileUtils.mv(echi_file, @processeddirectory)
335
+ #Move the file to the processed directory
336
+ FileUtils.mv(echi_file, @processeddirectory)
331
337
 
332
- if $config["echi_process_log"] == "Y"
333
- #Finish logging the details on the file
334
- echi_log.records = @record_cnt
335
- echi_log.processed_at = Time.now
336
- echi_log.save
338
+ if $config["echi_process_log"] == "Y"
339
+ #Finish logging the details on the file
340
+ echi_log.records = @record_cnt
341
+ echi_log.processed_at = Time.now
342
+ echi_log.save
343
+ end
344
+
345
+ return @record_cnt
346
+ end
347
+
348
+ def insert_agent_data field
349
+
350
+ begin
351
+ echi_agent = EchiAgent.new
352
+ echi_agent.group_id = field[0]
353
+ echi_agent.login_id = field[1]
354
+ echi_agent.name = field[2]
355
+ echi_agent.save
356
+ rescue => err
357
+ @log.info "Unable to insert agent record - " + err
358
+ end
359
+
337
360
  end
338
361
 
339
- return @record_cnt
340
- end
362
+ #Method to insert data into 'echi_agents' based on agname.dat
363
+ def process_agent_data
364
+ agent_file = $workingdir + "/../files/to_process/agname.dat"
365
+
366
+ if File.exists?(agent_file)
367
+ EchiAgent.transaction do
368
+ @record_cnt = 0
369
+ File.open(agent_file).each do |row|
370
+ if row != nil
371
+ field = row.rstrip.split('|')
372
+ @log.debug '<====================START AGENT RECORD ' + @record_cnt.to_s + ' ====================>'
373
+ agent = EchiAgent.find(:first, :conditions => [ "login_id = ? AND group_id = ?", field[1], field[0]])
374
+ if agent != nil
375
+ if agent.name != field[2]
376
+ agent.name = field[2]
377
+ agent.update
378
+ @record_cnt += 1
379
+ @log.debug "Updated record - " + field.inspect
380
+ else
381
+ @log.debug "No update required for - " + field.inspect
382
+ end
383
+ else
384
+ insert_agent_data field
385
+ @record_cnt += 1
386
+ @log.debug "Inserted new record - " + field.inspect
387
+ end
388
+ end
389
+ @log.debug '<====================STOP AGENT RECORD ' + @record_cnt.to_s + ' ====================>'
390
+ end
391
+ end
392
+ @agent_file_processed = Time.now
393
+ #Move the file to the processed directory
394
+ begin
395
+ agname_new_filename = "agname_" + UUID.timestamp_create.to_s + ".dat"
396
+ target_file = @processeddirectory + "/" + agname_new_filename
397
+ FileUtils.mv(agent_file, target_file)
398
+ rescue => err
399
+ @log.info "Issue with agname_*.dat filename - " + err
400
+ end
401
+ if $config["echi_process_log"] == "Y"
402
+ #Log the file
403
+ echi_log = EchiLog.new
404
+ echi_log.filename = agname_new_filename
405
+ #echi_log.filenumber = filenumber
406
+ #echi_log.version = fileversion
407
+ #Finish logging the details on the file
408
+ echi_log.records = @record_cnt
409
+ echi_log.processed_at = Time.now
410
+ echi_log.save
411
+ end
412
+ end
413
+ end
341
414
 
342
- require $workingdir + '/echi-converter/version.rb'
415
+ require $workingdir + '/echi-converter/version.rb'
416
+ end
@@ -2,7 +2,7 @@ module EchiConverter #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 3
5
- TINY = 1
5
+ TINY = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -30,6 +30,7 @@ if $config["export_type"] == 'database' || $config["export_type"] == 'both'
30
30
  connect_database
31
31
  end
32
32
 
33
+ $init_date = Time.now
33
34
  @log.info "Running..."
34
35
 
35
36
  #Our Main loop
@@ -54,6 +55,10 @@ loop do
54
55
  end
55
56
  end
56
57
 
58
+ if $config["echi_update_agent_data"] == "Y" && $config["pco_process"] == "N"
59
+ process_agent_data
60
+ end
61
+
57
62
  sleep $config["fetch_interval"]
58
63
 
59
64
  #Make sure we did not lose our database connection while we slept
@@ -41,6 +41,7 @@ class EchiDaemon < Daemon
41
41
  #Open the logfile with appropriate output level
42
42
  initiate_logger
43
43
  @log.info "ECHI-Converter service initializing"
44
+ $init_date = Time.now
44
45
 
45
46
  #If configured for database insertion, connect to the database
46
47
  if $config["export_type"] == 'database' || $config["export_type"] == 'both'
@@ -71,7 +72,11 @@ class EchiDaemon < Daemon
71
72
  @log.info "Processed file #{file} with #{record_cnt.to_s} records"
72
73
  end
73
74
  end
74
-
75
+
76
+ if $config["echi_update_agent_data"] == "Y" && $config["pco_process"] == "N"
77
+ process_agent_data
78
+ end
79
+
75
80
  sleep $config["fetch_interval"]
76
81
 
77
82
  #Make sure we did not lose our database connection while we slept
@@ -33,7 +33,7 @@
33
33
  <h1>ECHI Converter</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/echi-converter"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/echi-converter" class="numbers">0.3.1</a>
36
+ <a href="http://rubyforge.org/projects/echi-converter" class="numbers">0.3.2</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;echi-converter&#8217;</h1>
39
39
 
@@ -63,6 +63,7 @@
63
63
  <li>Convert from the defined Binary format to <span class="caps">ASCII</span></li>
64
64
  <li>Insert the records into the defined database table using database transactions, via ActiveRecord, on a per file basis to support recovery on failure</li>
65
65
  <li>Change schema structure via <span class="caps">YML</span> configuration file to accommodate various releases of the <span class="caps">ECHI</span> format</li>
66
+ <li>Supports inserting agent names from agname.dat</li>
66
67
  <li>Runs as a daemon (via fork) on *NIX and a service on Windows</li>
67
68
  </ol>
68
69
 
@@ -72,6 +73,7 @@
72
73
  <ol>
73
74
  <li>echi_records &#8211; stores all <span class="caps">ECHI</span> data </li>
74
75
  <li>echi_logs &#8211; stores a log entry for each file processed</li>
76
+ <li>echi_agents &#8211; stores the data from the agname.dat file</li>
75
77
  </ol></li>
76
78
  </ol>
77
79
 
@@ -86,8 +88,9 @@
86
88
  <li><a href="http://activesupport.rubyforge.org/">ActiveSupport v1.4.2+</a></li>
87
89
  <li><a href="http://daemons.rubyforge.org/">Daemons v1.0.7+</a></li>
88
90
  <li><a href="http://fastercsv.rubyforge.org/">FasterCSV v1.2.0+</a></li>
89
- <li><a href="http://rake.rubyforge.org/">Rake v0.7.3+</a>
90
- # <a href="http://win32utils.rubyforge.org/">Win32-service v.0.5.0+</a> (Manual install for Windows only)</li>
91
+ <li><a href="http://rake.rubyforge.org/">Rake v0.7.3+</a></li>
92
+ <li><a href="http://sporkmonger.com/projects/uuidtools/">UUIDTools v1.0.1+</a></li>
93
+ <li><a href="http://win32utils.rubyforge.org/">Win32-service v.0.5.0+</a> (Manual install for Windows only)</li>
91
94
  <li><a href="http://rubyforge.org/projects/seattlerb/">Hoe v1.2.2+</a></li>
92
95
  </ol>
93
96
 
@@ -136,6 +139,9 @@
136
139
  </ol>
137
140
 
138
141
 
142
+ <p>Note: When using a Windows <span class="caps">FTP</span> server, you must configure the <span class="caps">FTP</span> server to provide a <span class="caps">UNIX</span> directory listing format</p>
143
+
144
+
139
145
  <h2>Usage</h2>
140
146
 
141
147
 
@@ -161,7 +167,7 @@
161
167
 
162
168
 
163
169
  <ol>
164
- <li>echi-converter install myproject &#8211; install the service (must specify complete path such as c:\path\to\my\project &#8211; if the directory name or path has any spaces, please enclose the &#8216;myproject&#8217; in double quotes )</li>
170
+ <li>echi-converter install myproject &#8211; install the service (must specify complete path such as c:\path\to\my\project &#8211; if the directory name or path has any spaces, please enclose the &#8220;myproject&#8221; in double quotes )</li>
165
171
  <li>echi-converter start &#8211; start the service</li>
166
172
  <li>echi-converter stop &#8211; stop the service</li>
167
173
  <li>echi-converter pause &#8211; pause the service</li>
@@ -172,6 +178,14 @@
172
178
  </ol>
173
179
 
174
180
 
181
+ <ol>
182
+ <li>If you would like to run the script interactively, you may also execute this command:
183
+ <ol>
184
+ <li>ruby &#8220;c:\myproject\lib\main_win32.rb&#8221;</li>
185
+ </ol></li>
186
+ </ol>
187
+
188
+
175
189
  <h2>Demonstration of usage</h2>
176
190
 
177
191
 
@@ -217,7 +231,7 @@
217
231
 
218
232
  <p>Comments are welcome. Send an email to <a href="mailto:jason@goecke.net">jason [at] goecke.net</a>.</p>
219
233
  <p class="coda">
220
- <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 4th November 2007<br>
234
+ <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 5th November 2007<br>
221
235
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
222
236
  </p>
223
237
  </div>
@@ -22,11 +22,13 @@ The utility provides the following capabilities:
22
22
  # Convert from the defined Binary format to ASCII
23
23
  # Insert the records into the defined database table using database transactions, via ActiveRecord, on a per file basis to support recovery on failure
24
24
  # Change schema structure via YML configuration file to accommodate various releases of the ECHI format
25
+ # Supports inserting agent names from agname.dat
25
26
  # Runs as a daemon (via fork) on *NIX and a service on Windows
26
27
 
27
28
  # Table names:
28
29
  ## echi_records - stores all ECHI data
29
30
  ## echi_logs - stores a log entry for each file processed
31
+ ## echi_agents - stores the data from the agname.dat file
30
32
 
31
33
 
32
34
  h2. Requirements
@@ -38,7 +40,8 @@ h2. Requirements
38
40
  # "Daemons v1.0.7+":http://daemons.rubyforge.org/
39
41
  # "FasterCSV v1.2.0+":http://fastercsv.rubyforge.org/
40
42
  # "Rake v0.7.3+":http://rake.rubyforge.org/
41
- # "Win32-service v.0.5.0+":http://win32utils.rubyforge.org/ (Manual install for Windows only)
43
+ # "UUIDTools v1.0.1+":http://sporkmonger.com/projects/uuidtools/
44
+ # "Win32-service v.0.5.0+":http://win32utils.rubyforge.org/ (Manual install for Windows only)
42
45
  # "Hoe v1.2.2+":http://rubyforge.org/projects/seattlerb/
43
46
 
44
47
 
@@ -50,7 +53,6 @@ or
50
53
 
51
54
  <pre syntax="ruby">gem install echi-converter</pre>
52
55
 
53
-
54
56
  h2. Setup
55
57
 
56
58
  First, create the directory with all of the project files where you will run this application from:
@@ -70,6 +72,7 @@ Once this is complete, then simply run these commands from the project directory
70
72
  # rake migrate (creates the tables required for the system)
71
73
  # echi-converter (starts the server daemon, refer to its usage)
72
74
 
75
+ Note: When using a Windows FTP server, you must configure the FTP server to provide a UNIX directory listing format
73
76
 
74
77
  h2. Usage
75
78
 
@@ -86,7 +89,7 @@ For *NIX:
86
89
 
87
90
  For Windows:
88
91
 
89
- # echi-converter install myproject - install the service (must specify complete path such as c:\path\to\my\project - if the directory name or path has any spaces, please enclose the 'myproject' in double quotes )
92
+ # echi-converter install myproject - install the service (must specify complete path such as c:\path\to\my\project - if the directory name or path has any spaces, please enclose the "myproject" in double quotes )
90
93
  # echi-converter start - start the service
91
94
  # echi-converter stop - stop the service
92
95
  # echi-converter pause - pause the service
@@ -95,6 +98,9 @@ For Windows:
95
98
  # echi-converter uninstall - uninstall the service
96
99
  # echi-converter delete - delete the service"
97
100
 
101
+ # If you would like to run the script interactively, you may also execute this command:
102
+ ## ruby "c:\myproject\lib\main_win32.rb"
103
+
98
104
  h2. Demonstration of usage
99
105
 
100
106
  Start the daemon/service:
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: echi-converter
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.1
7
- date: 2007-11-04 00:00:00 -07:00
6
+ version: 0.3.2
7
+ date: 2007-11-05 00:00:00 -08:00
8
8
  summary: ECHI Conversion Utility - Provides a utility to fetch Avaya CMS / ECHI binary files, convert them and insert into a database table via ActiveRecord
9
9
  require_paths:
10
10
  - lib
@@ -58,10 +58,13 @@ files:
58
58
  - config/install_files.yml
59
59
  - db/migrate/001_create_echi_records.rb
60
60
  - db/migrate/002_create_echi_logs.rb
61
+ - db/migrate/003_create_echi_agents.rb
62
+ - db/migrate/004_change_log_name_size.rb
61
63
  - bin/echi-converter
62
64
  - examples/extended_version12/chr0003
63
65
  - examples/extended_version12/chr0003.txt
64
66
  - examples/schemas/oracle_echi.sql
67
+ - examples/ascii_csv/chr5500.123
65
68
  test_files:
66
69
  - test/test_echi-converter.rb
67
70
  - test/test_helper.rb
@@ -127,3 +130,12 @@ dependencies:
127
130
  - !ruby/object:Gem::Version
128
131
  version: 0.7.3
129
132
  version:
133
+ - !ruby/object:Gem::Dependency
134
+ name: uuidtools
135
+ version_requirement:
136
+ version_requirements: !ruby/object:Gem::Version::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 1.0.1
141
+ version: