diff --git a/package-lock.json b/package-lock.json index 478f119..f1655c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,8 @@ "dependencies": { "jquery": "^3.6.1", "jquery-ui": "^1.13.2", - "jquery-validation": "^1.19.5" + "jquery-validation": "^1.19.5", + "rateyo": "^3.0.0-alpha.2" } }, "node_modules/jquery": { @@ -30,6 +31,15 @@ "peerDependencies": { "jquery": "^1.7 || ^2.0 || ^3.1" } + }, + "node_modules/rateyo": { + "version": "3.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/rateyo/-/rateyo-3.0.0-alpha.2.tgz", + "integrity": "sha512-2SQnLpo0j1aWa5na28mpPjT73YNpt7Z58W5MqahqTAs0KmPdbjlbrFctDHd2NyaZfBiQoRFpK92ZzOm4NX92SQ==", + "engines": { + "node": ">=10.16.2", + "npm": ">=4.0.0" + } } }, "dependencies": { @@ -51,6 +61,11 @@ "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.19.5.tgz", "integrity": "sha512-X2SmnPq1mRiDecVYL8edWx+yTBZDyC8ohWXFhXdtqFHgU9Wd4KHkvcbCoIZ0JaSaumzS8s2gXSkP8F7ivg/8ZQ==", "requires": {} + }, + "rateyo": { + "version": "3.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/rateyo/-/rateyo-3.0.0-alpha.2.tgz", + "integrity": "sha512-2SQnLpo0j1aWa5na28mpPjT73YNpt7Z58W5MqahqTAs0KmPdbjlbrFctDHd2NyaZfBiQoRFpK92ZzOm4NX92SQ==" } } } diff --git a/package.json b/package.json index 6054f46..f069899 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "dependencies": { "jquery": "^3.6.1", "jquery-ui": "^1.13.2", - "jquery-validation": "^1.19.5" + "jquery-validation": "^1.19.5", + "rateyo": "^3.0.0-alpha.2" } } diff --git a/src/main/java/com/example/demo2/controller/frontend/review/SubmitReviewServlet.java b/src/main/java/com/example/demo2/controller/frontend/review/SubmitReviewServlet.java new file mode 100644 index 0000000..e28e812 --- /dev/null +++ b/src/main/java/com/example/demo2/controller/frontend/review/SubmitReviewServlet.java @@ -0,0 +1,19 @@ +package com.example.demo2.controller.frontend.review; + +import com.example.demo2.service.ReviewService; +import jakarta.servlet.*; +import jakarta.servlet.http.*; +import jakarta.servlet.annotation.*; + +import java.io.IOException; + +@WebServlet(name = "SubmitReviewServlet", value = "/SubmitReviewServlet") +public class SubmitReviewServlet extends HttpServlet { + + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ReviewService reviewService = new ReviewService(request, response); + reviewService.submitReview(); + } +} diff --git a/src/main/java/com/example/demo2/controller/frontend/review/WriteReviewServlet.java b/src/main/java/com/example/demo2/controller/frontend/review/WriteReviewServlet.java new file mode 100644 index 0000000..79456ba --- /dev/null +++ b/src/main/java/com/example/demo2/controller/frontend/review/WriteReviewServlet.java @@ -0,0 +1,19 @@ +package com.example.demo2.controller.frontend.review; + +import com.example.demo2.service.ReviewService; +import jakarta.servlet.*; +import jakarta.servlet.http.*; +import jakarta.servlet.annotation.*; + +import java.io.IOException; + +@WebServlet(name = "/write_review", value = "/ServletWriteReviewServlet") +public class WriteReviewServlet extends HttpServlet { + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ReviewService reviewService = new ReviewService(request, response); + reviewService.showReviewForm(); + } + + +} diff --git a/src/main/java/com/example/demo2/dao/ReviewDAO.java b/src/main/java/com/example/demo2/dao/ReviewDAO.java index 807f90c..d6dc72e 100644 --- a/src/main/java/com/example/demo2/dao/ReviewDAO.java +++ b/src/main/java/com/example/demo2/dao/ReviewDAO.java @@ -2,12 +2,14 @@ import com.example.demo2.entity.Review; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class ReviewDAO extends JpaDAO implements GenericDAO { @Override public Review get(Object reviewId) { - return super.find(Review.class,reviewId) + return super.find(Review.class, reviewId) } @Override @@ -16,7 +18,7 @@ public Review create(Review entity) { @Override public void delete(Object reviewId) { -super.delete(Review.class,reviewId); + super.delete(Review.class, reviewId); } @@ -28,7 +30,19 @@ public List listAll() { @Override public long count() { - return super.contWithNamedQuery("Review.countAll"); + return super.contWithNamedQuery("Review.countAll"); } +public Review findByCustomerAnBook(Integer customerId,Integer bookId){ + Map parameters= new HashMap<>(); + parameters.put("customerId",customerId); + parameters.put("bookId",bookId); + + List result = super.findWithNamedQuery("Review.findByCustomerAndBook", parameters); + if(!result.isEmpty()){ + return result.get(0); + } + return null; + +} } diff --git a/src/main/java/com/example/demo2/entity/Review.java b/src/main/java/com/example/demo2/entity/Review.java index 773a759..56edfde 100644 --- a/src/main/java/com/example/demo2/entity/Review.java +++ b/src/main/java/com/example/demo2/entity/Review.java @@ -9,6 +9,8 @@ @NamedQueries({ @NamedQuery(name ="Review.listAll" ,query = "SELECT r FROM Review ORDER BY r.reviewTime DESC"), @NamedQuery(name ="Review.countAll" ,query = "SELECT Count(r) FROM Review r") + @NamedQuery(name ="Review.findByCustomerAndBook" , + query = "SELECT r FROM Review r WHERE r.customer.customerId =: customerId AND r.book.bookId =: bookId") }) public class Review { private Integer reviewId; diff --git a/src/main/java/com/example/demo2/service/ReviewService.java b/src/main/java/com/example/demo2/service/ReviewService.java index 7550f20..d8404d6 100644 --- a/src/main/java/com/example/demo2/service/ReviewService.java +++ b/src/main/java/com/example/demo2/service/ReviewService.java @@ -1,6 +1,8 @@ package com.example.demo2.service; +import com.example.demo2.dao.BookDAO; import com.example.demo2.dao.ReviewDAO; +import com.example.demo2.entity.Book; import com.example.demo2.entity.Review; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; @@ -87,5 +89,35 @@ public void deleteReview() throws ServletException, IOException { listAllReview(message); + } + + public void showReviewForm() throws ServletException, IOException { + Integer book_id = Integer.parseInt(request.getParameter("book_id")); + BookDAO bookDAO = new BookDAO(); + bookDAO.get(book_id) + + String targetPage="frontend/review_form.jsp"; + RequestDispatcher requestDispatcher = request.getRequestDispatcher(targetPage); + requestDispatcher.forward(request,response); + + } + + public void submitReview() { + Integer book_id = Integer.parseInt(request.getParameter("book_id")); + Integer rating = Integer.parseInt(request.getParameter("rating")); + String headline = request.getParameter("headline"); + String comment = request.getParameter("comment"); + + Review review = new Review(); + review.setHeadline(headline); + review.setComment(comment); + review.setRating(rating); + + Book book = new Book(); + book.setBookId(book_id); + + + + } }