<< 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