Advertisement
Macroblizz

Untitled

May 24th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.10 KB | None | 0 0
  1. require_relative "product.rb"
  2. require_relative "store.rb"
  3. require_relative "customer.rb"
  4. require_relative "order.rb"
  5. require "rexml/document"
  6.  
  7. class Shop
  8.   def initialize(arguments)
  9.     raise "Wrong number of arguments" if ARGV.count < 5
  10.     @input_database = ARGV[0]
  11.     @ipnut_store = ARGV[1]
  12.     @orders_list = ARGV[2]
  13.     @output_store = ARGV[3]
  14.     @output_database = ARGV[4]
  15.     # 1. Overte spravne mnozstvi argumentu. V pripade chyby vyvolejte vyjimku.
  16.     # 2. Ulozte si argumenty do vhodnych promennych pro pozdejsi pouziti
  17.   end
  18.  
  19.   def load_products
  20.     File.open(ARGV[0], "r") do |file|
  21.      product_list = REXML::Document.new(file)
  22.      product_list.root.elements.each do |product_elements|
  23.        name = student_element.elements["name"].text
  24.        price = student_element.elements["price"].text
  25.        product = Produkt.new(name, price)
  26.      end
  27.     end
  28.     # 1. Nactete XML soubor s produkty. V pripade problemu (napr. neexistujici soubor) vyvolejte vyjimku.
  29.     # 2. Prochazejte XML soubor a vytvarejte nove objekty tridy Produkt. Nezapomente odchytavat vyjimky.
  30.   end
  31.  
  32.   def load_store
  33.     @store = Store.new
  34.     File.open(ARGV[1], "r") do |file|
  35.       doc = REXML::Document.new(file)
  36.       doc.root.elements.each do |store_element|
  37.         product_code = store_element.elements["product_code"].text
  38.         amount = store_elements["amount"].text
  39.         @store.add_product(product_code, amount)      
  40.       end
  41.     end
  42.     # 1. Nactete XML soubor se stavem skladu. V pripade problemu (napr. neexistujici soubor) vyvolejte vyjimku.
  43.     # 2. Prochazejte XML soubor a volejte @store.add_product.
  44.   end
  45.  
  46.   def load_orders
  47.     @orders = []
  48.     File.open(ARGV[2], "r") do |file|
  49.       doc = REXML::Document.new(file)
  50.       doc.root.elements.each do |order_element|
  51.        
  52.       end
  53.     end
  54.     # 1. Nactete XML soubor s objednavkami. V pripade problemu (napr. neexistujici soubor) vyvolejte vyjimku.
  55.     # 2. Prochazejte XML soubor a pro jednotlive objednavky:
  56.     # 2a. Vytvorte novy objekt tridy Order.
  57.     # 2b. Pro jednotlive polozky objednavky vytvorte novy objekt tridy OrderItem a predejte jej metode add_item.
  58.     # 2c. Pridejte objednavku do pole @orders.
  59.   end
  60.  
  61.   def process_order(order)
  62.     # Zpracujte objednavku.
  63.     # Prochazejte jednolive polozky objednavky a provadejte zadane kontroly.
  64.     # V pripade, ze je vse v poradku, upravte stav skladu volanim @store.sell_product.
  65.     # Nezapomente si ulozit udaje o zakaznikovi.
  66.   end
  67.  
  68.   def process_orders
  69.     # Zpracujte objednavky. Zde se deje samotna logika programu, ktera je podrobne popsana v zadani.
  70.     # Seradte objednavky dle data a v poradi od nejstarsi je zacnete zpracovavat volanim metody process_order.
  71.   end
  72.  
  73.   def save_store
  74.     # Projdete produkty v @store a ulozte je do XML souboru.
  75.   end
  76.  
  77.   def save_customers
  78.     # Projdete zakazniky ziskane ze zpracovanych zakazek a ulozte je do XML souboru.
  79.   end
  80.  
  81.   def run
  82.     # Doplnte reseni vyjimek.
  83.     load_products
  84.     load_store
  85.     load_orders
  86.     process_orders
  87.     save_store
  88.     save_customers
  89.   end
  90. end
  91.  
  92. shop = Shop.new(ARGV)
  93. shop.run
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement