Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions src/main/java/com/booleanuk/core/Bagel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.booleanuk.core;

public class Bagel extends Item{
private Filling filling;

public Bagel(String variant, String sku){
super("Bagel", variant, sku);
}

public String getFillingSku(){
return filling.getSku();
}

public boolean gotFilling(){
if (filling != null){
return true;
}
return false;
}

public String getCombiSku(){
if (filling != null){
return super.getSku() + "-" + filling.getSku();
}
return getSku();
}

public boolean setFilling(Filling filling){
this.filling = filling;
return true;
}

@Override
public float getTotalCost(PriceList priceList){
if(this.gotFilling())
return priceList.getPrice(super.getSku()) + priceList.getPrice(filling.getSku());
return priceList.getPrice(super.getSku());
}
}
101 changes: 101 additions & 0 deletions src/main/java/com/booleanuk/core/Basket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package com.booleanuk.core;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Basket {
private Map<String, BasketItem> basketList;
private PriceList priceList;
private Inventory inventory;
private int capacity;

public Basket(int capacity, PriceList priceList, Inventory inventory) {
this.capacity = capacity;
this.priceList = priceList;
this.inventory = inventory;
this.basketList = new HashMap<String, BasketItem>();
}

public boolean addItem(Item item, int quantity) {
String key = getBasketKey(item);
if (basketList.containsKey(key)) {
BasketItem DupItem = basketList.get(key);
DupItem.setQuantity(DupItem.getQuantity() + quantity);
} else {
BasketItem basketItem = new BasketItem(item, quantity);
basketList.put(key, basketItem);
}
return true;
}

public boolean removeItem(Item item) {
String key = getBasketKey(item);

if(!basketList.containsKey(key)){
return false;
}

int currQuantity = basketList.get(key).getQuantity();

if(currQuantity > 1){
basketList.get(key).setQuantity(currQuantity - 1);
}else{
basketList.remove(key);
}
return true;
}

public boolean isFull() {
int total = 0;
for(BasketItem basketItem: basketList.values()){
total+= basketItem.getQuantity();
if(total>=capacity)
return true;
}
return false;
}

public boolean itemInList(Item item) {
if(basketList.containsKey(getBasketKey(item))){
return true;
}
return false;
}

public float getTotalCost() {
float total = 0.0f;
for(BasketItem item : basketList.values()){
total+= item.getTotalCost(priceList);
}
return total;
}

public Map<String, BasketItem> getBasketList() {
return basketList;
}

private String getBasketKey(Item item) {
if (item instanceof Bagel) {
return ((Bagel) item).getCombiSku();
}
return item.getSku();
}

public int getCapacity() {
return capacity;
}

public boolean setCapacity(int capacity, String role) {
if (role == "Manager" && capacity>=0){
this.capacity = capacity;
return true;
}
return false;
}

public boolean isInInventory(Item item){
return inventory.getItems().containsKey(item.getSku());
}
}
34 changes: 34 additions & 0 deletions src/main/java/com/booleanuk/core/BasketItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.booleanuk.core;

public class BasketItem {
private Item item;
private int quantity;

public BasketItem(Item item, int quantity){
this.item = item;
this.quantity = quantity;
}

public Item getItem(){
return item;
}

public int getQuantity(){
return quantity;
}

public boolean setQuantity(int quantity){
this.quantity = quantity;
return false;
}

public String getSku(){
if (item instanceof Bagel)
return ((Bagel) item).getCombiSku();
return item.getSku();
}

public float getTotalCost(PriceList priceList){
return item.getTotalCost(priceList)*quantity;
}
}
7 changes: 7 additions & 0 deletions src/main/java/com/booleanuk/core/Coffee.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.booleanuk.core;

public class Coffee extends Item{
public Coffee(String variant, String sku){
super("Coffee", variant, sku);
}
}
8 changes: 8 additions & 0 deletions src/main/java/com/booleanuk/core/Filling.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.booleanuk.core;

public class Filling extends Item{
public Filling(String variant, String sku){
super("Filling", variant, sku);
}

}
28 changes: 28 additions & 0 deletions src/main/java/com/booleanuk/core/Inventory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.booleanuk.core;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Inventory {
private Map<String, Item> items;

public Inventory() {
this.items = new HashMap<String, Item>();
}

public boolean addItem(Item item){
items.put(item.getSku(), item);
return false;
}

public boolean removeItem(Item item){
items.remove(item.getSku());
return false;
}

public Map<String, Item> getItems(){
return items;
}
}
29 changes: 29 additions & 0 deletions src/main/java/com/booleanuk/core/Item.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.booleanuk.core;

public class Item {
private String name;
private String variant;
private String sku;

public Item(String name, String variant, String sku){
this.name = name;
this.variant = variant;
this.sku = sku;
}

public String getName() {
return name;
}

public String getVariant(){
return variant;
}

public String getSku(){
return sku;
}

public float getTotalCost(PriceList priceList){
return priceList.getPrice(sku);
}
}
20 changes: 20 additions & 0 deletions src/main/java/com/booleanuk/core/PriceList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.booleanuk.core;

import java.util.HashMap;
import java.util.Map;

public class PriceList {
private Map<String, Float> priceList;

public PriceList(){
priceList = new HashMap<String, Float>();
}

public float getPrice(String sku){
return priceList.get(sku);
}

public void setPrice(String sku, float price){
priceList.put(sku, price);
}
}
Loading
Loading