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
32 changes: 32 additions & 0 deletions src/main/java/com/booleanuk/core/Bagel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.booleanuk.core;

import java.util.ArrayList;
import java.util.List;

public class Bagel extends Item{
private final List<Item> fillings = new ArrayList<>();

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

@Override
public float getPrice(){
float total = 0f;
for(Item f: fillings){
total += f.getPrice();
}
return super.getPrice() + total;
}

public List<Item> getFillings() {
return fillings;
}

public boolean addFilling(Item filling){
if(!(filling instanceof Filling))
return false;
fillings.add(filling);
return true;
}
}
66 changes: 66 additions & 0 deletions src/main/java/com/booleanuk/core/Basket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.booleanuk.core;

import java.util.ArrayList;
import java.util.List;

public class Basket {
private List<Item> items = new ArrayList<>();
private int capacity;
private static int stdCapacity = 5;

public Basket() {
this.capacity = stdCapacity;
}

public int add(String sku) {
if (items.size() >= capacity)
return 0;
if(!Stock.isInStock(sku))
return -1;
items.add(Stock.getItem(sku));
return 1;
}

public int add(Item item) {
if (items.size() >= capacity)
return 0;
if(item == null || !Stock.isInStock(item.getSku()))
return -1;
items.add(item);
return 1;
}

public boolean remove(String sku) {
for(Item item: items){
if(item.getSku().equals(sku)) {
items.remove(item);
return true;
}
}
return false;
}

public List<Item> getItems() {
return items;
}

public int getCapacity() {
return capacity;
}

public static int getStdCapacity() {
return stdCapacity;
}

public static void setStdCapacity(int stdCapacity) {
Basket.stdCapacity = stdCapacity;
}

public float getTotalCost(){
float total = 0f;
for (Item item: items){
total += item.getPrice();
}
return total;
}
}
8 changes: 8 additions & 0 deletions src/main/java/com/booleanuk/core/Coffee.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.booleanuk.core;

public class Coffee extends Item{

public Coffee(String sku, float price, String variant) {
super(sku, price, "Coffee", variant);
}
}
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 sku, float price, String variant) {
super(sku, price, "Filling", variant);
}
}
31 changes: 31 additions & 0 deletions src/main/java/com/booleanuk/core/Item.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.booleanuk.core;

public abstract class Item {
private String sku;
private float price;
private String Name;
private String variant;

public String getVariant() {
return variant;
}

public String getName() {
return Name;
}

public float getPrice() {
return price;
}

public String getSku() {
return sku;
}

public Item(String sku, float price, String name, String variant) {
this.sku = sku;
this.price = price;
Name = name;
this.variant = variant;
}
}
60 changes: 60 additions & 0 deletions src/main/java/com/booleanuk/core/Stock.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.booleanuk.core;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Stock {
static private List<Item> stock = Arrays.asList(
new Bagel("BGLO", 0.49f, "Onion"),
new Bagel("BGLP", 0.39f, "Plain"),
new Bagel("BGLE", 0.49f, "Everything"),
new Bagel("BGLS", 0.49f, "Sesame"),
new Coffee("COFB", 0.99f, "Black"),
new Coffee("COFW", 1.19f, "White"),
new Coffee("COFC", 1.29f, "Cappuccino"),
new Coffee("COFL", 1.29f, "Latte"),
new Filling("FILB", 0.12f, "Bacon"),
new Filling("FILE", 0.12f, "Egg"),
new Filling("FILC", 0.12f, "Cheese"),
new Filling("FILX", 0.12f, "Cream Cheese"),
new Filling("FILS", 0.12f, "Smoked Salmon"),
new Filling("FILH", 0.12f, "Ham"));


public static boolean isInStock(String sku) {
for (Item item: stock){
if (item.getSku().equals(sku)){
return true;
}
}
return false;
}

public static Item getItem(String sku) {
for (Item item: stock){
if (item.getSku().equals(sku)){
return copyItem(item);
}
}
return null;
}

private static Item copyItem(Item item){
if (item instanceof Bagel)
return new Bagel(item.getSku(), item.getPrice(), item.getVariant());
if (item instanceof Coffee)
return new Coffee(item.getSku(), item.getPrice(), item.getVariant());
else
return new Filling(item.getSku(), item.getPrice(), item.getVariant());
}

public static List<Filling> getFillings() {
List<Filling> fillings = new ArrayList<>();
for (Item item: stock){
if (item instanceof Filling)
fillings.add((Filling)copyItem(item));
}
return fillings;
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions src/main/java/com/booleanuk/core/domain-model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
| Class | Member | Method | Scenario | Output |
|---------------|--------------------|------------------------------|------------------------------|------------|
| Basket | List<Item> items | add(String sku) | Correct code basket not full | 1 |
| | int capacity | | Correct code basket full | 0 |
| | static stdCapacity | | Incorrect code | -1 |
| | static Stock stock | remove(String sku) | Exists | True |
| | | | Doesn't exist | False |
| | | getTotalCost() | | float |
| Stock | List<Item> stock | | | |
| | | getPrice(String sku) | Exists | float |
| | | | Doesn't exist | -1 |
| | | getFillings() | | List<Item> |
| | | getItem(String sku) | Exists | Item |
| | | | Does not exist | null |
| Abstract Item | String sku | getSku() | | sku |
| | float price | getPrice() | | price |
| | String name | getName() | | name |
| | String variant | getVariant() | | variant |
| | | | | |
| Bagel | List<Filling> | addFilling(String "variant") | | void |
| | | removeFilling("variant") | | |
| Coffee | | | | |
| Filling | | | | |


32 changes: 32 additions & 0 deletions src/main/java/com/booleanuk/extension/Bagel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.booleanuk.extension;

import java.util.ArrayList;
import java.util.List;

public class Bagel extends Item{
private final List<Item> fillings = new ArrayList<>();

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

@Override
public float getPrice(){
float total = 0f;
for(Item f: fillings){
total += f.getPrice();
}
return super.getPrice() + total;
}

public List<Item> getFillings() {
return fillings;
}

public boolean addFilling(Item filling){
if(!(filling instanceof Filling))
return false;
fillings.add(filling);
return true;
}
}
Loading
Loading