Advertisement
Guest User

Untitled

a guest
May 1st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.45 KB | None | 0 0
  1. package shopping_cart;
  2.  
  3. import javax.swing.JOptionPane;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6.  
  7. /**
  8.  *
  9.  * @author Diogo
  10.  */
  11. public class shopping_cart {
  12.  
  13.     public Map<String, Double> list_item;
  14.     public Map<String, Rule> rules;
  15.  
  16.     public static void main(String[] args) {
  17.  
  18.         Rule rules[] = {
  19.             new Rule("A", (double) 50.0, new Discount(3, (float) (double) 130.0)),
  20.             new Rule("B", (double) 30.0, new Discount(2, (float) (double) 45.0)),
  21.             new Rule("C", (double) 20.0, null),
  22.             new Rule("D", (double) 15.0, null)
  23.         };
  24.         shopping_cart shopping = new shopping_cart(rules);
  25.         shopping.validate("A");
  26.         shopping.validate("B");
  27.         shopping.validate("B");
  28.         shopping.validate("A");
  29.         shopping.validate("A");
  30.         JOptionPane.showMessageDialog(null, "Valor total de mercadorias, R$: " + " " + shopping.total());
  31.  
  32.     }
  33.  
  34.     public shopping_cart(Rule rules[]) {
  35.         this.rules = new HashMap<>();
  36.         for (Rule rule : rules) {
  37.             this.rules.put(rule.getProduct(), rule);
  38.         }
  39.  
  40.         this.list_item = new HashMap<>();
  41.     }
  42.  
  43.     public boolean validate(String product) {
  44.         Rule rule = rules.get(product);
  45.         if (rule != null) {
  46.             Double quantity = list_item.get(product);
  47.             if (quantity == null) {
  48.                 quantity = 0.0;
  49.             } else {
  50.                 list_item.remove(product);
  51.             }
  52.             list_item.put(product, quantity + 1 );
  53.             return true;
  54.         }
  55.         return false;
  56.     }
  57.  
  58.     public Double total() {
  59.         Double total = 0.0;
  60.         total = list_item.entrySet().stream().map((implementation) -> {
  61.             Double quantity = implementation.getValue();
  62.             Double total_of_item = 0.0;
  63.             Rule rule = rules.get(implementation.getKey());
  64.            
  65.             Discount discount = rule.getDiscount();
  66.             if (discount != null && quantity > discount.getQuantity()) {
  67.                 total_of_item += (quantity / discount.getQuantity()) * discount.getValue();
  68.                 quantity = quantity % discount.getQuantity();
  69.             }
  70.            
  71.            
  72.             total_of_item += rule.getValue() * quantity;
  73.            
  74.             return total_of_item;
  75.         }).map((total_of_item) -> total_of_item).reduce(total, (accumulator, _item) -> accumulator + _item);
  76.         return total;
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement