<< Masa.20110907-update-importer-testcase-spreadsheet-testcases-migel | 2011 | Masa.20110905-update-degi-flavor-oddb_org-502-entry-xmlconv-debug-importer-testcases-migel >>
Goal/Estimate/Evaluation:
Task
Experiment
def save_all_products(lang = 'de', csvfilename = 'migel_products_de.csv', estimate = false, skip = -1)
lang.upcase!
start_time = Time.now
index_table_name = 'migel_model_migelid_migel_code'
migel_codes = ODBA.cache.index_keys('migel_model_migelid_migel_code')
total = migel_codes.length
CSV.open(filename, 'w') do |writer|
migel_codes.each_with_index do |migel_code, count|
if count > skip
get_products_by_migel_code(migel_code, lang).each do |record|
writer << [
migel_code,
record[:pharmacode],
record[:ean_code],
record[:article_name],
record[:companyname],
record[:companyean],
record[:ppha],
record[:ppub],
record[:factor],
record[:pzr],
record[:size],
record[:status],
record[:datetime],
record[:stdate],
record[:language],
]
end
end
puts estimate_time(start_time, total, count+1) if estimate
end
end
end
def get_products_by_migel_code(migel_code, lang = 'de')
lang.upcase!
products = if migelid = Migel::Model::Migelid.find_by_migel_code(migel_code)
migel_code = migelid.migel_code.split('.').to_s
if table = Migel::Util::Swissindex.search_migel_table(migel_code, lang)
table.select{|record| record[:pharmacode] and record[:article_name]}
end
end
products
end
Restore
masa@masa ~/ywesee/migel_dev $ sudo -u postgres dropdb migel_test; sudo -u postgres createdb -E UTF8 -T template0 migel_test masa@masa ~/ywesee/migel_dev $ bin/migeld server_url='druby://localhost:77777' db_name='migel_test'
migel> Migel::Importer.new.update('data/csv/migel_de_test.csv','de')
Run
migel> Migel::Importer.new.save_all_products('de', 'migel_products_de.csv', true)
Log
1 / 37 Estimate total: 6.77 [h] It will be done in: 6.59 [h] 2 / 37 Estimate total: 4.04 [h] It will be done in: 3.82 [h] 3 / 37 Estimate total: 2.96 [h] It will be done in: 2.72 [h] 4 / 37 Estimate total: 2.56 [h] It will be done in: 2.29 [h] 5 / 37 Estimate total: 2.06 [h] It will be done in: 1.78 [h] 6 / 37 Estimate total: 1.96 [h] It will be done in: 1.64 [h] ... 36 / 37 Estimate total: 35.82 [m] It will be done in: 0.97 [m] 37 / 37 Estimate total: 35.12 [m] It will be done in: -0.00 [m]
Result
Next
Experiment
def import_all_products_from_csv(file_name = 'migel_products_de.csv', lang = 'de', estimate = false)
lang.upcase!
start_time = Time.new
total = File.readlines(file_name).to_a.length
count = 0
CSV.open(file_name, 'r') do |line|
count += 1
migel_code = line[0]
if migelid = Migel::Model::Migelid.find_by_migel_code(migel_code)
record = {
:pharmacode => line[1],
:ean_code => line[2],
:article_name => line[3],
:companyname => line[4],
:companyean => line[5],
:ppha => line[6],
:ppub => line[7],
:factor => line[8],
:pzr => line[9],
:size => line[10],
:status => line[11],
:datetime => line[12],
:stdate => line[13],
:language => line[14],
}
update_product(migelid, record, lang)
end
puts estimate_time(start_time, total, count) if estimate
end
end
Run
migel> Migel::Importer.new.import_all_products_from_csv('migel_products_de.csv','de', true)
Log
... 2356 / 2358 Estimate total: 5.54 [m] It will be done in: 0.00 [m] 2357 / 2358 Estimate total: 5.54 [m] It will be done in: 0.00 [m] 2358 / 2358 Estimate total: 5.54 [m] It will be done in: -0.00 [m]
Result

Note
Experiment
def unimported_migel_code_list(output_filename = nil)
migle_codes = migel_code_list.select do |migel_code|
migelid = Migel::Model::Migelid.find_by_migel_code(migel_code) and migelid.products.empty?
end
if output_filename
open(output_filename, 'w') do |out|
out.print migel_codes.join("\n"), "\n"
end
else
migel_codes
end
end
Run
migel> Migel::Importer.new.unimported_migel_code_list('unimported_migel_code_list.dat')
Result
masa@masa ~/ywesee/migel_dev $ cat unimported_migel_code_list.dat 15.11.02.00.1 15.20.01.02.2 15.30.50.00.1
Restore
masa@masa ~/ywesee/migel_dev $ sudo -u postgres dropdb migel; sudo -u postgres createdb -E UTF8 -T template0 migel masa@masa ~/ywesee/migel_dev $ bin/migeld
Import
migel> Migel::Importer.new.update('data/csv/migel_de.csv','de')
-> Array
migel> Migel::Importer.new.update('data/csv/migel_fr.csv','fr')
-> Array
migel> Migel::Importer.new.save_all_products('migel_product_de.csv', 'de', true)
migel> Migel::Importer.new.save_all_products('migel_product_fr.csv', 'fr', true)
Result
masa@masa ~/ywesee/migel_dev $ rake -f spec/suite.rake (in /home/masa/ywesee/migel_dev) rm -r coverage /usr/bin/ruby18 -S rcov -Ispec:lib -x /home/redcap/.rvm/gems spec/model/group_spec.rb spec/model/subgroup_spec.rb -- -c -fs Migel::Model::Group when initialized with migel code 15 migel code should be 15 subgroups should be empty limitation_text.to_s should be '' name.to_s should be '' name.xx should be nil Migel::Model::Group when limitation_text is updated limitation_text.de should be 'limitation text' Migel::Model::Subgroup when initialized with code 22 (group_code: 11) code should be 22 migel_code should be 11.22 migelids should be empty parent should be group limitation_text.to_s should be '' name.to_s should be '' name.xx should be nil Migel::Model::Group when limitation_text is updated limitation_text.de should be 'limitation text' Finished in 0.00627 seconds 14 examples, 0 failures
Result
Reference
migel server side