diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/product/Product.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/model/product/Product.java index 7de88e53c85e081887b09549000ec9407680d6c1..41115213d058526bc03bd85df95b7f1c76611add 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/product/Product.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/model/product/Product.java @@ -1,5 +1,7 @@ package ntnu.idatt2016.v233.SmartMat.model.product; +import lombok.Builder; + /** * Product is a record class representing a product in the system. * All other info about the product is fetched from api call on fronted. @@ -8,5 +10,6 @@ package ntnu.idatt2016.v233.SmartMat.model.product; * @version 1.0 * @since 04.04.2023 */ +@Builder public record Product (int ean, String name, String description){ } diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtil.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtil.java index d21433675267df8a221a4843435fb1b41abc7da4..ef00ccd4dfb9f5609e41641498e3fb50cd5093ad 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtil.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtil.java @@ -34,12 +34,30 @@ public class ProductUtil { for (String unit : VOLUME_UNITS) { int i = words.indexOf(unit); if (i != -1) { - return Optional.of(words.get(i - 1) + " " + unit); + return Optional.of(words.get(i - 1) + unit); } } + + volume = words.stream().filter(word -> Arrays.stream(VOLUME_UNITS).anyMatch(word::contains)) + .filter(ProductUtil::hasNumbers) + .findAny() + .orElse(""); + if (!volume.equals("")){ + return Optional.of(volume); + } } } + return Optional.empty(); } + + /** + * Checks if a string contains any numbers + * @param s The string to check + * @return True if the string contains any numbers, false otherwise + */ + private static boolean hasNumbers(String s) { + return s.matches(".*\\d.*"); + } } diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/util/tempUtil.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/util/tempUtil.java deleted file mode 100644 index 73e2d53ad47be2dd348a2906c9180bbb6736fcad..0000000000000000000000000000000000000000 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/util/tempUtil.java +++ /dev/null @@ -1,4 +0,0 @@ -package ntnu.idatt2016.v233.SmartMat.util; - -public class tempUtil { -} diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtilTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtilTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3579696a2393181a79b4fa994a9bc72dd3a08342 --- /dev/null +++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtilTest.java @@ -0,0 +1,53 @@ +package ntnu.idatt2016.v233.SmartMat.util; + +import ntnu.idatt2016.v233.SmartMat.model.product.Product; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.Console; + +import static org.junit.jupiter.api.Assertions.*; + +class ProductUtilTest { + + Product product; + @BeforeEach + void setUp() { + this.product = Product.builder() + .ean(123456789) + .name("Pepsi Original 24x500 ml") + .description("Pepsi Original 24x500 ml") + .build(); + } + + @Test + void getVolumeFromProduct() { + assertEquals("24x500ml", ProductUtil.getVolumeFromProduct(product).get()); + + this.product = Product.builder() + .ean(123456789) + .name("test") + .description("Pepsi Original 24x500 ml") + .build(); + + assertEquals("24x500ml", ProductUtil.getVolumeFromProduct(product).get()); + + this.product = Product.builder() + .ean(123456789) + .name("Pepsi Original 24x500ml") + .description("test") + .build(); + + + assertEquals("24x500ml", ProductUtil.getVolumeFromProduct(product).get()); + + this.product = Product.builder() + .ean(123456789) + .name("test") + .description("Pepsi Original 24x500ml") + .build(); + + + assertEquals("24x500ml", ProductUtil.getVolumeFromProduct(product).get()); + } +} \ No newline at end of file