Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require_relative "product.rb"
- require_relative "store.rb"
- require_relative "customer.rb"
- require_relative "order.rb"
- require "rexml/document"
- class Shop
- def initialize(arguments)
- raise "Wrong number of arguments" if ARGV.count < 5
- @input_database = ARGV[0]
- @ipnut_store = ARGV[1]
- @orders_list = ARGV[2]
- @output_store = ARGV[3]
- @output_database = ARGV[4]
- # 1. Overte spravne mnozstvi argumentu. V pripade chyby vyvolejte vyjimku.
- # 2. Ulozte si argumenty do vhodnych promennych pro pozdejsi pouziti
- end
- def load_products
- File.open(ARGV[0], "r") do |file|
- product_list = REXML::Document.new(file)
- product_list.root.elements.each do |product_elements|
- name = student_element.elements["name"].text
- price = student_element.elements["price"].text
- product = Produkt.new(name, price)
- end
- end
- # 1. Nactete XML soubor s produkty. V pripade problemu (napr. neexistujici soubor) vyvolejte vyjimku.
- # 2. Prochazejte XML soubor a vytvarejte nove objekty tridy Produkt. Nezapomente odchytavat vyjimky.
- end
- def load_store
- @store = Store.new
- File.open(ARGV[1], "r") do |file|
- doc = REXML::Document.new(file)
- doc.root.elements.each do |store_element|
- product_code = store_element.elements["product_code"].text
- amount = store_elements["amount"].text
- @store.add_product(product_code, amount)
- end
- end
- # 1. Nactete XML soubor se stavem skladu. V pripade problemu (napr. neexistujici soubor) vyvolejte vyjimku.
- # 2. Prochazejte XML soubor a volejte @store.add_product.
- end
- def load_orders
- @orders = []
- File.open(ARGV[2], "r") do |file|
- doc = REXML::Document.new(file)
- doc.root.elements.each do |order_element|
- end
- end
- # 1. Nactete XML soubor s objednavkami. V pripade problemu (napr. neexistujici soubor) vyvolejte vyjimku.
- # 2. Prochazejte XML soubor a pro jednotlive objednavky:
- # 2a. Vytvorte novy objekt tridy Order.
- # 2b. Pro jednotlive polozky objednavky vytvorte novy objekt tridy OrderItem a predejte jej metode add_item.
- # 2c. Pridejte objednavku do pole @orders.
- end
- def process_order(order)
- # Zpracujte objednavku.
- # Prochazejte jednolive polozky objednavky a provadejte zadane kontroly.
- # V pripade, ze je vse v poradku, upravte stav skladu volanim @store.sell_product.
- # Nezapomente si ulozit udaje o zakaznikovi.
- end
- def process_orders
- # Zpracujte objednavky. Zde se deje samotna logika programu, ktera je podrobne popsana v zadani.
- # Seradte objednavky dle data a v poradi od nejstarsi je zacnete zpracovavat volanim metody process_order.
- end
- def save_store
- # Projdete produkty v @store a ulozte je do XML souboru.
- end
- def save_customers
- # Projdete zakazniky ziskane ze zpracovanych zakazek a ulozte je do XML souboru.
- end
- def run
- # Doplnte reseni vyjimek.
- load_products
- load_store
- load_orders
- process_orders
- save_store
- save_customers
- end
- end
- shop = Shop.new(ARGV)
- shop.run
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement