summaryrefslogtreecommitdiff
path: root/src/lq/AddVote.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/lq/AddVote.java')
-rw-r--r--src/lq/AddVote.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/lq/AddVote.java b/src/lq/AddVote.java
new file mode 100644
index 0000000..e9a442a
--- /dev/null
+++ b/src/lq/AddVote.java
@@ -0,0 +1,65 @@
+package lq;
+
+import java.io.IOException;
+import javax.jdo.PersistenceManager;
+import javax.jdo.Transaction;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class AddVote extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws IOException {
+
+ resp.setContentType("text/html");
+
+ Long quoteId;
+ Long rating;
+ String ip;
+
+ try {
+ quoteId = Long.parseLong(req.getParameter("id"));
+ rating = Long.parseLong(req.getParameter("vote"));
+ ip = req.getRemoteAddr();
+
+ String forward = req.getHeader("X-Forwarded-For");
+ if (!Strings.nullOrEmpty(forward)) {
+ ip = ip + " (" + forward + ")";
+ }
+ } catch (NumberFormatException e) {
+ resp.getWriter().println("invalid arguments");
+ return;
+ }
+
+ if (rating.longValue() < 0 || rating.longValue() > 5) {
+ resp.getWriter().println("nice try");
+ return;
+ }
+
+ Quote quote = QuoteUtil.getQuoteWithId(quoteId);
+ if (quote == null) {
+ resp.getWriter().println("failed to retrieve quote");
+ return;
+ }
+
+ Vote vote = new Vote(quoteId, rating, ip);
+ QuoteUtil.addVote(quote, vote);
+
+ PersistenceManager pm = PMF.get().getPersistenceManager();
+ // Transaction tx = pm.currentTransaction();
+ try {
+ // tx.begin();
+ pm.makePersistent(quote);
+ pm.makePersistent(vote);
+ // tx.commit();
+ } finally {
+ // if (tx.isActive()) {
+ // tx.rollback();
+ // }
+ pm.close();
+ }
+
+ resp.getWriter().println(QuoteUtil.formatScore(quote));
+ }
+}