Mapping Refactor
This commit is contained in:
@@ -25,8 +25,8 @@ public class ControllerPathConfig {
|
|||||||
|
|
||||||
//ArticleController
|
//ArticleController
|
||||||
public static final String ARTICLE_BASE = "/article";
|
public static final String ARTICLE_BASE = "/article";
|
||||||
public static final String ARTICLE_GET_ALL = ARTICLE_BASE + "/all";
|
public static final String ARTICLE_GET_ALL = "/all";
|
||||||
public static final String ARTICLE_GET_ALL_WITH_IMAGE = ARTICLE_BASE + "/all/image";
|
public static final String ARTICLE_GET_ALL_WITH_IMAGE = "/all/image";
|
||||||
|
|
||||||
//CustomerController
|
//CustomerController
|
||||||
public static final String CUSTOMER_BASE = "/customer";
|
public static final String CUSTOMER_BASE = "/customer";
|
||||||
@@ -43,12 +43,12 @@ public class ControllerPathConfig {
|
|||||||
|
|
||||||
//OrderController
|
//OrderController
|
||||||
public static final String ORDER_BASE = "/order";
|
public static final String ORDER_BASE = "/order";
|
||||||
public static final String ORDER_GET_ALL = ORDER_BASE + "/all";
|
public static final String ORDER_GET_ALL = "/all";
|
||||||
public static final String ORDER_GET_ALL_ADMIN = ORDER_BASE + "/all/all";
|
public static final String ORDER_GET_ALL_ADMIN = "/all/all";
|
||||||
|
|
||||||
//ReviewController
|
//ReviewController
|
||||||
public static final String REVIEW_BASE = "/review";
|
public static final String REVIEW_BASE = "/review";
|
||||||
public static final String REVIEW_GET_ALL = REVIEW_BASE + "/all";
|
public static final String REVIEW_GET_ALL = "/all";
|
||||||
|
|
||||||
//StatisticsController
|
//StatisticsController
|
||||||
private static final String STATISTICS_BASE = "/statistics";
|
private static final String STATISTICS_BASE = "/statistics";
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import static de.htwsaar.webshop.util.LoggerUtil.logRequest;
|
|||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@RequestMapping(path = ARTICLE_BASE, produces = "application/json")
|
||||||
public class ArticleController {
|
public class ArticleController {
|
||||||
private final ArticleService articleService;
|
private final ArticleService articleService;
|
||||||
|
|
||||||
@@ -27,26 +28,26 @@ public class ArticleController {
|
|||||||
this.articleService = articleService;
|
this.articleService = articleService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ARTICLE_GET_ALL, method = RequestMethod.GET, produces = "application/json")
|
@GetMapping(path = ARTICLE_GET_ALL)
|
||||||
public ResponseEntity<List<ArticleModel>> getAll(HttpServletRequest request) {
|
public ResponseEntity<List<ArticleModel>> getAll(HttpServletRequest request) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
return ResponseEntity.ok(articleService.from(articleService.findAll()));
|
return ResponseEntity.ok(articleService.from(articleService.findAll()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ARTICLE_GET_ALL_WITH_IMAGE, method = RequestMethod.GET, produces = "application/json")
|
@GetMapping(path = ARTICLE_GET_ALL_WITH_IMAGE)
|
||||||
public ResponseEntity<List<ArticleWithImageModel>> getAllWithImageData(HttpServletRequest request) {
|
public ResponseEntity<List<ArticleWithImageModel>> getAllWithImageData(HttpServletRequest request) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
return ResponseEntity.ok(articleService.fromWithImage(articleService.findAll()));
|
return ResponseEntity.ok(articleService.fromWithImage(articleService.findAll()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ARTICLE_BASE, method = RequestMethod.GET, produces = "application/json")
|
@GetMapping
|
||||||
public ResponseEntity<ArticleModel> getByUUID(HttpServletRequest request,
|
public ResponseEntity<ArticleModel> getByUUID(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_UUID) UUID uuid) {
|
@RequestParam(value = PARAM_UUID) UUID uuid) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
return ResponseEntity.ok(articleService.from(articleService.findByUUID(uuid)));
|
return ResponseEntity.ok(articleService.from(articleService.findByUUID(uuid)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ARTICLE_BASE, method = RequestMethod.POST, produces = "application/json")
|
@PostMapping
|
||||||
public ResponseEntity<Boolean> add(HttpServletRequest request,
|
public ResponseEntity<Boolean> add(HttpServletRequest request,
|
||||||
@RequestBody Article article) {
|
@RequestBody Article article) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
@@ -60,7 +61,7 @@ public class ArticleController {
|
|||||||
return ResponseEntity.ok(a != null);
|
return ResponseEntity.ok(a != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ARTICLE_BASE, method = RequestMethod.PUT, produces = "application/json")
|
@PutMapping
|
||||||
public ResponseEntity<Boolean> update(HttpServletRequest request,
|
public ResponseEntity<Boolean> update(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_UUID) UUID uuid,
|
@RequestParam(value = PARAM_UUID) UUID uuid,
|
||||||
@RequestBody Article article) {
|
@RequestBody Article article) {
|
||||||
@@ -80,7 +81,7 @@ public class ArticleController {
|
|||||||
return ResponseEntity.ok(true);
|
return ResponseEntity.ok(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ARTICLE_BASE, method = RequestMethod.DELETE, produces = "application/json")
|
@DeleteMapping
|
||||||
public ResponseEntity<Boolean> delete(HttpServletRequest request,
|
public ResponseEntity<Boolean> delete(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_UUID) UUID uuid) {
|
@RequestParam(value = PARAM_UUID) UUID uuid) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import static de.htwsaar.webshop.util.LoggerUtil.logRequest;
|
|||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@RequestMapping(path = ORDER_BASE, produces = "application/json")
|
||||||
public class OrderController {
|
public class OrderController {
|
||||||
|
|
||||||
private final OrderService orderService;
|
private final OrderService orderService;
|
||||||
@@ -35,7 +36,7 @@ public class OrderController {
|
|||||||
this.sessionService = sessionService;
|
this.sessionService = sessionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ORDER_GET_ALL, method = RequestMethod.GET, produces = "application/json")
|
@GetMapping(path = ORDER_GET_ALL)
|
||||||
public ResponseEntity<List<OrderModel>> getAll(HttpServletRequest request,
|
public ResponseEntity<List<OrderModel>> getAll(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_CUSTOMER_ID) Long customerId) {
|
@RequestParam(value = PARAM_CUSTOMER_ID) Long customerId) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
@@ -46,7 +47,7 @@ public class OrderController {
|
|||||||
return ResponseEntity.ok(orders.stream().map(Order::toModel).toList());
|
return ResponseEntity.ok(orders.stream().map(Order::toModel).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ORDER_GET_ALL_ADMIN, method = RequestMethod.GET, produces = "application/json")
|
@GetMapping(path = ORDER_GET_ALL_ADMIN)
|
||||||
public ResponseEntity<List<OrderModel>> getAll(HttpServletRequest request,
|
public ResponseEntity<List<OrderModel>> getAll(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_EMAIL) String email,
|
@RequestParam(value = PARAM_EMAIL) String email,
|
||||||
@RequestParam(value = PARAM_SESSION) UUID token) {
|
@RequestParam(value = PARAM_SESSION) UUID token) {
|
||||||
@@ -59,7 +60,7 @@ public class OrderController {
|
|||||||
return ResponseEntity.ok(orderService.findAll().stream().map(Order::toModel).toList());
|
return ResponseEntity.ok(orderService.findAll().stream().map(Order::toModel).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ORDER_BASE, method = RequestMethod.GET, produces = "application/json")
|
@GetMapping
|
||||||
public ResponseEntity<OrderModel> get(HttpServletRequest request,
|
public ResponseEntity<OrderModel> get(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_ID) Long orderId) {
|
@RequestParam(value = PARAM_ID) Long orderId) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
@@ -70,7 +71,7 @@ public class OrderController {
|
|||||||
return ResponseEntity.ok(order.toModel());
|
return ResponseEntity.ok(order.toModel());
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ORDER_BASE, method = RequestMethod.POST, produces = "application/json")
|
@PostMapping
|
||||||
public ResponseEntity<Boolean> add(HttpServletRequest request,
|
public ResponseEntity<Boolean> add(HttpServletRequest request,
|
||||||
@RequestBody OrderModel order) {
|
@RequestBody OrderModel order) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
@@ -85,8 +86,8 @@ public class OrderController {
|
|||||||
return ResponseEntity.ok(saved != null);
|
return ResponseEntity.ok(saved != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ORDER_BASE, method = RequestMethod.PATCH, produces = "application/json")
|
@PatchMapping
|
||||||
public ResponseEntity<Boolean> update(HttpServletRequest request,
|
public ResponseEntity<Boolean> patch(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_ID) Long orderId,
|
@RequestParam(value = PARAM_ID) Long orderId,
|
||||||
@RequestParam(value = PARAM_STATUS) OrderStatus status) {
|
@RequestParam(value = PARAM_STATUS) OrderStatus status) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
@@ -107,7 +108,7 @@ public class OrderController {
|
|||||||
return ResponseEntity.ok(orderService.saveNew(order) != null);
|
return ResponseEntity.ok(orderService.saveNew(order) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = ORDER_BASE, method = RequestMethod.DELETE, produces = "application/json")
|
@DeleteMapping
|
||||||
public ResponseEntity<Boolean> delete(HttpServletRequest request,
|
public ResponseEntity<Boolean> delete(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_ID) Long orderId) {
|
@RequestParam(value = PARAM_ID) Long orderId) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
package de.htwsaar.webshop.controller;
|
package de.htwsaar.webshop.controller;
|
||||||
|
|
||||||
import de.htwsaar.webshop.model.ReviewModel;
|
import de.htwsaar.webshop.model.ReviewModel;
|
||||||
@@ -5,8 +6,13 @@ import de.htwsaar.webshop.repository.entities.Review;
|
|||||||
import de.htwsaar.webshop.service.ArticleService;
|
import de.htwsaar.webshop.service.ArticleService;
|
||||||
import de.htwsaar.webshop.service.ReviewService;
|
import de.htwsaar.webshop.service.ReviewService;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.Max;
|
||||||
|
import jakarta.validation.constraints.Min;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@@ -19,6 +25,7 @@ import static de.htwsaar.webshop.config.ParameterConfig.*;
|
|||||||
import static de.htwsaar.webshop.util.LoggerUtil.logRequest;
|
import static de.htwsaar.webshop.util.LoggerUtil.logRequest;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@RequestMapping(value = REVIEW_BASE, produces = "application/json")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ReviewController {
|
public class ReviewController {
|
||||||
|
|
||||||
@@ -31,69 +38,95 @@ public class ReviewController {
|
|||||||
this.articleService = articleService;
|
this.articleService = articleService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = REVIEW_GET_ALL, method = RequestMethod.GET, produces = "application/json")
|
@GetMapping(path = REVIEW_GET_ALL)
|
||||||
public ResponseEntity<List<ReviewModel>> getAll(HttpServletRequest request,
|
public ResponseEntity<List<ReviewModel>> getAll(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_UUID) UUID uuid) {
|
@RequestParam(value = PARAM_UUID) UUID uuid) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
List<ReviewModel> review = reviewService.getAllByUUID(uuid).stream().map(reviewService::toModel).toList();
|
List<ReviewModel> reviews = reviewService.getAllByUUID(uuid)
|
||||||
if (review.isEmpty()) {
|
.stream()
|
||||||
|
.map(reviewService::toModel)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
if (reviews.isEmpty()) {
|
||||||
return ResponseEntity.noContent().build();
|
return ResponseEntity.noContent().build();
|
||||||
}
|
}
|
||||||
return ResponseEntity.ok(review);
|
return ResponseEntity.ok(reviews);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = REVIEW_BASE, method = RequestMethod.GET, produces = "application/json")
|
@GetMapping
|
||||||
public ResponseEntity<Review> get(HttpServletRequest request,
|
public ResponseEntity<ReviewModel> get(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_ID) Long reviewId) {
|
@RequestParam(value = PARAM_ID) Long reviewId) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
Review review = reviewService.getReviewById(reviewId);
|
Review review = reviewService.getReviewById(reviewId);
|
||||||
|
|
||||||
if (review == null) {
|
if (review == null) {
|
||||||
|
log.debug("Review with id {} not found", reviewId);
|
||||||
return ResponseEntity.noContent().build();
|
return ResponseEntity.noContent().build();
|
||||||
}
|
}
|
||||||
return ResponseEntity.ok(review);
|
|
||||||
|
return ResponseEntity.ok(reviewService.toModel(review));
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = REVIEW_BASE, method = RequestMethod.POST, produces = "application/json")
|
@PostMapping
|
||||||
public ResponseEntity<Boolean> add(HttpServletRequest request,
|
public ResponseEntity<ReviewModel> add(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_UUID) UUID uuid,
|
@RequestParam(value = PARAM_UUID) UUID articleUuid,
|
||||||
@RequestParam(value = PARAM_RATING) int rating,
|
@RequestParam(value = PARAM_RATING)
|
||||||
@RequestBody String review) {
|
@Min(value = 0, message = "Rating must be at least 0")
|
||||||
|
@Max(value = 10, message = "Rating must be at most 10")
|
||||||
|
int rating,
|
||||||
|
@RequestBody @NotBlank(message = "Review text cannot be empty") String reviewText) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
|
|
||||||
if (uuid == null || articleService.findByUUID(uuid) == null
|
if (articleService.findByUUID(articleUuid) == null) {
|
||||||
|| rating < 0 || rating > 10) {
|
log.warn("Article with UUID {} not found for review creation", articleUuid);
|
||||||
log.warn("[{}] failed Validation, sending bad request", request.getRequestURI());
|
return ResponseEntity.badRequest().build();
|
||||||
return ResponseEntity.badRequest().body(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Review saved = reviewService.save(uuid, rating, review);
|
Review savedReview = reviewService.save(articleUuid, rating, reviewText);
|
||||||
return ResponseEntity.ok(saved != null);
|
|
||||||
|
if (savedReview == null) {
|
||||||
|
log.error("Failed to save review for article UUID {}", articleUuid);
|
||||||
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = REVIEW_BASE, method = RequestMethod.PUT, produces = "application/json")
|
return ResponseEntity.status(HttpStatus.CREATED).body(reviewService.toModel(savedReview));
|
||||||
public ResponseEntity<Boolean> update(HttpServletRequest request,
|
}
|
||||||
|
|
||||||
|
@PutMapping
|
||||||
|
public ResponseEntity<ReviewModel> update(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_ID) Long reviewId,
|
@RequestParam(value = PARAM_ID) Long reviewId,
|
||||||
@RequestBody Review review) {
|
@RequestBody @Valid Review review) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
if (reviewId == null || reviewService.getReviewById(reviewId) == null) {
|
|
||||||
return ResponseEntity.badRequest().body(false);
|
Review existingReview = reviewService.getReviewById(reviewId);
|
||||||
}
|
if (existingReview == null) {
|
||||||
review.setId(reviewService.getReviewById(reviewId).getId());
|
log.warn("Review with id {} not found for update", reviewId);
|
||||||
return ResponseEntity.ok(reviewService.save(review) != null);
|
return ResponseEntity.notFound().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(path = REVIEW_BASE, method = RequestMethod.DELETE, produces = "application/json")
|
// Ensure the ID matches
|
||||||
public ResponseEntity<Boolean> delete(HttpServletRequest request,
|
review.setId(reviewId);
|
||||||
|
Review updatedReview = reviewService.save(review);
|
||||||
|
|
||||||
|
if (updatedReview == null) {
|
||||||
|
log.error("Failed to update review with id {}", reviewId);
|
||||||
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseEntity.ok(reviewService.toModel(updatedReview));
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping
|
||||||
|
public ResponseEntity<Void> delete(HttpServletRequest request,
|
||||||
@RequestParam(value = PARAM_ID) Long reviewId) {
|
@RequestParam(value = PARAM_ID) Long reviewId) {
|
||||||
logRequest(request);
|
logRequest(request);
|
||||||
if (reviewId == null) {
|
|
||||||
log.warn("[{}] got invalid imageId", request.getRequestURI());
|
Review existingReview = reviewService.getReviewById(reviewId);
|
||||||
return ResponseEntity.badRequest().body(false);
|
if (existingReview == null) {
|
||||||
}
|
log.warn("Review with id {} not found for deletion", reviewId);
|
||||||
if (reviewService.getReviewById(reviewId) != null) {
|
return ResponseEntity.notFound().build();
|
||||||
log.warn("[{}] got invalid imageId", request.getRequestURI());
|
|
||||||
return ResponseEntity.badRequest().body(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reviewService.delete(reviewId);
|
reviewService.delete(reviewId);
|
||||||
return ResponseEntity.ok().build();
|
return ResponseEntity.ok().build();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user