From 0aa115e34ca231eefe2003919467fb017d60a7c2 Mon Sep 17 00:00:00 2001 From: Martin Geno Date: Fri, 23 Jun 2017 12:45:24 +0200 Subject: [PATCH] [TASK] fix for presentation --- .../monolith/domain/ProductRepository.java | 4 ++++ .../mstock/monolith/service/ShopService.java | 19 ++++++++++++++++--- .../monolith/web/ProductController.java | 10 +++++----- src/main/resources/templates/product.html | 4 ++-- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/main/java/de/mstock/monolith/domain/ProductRepository.java b/src/main/java/de/mstock/monolith/domain/ProductRepository.java index d72fb53..a807fae 100644 --- a/src/main/java/de/mstock/monolith/domain/ProductRepository.java +++ b/src/main/java/de/mstock/monolith/domain/ProductRepository.java @@ -11,6 +11,10 @@ public interface ProductRepository extends Repository { + "where key(i) = ?1 and lower(i.name) = ?2") Product findByI18nName(String language, String name); + @Query("select p from Product p join fetch p.i18n i left join fetch i.reviews r " + + "where key(i) = ?1 and p.id = ?2") + Product findByID(String language, Integer id); + @Query("select p from Product p") List findAll(); diff --git a/src/main/java/de/mstock/monolith/service/ShopService.java b/src/main/java/de/mstock/monolith/service/ShopService.java index c96f266..4b860d5 100644 --- a/src/main/java/de/mstock/monolith/service/ShopService.java +++ b/src/main/java/de/mstock/monolith/service/ShopService.java @@ -30,7 +30,7 @@ public class ShopService { /** * Gets all categories of the current language. - * + * * @return A simplified Data Transfer Object. */ public List getCategories(Locale locale) { @@ -44,7 +44,7 @@ public class ShopService { /** * Gets all products for a category in the current language. - * + * * @return A simplified Data Transfer Object. */ public List getProductsForCategory(Locale locale, String prettyUrlFragment) { @@ -73,7 +73,20 @@ public class ShopService { /** * Gets a product in the current language. - * + * + * @return A simplified Data Transfer Object. + */ + public ProductDTO getProduct(Locale locale, Integer id) { + Product product = productRepository.findByID(locale.getLanguage(), id); + if (product == null) { + throw new NotFoundException(); + } + return dtoFactory.createProductDTO(product, locale); + } + + /** + * Gets a product in the current language. + * * @return A simplified Data Transfer Object. */ public ProductDTO getProduct(Locale locale, String prettyUrlFragment) { diff --git a/src/main/java/de/mstock/monolith/web/ProductController.java b/src/main/java/de/mstock/monolith/web/ProductController.java index 5fbcacf..22730c5 100644 --- a/src/main/java/de/mstock/monolith/web/ProductController.java +++ b/src/main/java/de/mstock/monolith/web/ProductController.java @@ -31,7 +31,7 @@ public class ProductController { /** * Product page - * + * * @param prettyUrlFragment Pretty URL fragment * @param model Template model * @param locale Current locale @@ -46,7 +46,7 @@ public class ProductController { /** * Post a review - * + * * @param reviewForm Form data * @param bindingResult Form binding result after validation * @param prettyUrlFragment Product context @@ -69,10 +69,10 @@ public class ProductController { return TEMPLATE; } - @RequestMapping(value = "/products/{prettyUrlFragment:[\\w-]+}.json", method = RequestMethod.GET) + @RequestMapping(value = "/products/{id}.json", method = RequestMethod.GET) @ResponseBody - public ProductDTO productJson(@PathVariable String prettyUrlFragment, Locale locale) { - return shopService.getProduct(locale, prettyUrlFragment); + public ProductDTO productJson(@PathVariable Integer id, Locale locale) { + return shopService.getProduct(locale, id); } @RequestMapping(value = "/products.json", method = RequestMethod.GET) diff --git a/src/main/resources/templates/product.html b/src/main/resources/templates/product.html index 9b2d0bf..235f690 100644 --- a/src/main/resources/templates/product.html +++ b/src/main/resources/templates/product.html @@ -33,7 +33,7 @@

Product Name

- +

0,00 Euro

Description.

@@ -53,4 +53,4 @@ - \ No newline at end of file +