From 5436118829591619f31de35b9e03a0f8cea2d291 Mon Sep 17 00:00:00 2001 From: Leonie Eitze Date: Thu, 15 Jun 2023 18:47:10 +0200 Subject: [PATCH] Wrote Enum for webshops changed code in respective classes --- .../java/de/rwu/easydrop/core/OfferIdentifier.java | 9 +++------ src/main/java/de/rwu/easydrop/model/Product.java | 7 +++++++ .../easydrop/service/retriever/ProductRetriever.java | 11 ++++------- src/test/java/de/rwu/easydrop/core/CoreTest.java | 2 ++ 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/rwu/easydrop/core/OfferIdentifier.java b/src/main/java/de/rwu/easydrop/core/OfferIdentifier.java index 819ea8a..c52c5d1 100644 --- a/src/main/java/de/rwu/easydrop/core/OfferIdentifier.java +++ b/src/main/java/de/rwu/easydrop/core/OfferIdentifier.java @@ -15,15 +15,12 @@ import java.util.ArrayList; public class OfferIdentifier { - String[] webshops; + OfferRetriever offerRetriever; ProductRetriever productRetriever; - public OfferIdentifier() { - Config config = Config.getInstance(); - this.webshops = config.getProperty("WEBSHOPS").split(","); - } + public OfferIdentifier() {} public List runIdentifier() { /* muss die Kataloge durchforsten nach vergleichbaren Produkten auf mehreren Händlerwebseiten (APIs) @@ -37,7 +34,7 @@ public class OfferIdentifier { // Just an example here taken from demo.products-config.json; should be generic and configurable either via // JSON or the database later. ProductCatalogue catalogue = new ProductCatalogue("Gigabyte GeForce RTX 3060", "Very epic GPU"); - for(String webshop: this.webshops) { + for(Product.webshop webshop: Product.webshop.values()) { // The product retriever should know what API with which ProductID to query; high-level components should not know about such // things. Product product = this.productRetriever.getProductFromDataSource(webshop, catalogue.getProductName()); diff --git a/src/main/java/de/rwu/easydrop/model/Product.java b/src/main/java/de/rwu/easydrop/model/Product.java index 1e5b3b2..c8b70ff 100644 --- a/src/main/java/de/rwu/easydrop/model/Product.java +++ b/src/main/java/de/rwu/easydrop/model/Product.java @@ -10,6 +10,13 @@ import lombok.Data; */ @Data public class Product { + /* + * Constants for data source/destination platforms + */ + public enum webshop{ + AMAZON, EBAY + } + /** * Data source platform, like "Amazon". */ diff --git a/src/main/java/de/rwu/easydrop/service/retriever/ProductRetriever.java b/src/main/java/de/rwu/easydrop/service/retriever/ProductRetriever.java index d4e5950..8b814f9 100644 --- a/src/main/java/de/rwu/easydrop/service/retriever/ProductRetriever.java +++ b/src/main/java/de/rwu/easydrop/service/retriever/ProductRetriever.java @@ -90,17 +90,14 @@ public class ProductRetriever { * @param productName Product name, translated to the correct product ID for the data source * @return Product from that data source or null if data source not available */ - public Product getProductFromDataSource(final String dataSourceName, final String productName) { - switch(dataSourceName.toLowerCase()) { - case "amazon": + public Product getProductFromDataSource(Product.webshop dataSourceName, final String productName) { + switch(dataSourceName) { + case AMAZON: // TODO: Translation from productName to productId (Amazon) needed return getProductFromAmazon(productName); - case "ebay": + case EBAY: // TODO: Translation from productName to productId (eBay) needed return getProductFromEbay(productName); - case "persistence": - // TODO: Translation from productName to productId (persistence layer) needed - return getProductFromPersistence(productName); default: return null; } diff --git a/src/test/java/de/rwu/easydrop/core/CoreTest.java b/src/test/java/de/rwu/easydrop/core/CoreTest.java index b81a7ac..55cb64c 100644 --- a/src/test/java/de/rwu/easydrop/core/CoreTest.java +++ b/src/test/java/de/rwu/easydrop/core/CoreTest.java @@ -5,6 +5,8 @@ import org.junit.jupiter.api.Test; public class CoreTest { @Test void testRunCore() { + Core core1=new Core(); + core1.runCore(); } }