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
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..8c3b5fe6 100644
--- a/src/main/java/flower/store/Flower.java
+++ b/src/main/java/flower/store/Flower.java
@@ -2,20 +2,27 @@
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();
+ return color.getCode();
}
}
diff --git a/src/main/java/flower/store/FlowerBucket.java b/src/main/java/flower/store/FlowerBucket.java
new file mode 100644
index 00000000..20f8e441
--- /dev/null
+++ b/src/main/java/flower/store/FlowerBucket.java
@@ -0,0 +1,31 @@
+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/FlowerColor.java b/src/main/java/flower/store/FlowerColor.java
index 4a6221f7..36afb021 100644
--- a/src/main/java/flower/store/FlowerColor.java
+++ b/src/main/java/flower/store/FlowerColor.java
@@ -1,18 +1,16 @@
package flower.store;
+import lombok.Getter;
+
+@Getter
public enum FlowerColor {
- /**
- * Flower colors.
- */
- RED("#FF0000"), BLUE("#0000FF");
- private final String stringRepresentation;
+ RED("#FF0000"),
+ WHITE("#FFFFFF"),
+ YELLOW("#FFFF00");
- FlowerColor(String stringRepresentation) {
- this.stringRepresentation = stringRepresentation;
- }
+ private String code;
- @Override
- public String toString() {
- return stringRepresentation;
+ 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 44c99495..3db89874 100644
--- a/src/main/java/flower/store/FlowerPack.java
+++ b/src/main/java/flower/store/FlowerPack.java
@@ -1,6 +1,22 @@
package flower.store;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
public class FlowerPack {
private Flower flower;
- private int quantity;
+ 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/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/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/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/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/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);
+ }
+}
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());
+ }
+}