From c560f02d7fa06d55377652eb0be8db094ba7aab7 Mon Sep 17 00:00:00 2001 From: Nastia Khalus Date: Fri, 11 Oct 2024 13:13:03 +0300 Subject: [PATCH 1/4] added class flower --- .vscode/settings.json | 3 +++ pom.xml | 24 +++++-------------- src/main/java/flower/store/Cammomile.java | 13 +++++++++++ src/main/java/flower/store/Flower.java | 26 ++++++++++++++------- src/main/java/flower/store/FlowerColor.java | 20 +++++----------- src/main/java/flower/store/FlowerPack.java | 6 ----- src/main/java/flower/store/FlowerType.java | 2 +- src/main/java/flower/store/Rose.java | 12 ++++++++++ src/main/java/flower/store/Tulip.java | 12 ++++++++++ 9 files changed, 70 insertions(+), 48 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/main/java/flower/store/Cammomile.java delete mode 100644 src/main/java/flower/store/FlowerPack.java create mode 100644 src/main/java/flower/store/Rose.java create mode 100644 src/main/java/flower/store/Tulip.java diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..c5f3f6b9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3dd8db5b..0e730762 100644 --- a/pom.xml +++ b/pom.xml @@ -4,10 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - ua.edu.ucu.apps - Lab5.1 + ucu.apps + ucu 1.0-SNAPSHOT + + 17 + 17 + org.projectlombok @@ -23,20 +27,4 @@ - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.0.0-M7 - - - - - - 15 - 15 - UTF-8 - - \ No newline at end of file diff --git a/src/main/java/flower/store/Cammomile.java b/src/main/java/flower/store/Cammomile.java new file mode 100644 index 00000000..c9d609d0 --- /dev/null +++ b/src/main/java/flower/store/Cammomile.java @@ -0,0 +1,13 @@ +package flower.store; + +class Cammomile extends Flower { + + public Cammomile() { + super(FlowerColor.WHITE, FlowerType.CAMMOMILE, 0.0, 0.0); + } + + public Cammomile(double sepalLength, FlowerColor color, double price) { + super(color, FlowerType.CAMMOMILE, price, sepalLength); + } +} + diff --git a/src/main/java/flower/store/Flower.java b/src/main/java/flower/store/Flower.java index 206ef870..41d1382d 100644 --- a/src/main/java/flower/store/Flower.java +++ b/src/main/java/flower/store/Flower.java @@ -2,20 +2,28 @@ import lombok.Getter; import lombok.Setter; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; - - +@NoArgsConstructor +@AllArgsConstructor +@Getter @Setter + public class Flower { - @Getter - private double sepalLength; private FlowerColor color; - @Getter - private double price; - @Getter private FlowerType flowerType; + private double price; + private double sepalLength; + + public Flower(Flower flower){ + this.color = flower.color; + this.flowerType = flower.flowerType; + this.price = flower.price; + this.sepalLength = flower.sepalLength; + } - public String getColor() { - return color.toString(); + public String getColor(){ + return color.getCode(); } } diff --git a/src/main/java/flower/store/FlowerColor.java b/src/main/java/flower/store/FlowerColor.java index 4a6221f7..1c0d2214 100644 --- a/src/main/java/flower/store/FlowerColor.java +++ b/src/main/java/flower/store/FlowerColor.java @@ -1,18 +1,10 @@ package flower.store; - +import lombok.Getter; +@Getter public enum FlowerColor { - /** - * Flower colors. - */ - RED("#FF0000"), BLUE("#0000FF"); - private final String stringRepresentation; - - FlowerColor(String stringRepresentation) { - this.stringRepresentation = stringRepresentation; - } - - @Override - public String toString() { - return stringRepresentation; + RED("#FF0000"),WHITE("#FFFFFF"),YELLOW("#FFFF00"); + private String code; + FlowerColor(String code){ + this.code = code; } } diff --git a/src/main/java/flower/store/FlowerPack.java b/src/main/java/flower/store/FlowerPack.java deleted file mode 100644 index 44c99495..00000000 --- a/src/main/java/flower/store/FlowerPack.java +++ /dev/null @@ -1,6 +0,0 @@ -package flower.store; - -public class FlowerPack { - private Flower flower; - private int quantity; -} diff --git a/src/main/java/flower/store/FlowerType.java b/src/main/java/flower/store/FlowerType.java index ac22e2fd..05710e46 100644 --- a/src/main/java/flower/store/FlowerType.java +++ b/src/main/java/flower/store/FlowerType.java @@ -1,5 +1,5 @@ package flower.store; public enum FlowerType { - CHAMOMILE, ROSE, TULIP; + ROSE,TULIP,CAMMOMILE; } diff --git a/src/main/java/flower/store/Rose.java b/src/main/java/flower/store/Rose.java new file mode 100644 index 00000000..54b465be --- /dev/null +++ b/src/main/java/flower/store/Rose.java @@ -0,0 +1,12 @@ +package flower.store; + +class Rose extends Flower { + + public Rose() { + super(FlowerColor.RED, FlowerType.ROSE, 0.0, 0.0); + } + + public Rose(double sepalLength, FlowerColor color, double price) { + super(color, FlowerType.ROSE, price, sepalLength); + } +} \ 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..8754634b --- /dev/null +++ b/src/main/java/flower/store/Tulip.java @@ -0,0 +1,12 @@ +package flower.store; + +class Tulip extends Flower { + + public Tulip() { + super(FlowerColor.YELLOW, FlowerType.TULIP, 0.0, 0.0); + } + + public Tulip(double sepalLength, FlowerColor color, double price) { + super(color, FlowerType.TULIP, price, sepalLength); + } +} From 3327e5b94745c990a7fafe4b4a09ac7b9ce83106 Mon Sep 17 00:00:00 2001 From: Nastia Khalus Date: Fri, 11 Oct 2024 13:17:39 +0300 Subject: [PATCH 2/4] added linter --- .github/workflows/superlinter.yml | 23 +++++++++++++++++++++++ .gitignore | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/superlinter.yml diff --git a/.github/workflows/superlinter.yml b/.github/workflows/superlinter.yml new file mode 100644 index 00000000..ac239327 --- /dev/null +++ b/.github/workflows/superlinter.yml @@ -0,0 +1,23 @@ +name: SuperLinter + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + lint: + name: Lint Code Base + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Run Super-Linter + uses: github/super-linter@v5 + env: + VALIDATE_ALL_CODEBASE: true + DEFAULT_BRANCH: main + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index e673575a..bdf09ad2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea/ -target/ \ No newline at end of file +target/ +.vscode/ \ No newline at end of file From 8bc8dcf979cb8e27eec7b5b99632c620228406c5 Mon Sep 17 00:00:00 2001 From: Nastia Khalus Date: Fri, 11 Oct 2024 13:24:27 +0300 Subject: [PATCH 3/4] Added new branch --- src/main/java/flower/store/FlowerBucket.java | 33 +++++++++++++++++ src/main/java/flower/store/FlowerPack.java | 25 +++++++++++++ src/main/java/flower/store/Main.java | 25 +++++++++++++ src/main/java/flower/store/Store.java | 35 +++++++++++++++++++ .../java/flower/store/FlowerBucketTest.java | 31 ++++++++++++++++ 5 files changed, 149 insertions(+) create mode 100644 src/main/java/flower/store/FlowerBucket.java create mode 100644 src/main/java/flower/store/FlowerPack.java create mode 100644 src/main/java/flower/store/Main.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..0cf56f90 --- /dev/null +++ b/src/main/java/flower/store/FlowerBucket.java @@ -0,0 +1,33 @@ +package flower.store; + +import java.util.ArrayList; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor + +public class FlowerBucket { + private List flowerPacks; + + public FlowerBucket(){ + this.flowerPacks = new ArrayList<>(); + } + + public void add(FlowerPack flowerPack){ + flowerPacks.add(flowerPack); + } + + public double getPrice(){ + double price = 0; + for (FlowerPack flowerPack:flowerPacks) + {price += flowerPack.getPrice();} + + return price; + } + +} diff --git a/src/main/java/flower/store/FlowerPack.java b/src/main/java/flower/store/FlowerPack.java new file mode 100644 index 00000000..0980d3e2 --- /dev/null +++ b/src/main/java/flower/store/FlowerPack.java @@ -0,0 +1,25 @@ +package flower.store; + + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor + + +public class FlowerPack { + private Flower flower; + private int count; + + public FlowerPack(Flower flower,int count){ + this.flower = new Flower(flower); + this.count = count; + } + + public double getPrice(){ + return flower.getPrice()*count; + } +} diff --git a/src/main/java/flower/store/Main.java b/src/main/java/flower/store/Main.java new file mode 100644 index 00000000..1edd5ad6 --- /dev/null +++ b/src/main/java/flower/store/Main.java @@ -0,0 +1,25 @@ +package flower.store; + +public class Main { + public static void main(String[] args) { + Flower flower1 = new Flower(); + flower1.setPrice(100); + flower1.setFlowerType(FlowerType.ROSE); + + FlowerBucket flowerBucket = new FlowerBucket(); + FlowerPack flowerPack1 = new FlowerPack(new Flower(flower1), 5); + flowerBucket.add(flowerPack1); + + Flower flower2 = new Flower(); + flower2.setPrice(100); + flower2.setFlowerType(FlowerType.ROSE); + FlowerPack flowerPack2 = new FlowerPack(new Flower(flower2), 10); + flowerBucket.add(flowerPack2); + + + System.out.println(flowerBucket.getPrice()); + + flower2.setPrice(10); + System.out.println(flowerBucket.getPrice()); + } +} diff --git a/src/main/java/flower/store/Store.java b/src/main/java/flower/store/Store.java new file mode 100644 index 00000000..17e6111b --- /dev/null +++ b/src/main/java/flower/store/Store.java @@ -0,0 +1,35 @@ +package flower.store; + +import java.util.ArrayList; +import java.util.List; + +public class Store { + private List flowerBuckets; + + public Store() { + this.flowerBuckets = new ArrayList<>(); + } + public void addBucket(FlowerBucket bucket) { + this.flowerBuckets.add(bucket); + } + + public List search(FlowerColor color, FlowerType type, double min, double max) { + List res = new ArrayList<>(); + + for (int i = 0; i < flowerBuckets.size(); i++) { + FlowerBucket bucket = flowerBuckets.get(i); + + for (int j = 0; j < bucket.getFlowerPacks().size(); j++) { + FlowerPack pack = bucket.getFlowerPacks().get(j); + Flower flower = pack.getFlower(); + + if ((color == null || flower.getColor().equals(color.getCode())) && + (type == null || flower.getFlowerType() == type) && + flower.getPrice() >= min && flower.getPrice() <= max) { + res.add(flower); + } + } + } + return res; + } +} diff --git a/src/test/java/flower/store/FlowerBucketTest.java b/src/test/java/flower/store/FlowerBucketTest.java new file mode 100644 index 00000000..b9ac6412 --- /dev/null +++ b/src/test/java/flower/store/FlowerBucketTest.java @@ -0,0 +1,31 @@ +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 = RANDOM_GENERATOR.nextInt(MAX_PRICE); + int quantity = RANDOM_GENERATOR.nextInt(MAX_QUANTITY); + Flower flower = new Rose(); + flower.setPrice(price); + FlowerPack flowerPack = new FlowerPack(flower, quantity); + flowerBucket.add(flowerPack); + Assertions.assertEquals(price * quantity, flowerBucket.getPrice()); + } +} From 1d811fc833a37a80d9deb6a2c9307c5090f53a90 Mon Sep 17 00:00:00 2001 From: Nastia Khalus Date: Sun, 13 Oct 2024 18:33:46 +0300 Subject: [PATCH 4/4] fixed bugs 1 --- src/main/java/flower/store/Flower.java | 5 ++--- src/main/java/flower/store/FlowerBucket.java | 14 ++++++-------- src/main/java/flower/store/FlowerColor.java | 10 ++++++++-- src/main/java/flower/store/FlowerPack.java | 9 +++------ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/main/java/flower/store/Flower.java b/src/main/java/flower/store/Flower.java index 41d1382d..8c3b5fe6 100644 --- a/src/main/java/flower/store/Flower.java +++ b/src/main/java/flower/store/Flower.java @@ -9,21 +9,20 @@ @AllArgsConstructor @Getter @Setter - public class Flower { private FlowerColor color; private FlowerType flowerType; private double price; private double sepalLength; - public Flower(Flower flower){ + public Flower(Flower flower) { this.color = flower.color; this.flowerType = flower.flowerType; this.price = flower.price; this.sepalLength = flower.sepalLength; } - public String getColor(){ + public String getColor() { return color.getCode(); } } diff --git a/src/main/java/flower/store/FlowerBucket.java b/src/main/java/flower/store/FlowerBucket.java index 0cf56f90..20f8e441 100644 --- a/src/main/java/flower/store/FlowerBucket.java +++ b/src/main/java/flower/store/FlowerBucket.java @@ -10,24 +10,22 @@ @Getter @Setter @AllArgsConstructor - public class FlowerBucket { private List flowerPacks; - public FlowerBucket(){ + public FlowerBucket() { this.flowerPacks = new ArrayList<>(); } - public void add(FlowerPack flowerPack){ + public void add(FlowerPack flowerPack) { flowerPacks.add(flowerPack); } - public double getPrice(){ + public double getPrice() { double price = 0; - for (FlowerPack flowerPack:flowerPacks) - {price += flowerPack.getPrice();} - + for (FlowerPack flowerPack : flowerPacks) { + price += flowerPack.getPrice(); + } return price; } - } diff --git a/src/main/java/flower/store/FlowerColor.java b/src/main/java/flower/store/FlowerColor.java index 1c0d2214..36afb021 100644 --- a/src/main/java/flower/store/FlowerColor.java +++ b/src/main/java/flower/store/FlowerColor.java @@ -1,10 +1,16 @@ package flower.store; + import lombok.Getter; + @Getter public enum FlowerColor { - RED("#FF0000"),WHITE("#FFFFFF"),YELLOW("#FFFF00"); + RED("#FF0000"), + WHITE("#FFFFFF"), + YELLOW("#FFFF00"); + private String code; - FlowerColor(String code){ + + FlowerColor(String code) { this.code = code; } } diff --git a/src/main/java/flower/store/FlowerPack.java b/src/main/java/flower/store/FlowerPack.java index 0980d3e2..3db89874 100644 --- a/src/main/java/flower/store/FlowerPack.java +++ b/src/main/java/flower/store/FlowerPack.java @@ -1,6 +1,5 @@ package flower.store; - import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -8,18 +7,16 @@ @Getter @Setter @NoArgsConstructor - - public class FlowerPack { private Flower flower; private int count; - public FlowerPack(Flower flower,int count){ + public FlowerPack(Flower flower, int count) { this.flower = new Flower(flower); this.count = count; } - public double getPrice(){ - return flower.getPrice()*count; + public double getPrice() { + return flower.getPrice() * count; } }