From 6d99b474dbf63cf176004723cecba6f08f3dcd34 Mon Sep 17 00:00:00 2001 From: YarynaHirniak Date: Sun, 13 Oct 2024 20:14:53 +0300 Subject: [PATCH 1/2] flowers iplemented --- src/main/java/flower/store/Chamomile.java | 11 +++++++++++ src/main/java/flower/store/Flower.java | 12 +++++++++++- src/main/java/flower/store/Rose.java | 12 ++++++++++++ src/main/java/flower/store/Tulip.java | 11 +++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/main/java/flower/store/Chamomile.java create mode 100644 src/main/java/flower/store/Rose.java create mode 100644 src/main/java/flower/store/Tulip.java diff --git a/src/main/java/flower/store/Chamomile.java b/src/main/java/flower/store/Chamomile.java new file mode 100644 index 00000000..539f14eb --- /dev/null +++ b/src/main/java/flower/store/Chamomile.java @@ -0,0 +1,11 @@ +package flower.store; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Chamomile extends Flower { + public Chamomile() { + this.setFlowerType(FlowerType.CHAMOMILE); + } +} \ No newline at end of file diff --git a/src/main/java/flower/store/Flower.java b/src/main/java/flower/store/Flower.java index 206ef870..3fc2c7d6 100644 --- a/src/main/java/flower/store/Flower.java +++ b/src/main/java/flower/store/Flower.java @@ -18,4 +18,14 @@ public class Flower { public String getColor() { return color.toString(); } -} + + public void setPrice(double price) { + this.price = price; + } + + public double getPrice() { + return price; + } + + +} \ No newline at end of file diff --git a/src/main/java/flower/store/Rose.java b/src/main/java/flower/store/Rose.java new file mode 100644 index 00000000..16ee4dbf --- /dev/null +++ b/src/main/java/flower/store/Rose.java @@ -0,0 +1,12 @@ +package flower.store; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Rose extends Flower { + public Rose() { + this.setFlowerType(FlowerType.ROSE); + } +} \ No newline at end of file diff --git a/src/main/java/flower/store/Tulip.java b/src/main/java/flower/store/Tulip.java new file mode 100644 index 00000000..1ba91992 --- /dev/null +++ b/src/main/java/flower/store/Tulip.java @@ -0,0 +1,11 @@ +package flower.store; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Tulip extends Flower { + public Tulip() { + this.setFlowerType(FlowerType.TULIP); + } +} From e037eedc835ba4eb8e3b213d4c8341fd0a8b0e73 Mon Sep 17 00:00:00 2001 From: YarynaHirniak Date: Sun, 13 Oct 2024 20:21:47 +0300 Subject: [PATCH 2/2] all functions --- src/main/java/flower/store/FlowerBucket.java | 24 +++++++++++++ src/main/java/flower/store/FlowerPack.java | 16 +++++++-- src/main/java/flower/store/Store.java | 20 +++++++++++ .../java/flower/store/FlowerBucketTest.java | 35 +++++++++++++++++++ 4 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 src/main/java/flower/store/FlowerBucket.java create mode 100644 src/main/java/flower/store/Store.java create mode 100644 src/test/java/flower/store/FlowerBucketTest.java diff --git a/src/main/java/flower/store/FlowerBucket.java b/src/main/java/flower/store/FlowerBucket.java new file mode 100644 index 00000000..eb2c003b --- /dev/null +++ b/src/main/java/flower/store/FlowerBucket.java @@ -0,0 +1,24 @@ +package flower.store; + +import java.util.ArrayList; +import java.util.List; + +public class FlowerBucket { + private List flowerPacks = new ArrayList<>(); + + public void add(FlowerPack flowerPack) { + flowerPacks.add(flowerPack); + } + + public double getPrice() { + double totalPrice = 0.0; + for (FlowerPack pack : flowerPacks) { + totalPrice += pack.getPrice(); + } + return totalPrice; + } + + public List getFlowerPacks() { + return flowerPacks; + } +} diff --git a/src/main/java/flower/store/FlowerPack.java b/src/main/java/flower/store/FlowerPack.java index 44c99495..a34a7448 100644 --- a/src/main/java/flower/store/FlowerPack.java +++ b/src/main/java/flower/store/FlowerPack.java @@ -1,6 +1,18 @@ package flower.store; - public class FlowerPack { private Flower flower; private int quantity; -} + + public FlowerPack(Flower flower, int quantity) { + this.flower = flower; + this.quantity = quantity; + } + + public double getPrice() { + return flower.getPrice() * quantity; + } + + public Flower getFlower() { + return flower; + } +} \ No newline at end of file diff --git a/src/main/java/flower/store/Store.java b/src/main/java/flower/store/Store.java new file mode 100644 index 00000000..5aa8d367 --- /dev/null +++ b/src/main/java/flower/store/Store.java @@ -0,0 +1,20 @@ +package flower.store; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class Store { + private List buckets = new ArrayList<>(); + + public void addBucket(FlowerBucket bucket) { + buckets.add(bucket); + } + + public List search(FlowerType flowerType) { + return buckets.stream() + .filter(bucket -> bucket.getFlowerPacks().stream() + .anyMatch(pack -> pack.getFlower().getFlowerType() == flowerType)) + .collect(Collectors.toList()); + } +} diff --git a/src/test/java/flower/store/FlowerBucketTest.java b/src/test/java/flower/store/FlowerBucketTest.java new file mode 100644 index 00000000..749e382e --- /dev/null +++ b/src/test/java/flower/store/FlowerBucketTest.java @@ -0,0 +1,35 @@ +package flower.store; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Assertions; + +import java.util.Random; + +public class FlowerBucketTest { + private static final Random RANDOM_GENERATOR = new Random(); + private static final int MAX_QUANTITY = 1000; + private static final int MAX_PRICE = 100; + + private FlowerBucket flowerBucket; + + @BeforeEach + public void init() { + flowerBucket = new FlowerBucket(); + } + + @Test + public void testPrice() { + int price = 10; + int quantity = RANDOM_GENERATOR.nextInt(MAX_QUANTITY); + Flower flower = new Rose(); + flower.setPrice(price); + FlowerPack flowerPack = new FlowerPack(flower, quantity); + flowerBucket.add(flowerPack); + int expectedPrice = price * quantity; + Assertions.assertEquals(expectedPrice, flowerBucket.getPrice()); + } + + + +} \ No newline at end of file