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()); + } +}