Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package shopping_cart;
- import javax.swing.JOptionPane;
- import java.util.HashMap;
- import java.util.Map;
- /**
- *
- * @author Diogo
- */
- public class shopping_cart {
- public Map<String, Double> list_item;
- public Map<String, Rule> rules;
- public static void main(String[] args) {
- Rule rules[] = {
- new Rule("A", (double) 50.0, new Discount(3, (float) (double) 130.0)),
- new Rule("B", (double) 30.0, new Discount(2, (float) (double) 45.0)),
- new Rule("C", (double) 20.0, null),
- new Rule("D", (double) 15.0, null)
- };
- shopping_cart shopping = new shopping_cart(rules);
- shopping.validate("A");
- shopping.validate("B");
- shopping.validate("B");
- shopping.validate("A");
- shopping.validate("A");
- JOptionPane.showMessageDialog(null, "Valor total de mercadorias, R$: " + " " + shopping.total());
- }
- public shopping_cart(Rule rules[]) {
- this.rules = new HashMap<>();
- for (Rule rule : rules) {
- this.rules.put(rule.getProduct(), rule);
- }
- this.list_item = new HashMap<>();
- }
- public boolean validate(String product) {
- Rule rule = rules.get(product);
- if (rule != null) {
- Double quantity = list_item.get(product);
- if (quantity == null) {
- quantity = 0.0;
- } else {
- list_item.remove(product);
- }
- list_item.put(product, quantity + 1 );
- return true;
- }
- return false;
- }
- public Double total() {
- Double total = 0.0;
- total = list_item.entrySet().stream().map((implementation) -> {
- Double quantity = implementation.getValue();
- Double total_of_item = 0.0;
- Rule rule = rules.get(implementation.getKey());
- Discount discount = rule.getDiscount();
- if (discount != null && quantity > discount.getQuantity()) {
- total_of_item += (quantity / discount.getQuantity()) * discount.getValue();
- quantity = quantity % discount.getQuantity();
- }
- total_of_item += rule.getValue() * quantity;
- return total_of_item;
- }).map((total_of_item) -> total_of_item).reduce(total, (accumulator, _item) -> accumulator + _item);
- return total;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement