Add ReviewController
This commit is contained in:
@@ -6,8 +6,8 @@ public class ParameterConfig {
|
||||
public static final String PARAM_ID = "id";
|
||||
public static final String PARAM_UUID = "uuid";
|
||||
public static final String PARAM_ARTICLE_ID = "articleId";
|
||||
public static final String PARAM_IMAGE_ID = "imageId";
|
||||
public static final String PARAM_EMAIL = "email";
|
||||
public static final String PARAM_PASSWORD = "password";
|
||||
public static final String PARAM_CUSTOMER_ID = "customerId";
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
package de.htwsaar.webshop.controller;
|
||||
|
||||
import de.htwsaar.webshop.repository.entities.Review;
|
||||
import de.htwsaar.webshop.service.ReviewService;
|
||||
import de.htwsaar.webshop.service.ValidatorService;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static de.htwsaar.webshop.config.ControllerPathConfig.*;
|
||||
import static de.htwsaar.webshop.config.ParameterConfig.PARAM_ARTICLE_ID;
|
||||
import static de.htwsaar.webshop.config.ParameterConfig.PARAM_ID;
|
||||
import static de.htwsaar.webshop.util.LoggerUtil.logRequest;
|
||||
|
||||
@RestController
|
||||
@Slf4j
|
||||
public class ReviewController {
|
||||
|
||||
private final ReviewService reviewService;
|
||||
private final ValidatorService validatorService;
|
||||
|
||||
@Autowired
|
||||
public ReviewController(ReviewService reviewService, ValidatorService validatorService) {
|
||||
this.reviewService = reviewService;
|
||||
this.validatorService = validatorService;
|
||||
}
|
||||
|
||||
@RequestMapping(path = REVIEW_GET_ALL, method = RequestMethod.GET, produces = "application/json")
|
||||
public ResponseEntity<List<Review>> getAll(HttpServletRequest request,
|
||||
@RequestParam(value = PARAM_ARTICLE_ID) Long articleId) {
|
||||
logRequest(request);
|
||||
List<Review> review = reviewService.getAllByArticleId(articleId);
|
||||
if(review.isEmpty()) {
|
||||
return ResponseEntity.noContent().build();
|
||||
}
|
||||
return ResponseEntity.ok(review);
|
||||
}
|
||||
|
||||
@RequestMapping(path = REVIEW_BASE, method = RequestMethod.GET, produces = "application/json")
|
||||
public ResponseEntity<Review> get(HttpServletRequest request,
|
||||
@RequestParam(value = PARAM_ID) Long reviewId) {
|
||||
logRequest(request);
|
||||
Review review = reviewService.getReviewById(reviewId);
|
||||
if(review == null) {
|
||||
return ResponseEntity.noContent().build();
|
||||
}
|
||||
return ResponseEntity.ok(review);
|
||||
}
|
||||
|
||||
@RequestMapping(path = REVIEW_BASE, method = RequestMethod.POST, produces = "application/json")
|
||||
public ResponseEntity<Boolean> add(HttpServletRequest request,
|
||||
@RequestBody Review order) {
|
||||
logRequest(request);
|
||||
|
||||
if (validatorService.isInvalid(order)) {
|
||||
log.warn("[{}] failed Validation, sending bad request", request.getRequestURI());
|
||||
return ResponseEntity.badRequest().body(false);
|
||||
}
|
||||
|
||||
Review saved = reviewService.save(order);
|
||||
return ResponseEntity.ok(saved != null);
|
||||
}
|
||||
|
||||
@RequestMapping(path = REVIEW_BASE, method = RequestMethod.PUT, produces = "application/json")
|
||||
public ResponseEntity<Boolean> update(HttpServletRequest request,
|
||||
@RequestParam(value = PARAM_ID) Long reviewId,
|
||||
@RequestBody Review review) {
|
||||
logRequest(request);
|
||||
if (reviewId == null || reviewService.getReviewById(reviewId) == null) {
|
||||
return ResponseEntity.badRequest().body(false);
|
||||
}
|
||||
review.setId(reviewService.getReviewById(reviewId).getId());
|
||||
return ResponseEntity.ok(reviewService.save(review) != null);
|
||||
}
|
||||
|
||||
@RequestMapping(path = REVIEW_BASE, method = RequestMethod.DELETE, produces = "application/json")
|
||||
public ResponseEntity<Boolean> delete(HttpServletRequest request,
|
||||
@RequestParam(value = PARAM_ID) Long reviewId) {
|
||||
logRequest(request);
|
||||
if (reviewId == null) {
|
||||
log.warn("[{}] got invalid imageId", request.getRequestURI());
|
||||
return ResponseEntity.badRequest().body(false);
|
||||
}
|
||||
if (reviewService.getReviewById(reviewId) != null) {
|
||||
log.warn("[{}] got invalid imageId", request.getRequestURI());
|
||||
return ResponseEntity.badRequest().body(false);
|
||||
}
|
||||
reviewService.delete(reviewId);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
}
|
||||
@@ -6,9 +6,12 @@ import jakarta.validation.constraints.Positive;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Repository
|
||||
public interface ReviewRepository extends JpaRepository<Review, Long> {
|
||||
Stream<Review> streamReviewsByArticleId(@NotNull @Positive Long id);
|
||||
|
||||
List<Review> getReviewsByArticle_Id(Long articleId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package de.htwsaar.webshop.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.htwsaar.webshop.repository.entities.Review;
|
||||
|
||||
public interface ReviewService {
|
||||
Review save(Review review);
|
||||
void delete(Long reviewId);
|
||||
Review getReviewById(Long id);
|
||||
List<Review> getAllByArticleId(Long articleId);
|
||||
}
|
||||
@@ -7,16 +7,13 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of {@link PasswordService} responsible for creating the salt string.
|
||||
* <p>
|
||||
* This service generates the salt.
|
||||
* </p>
|
||||
* Implementation of {@link PasswordService} responsible for hashing and verifying passwords.
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PasswordServiceImpl implements PasswordService {
|
||||
/**
|
||||
* A way to generate Password aafterBCrypt Standard <br>
|
||||
* A way to generate Password after BCrypt Standard <br>
|
||||
* This is computationally expensive
|
||||
*
|
||||
* @return a non-deterministic Salt for BCrypt.
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package de.htwsaar.webshop.service.impl;
|
||||
|
||||
import de.htwsaar.webshop.repository.ReviewRepository;
|
||||
import de.htwsaar.webshop.repository.entities.Review;
|
||||
import de.htwsaar.webshop.service.ReviewService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ReviewServiceImpl implements ReviewService {
|
||||
private final ReviewRepository reviewRepository;
|
||||
|
||||
@Autowired
|
||||
public ReviewServiceImpl(ReviewRepository reviewRepository) {
|
||||
this.reviewRepository = reviewRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Review save(Review review) {
|
||||
return reviewRepository.save(review);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Long reviewId) {
|
||||
reviewRepository.deleteById(reviewId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Review getReviewById(Long reviewId) {
|
||||
return reviewRepository.findById(reviewId).orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Review> getAllByArticleId(Long articleId) {
|
||||
return reviewRepository.getReviewsByArticle_Id(articleId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user