From 509b1b35330ee10cac06631cc2b1800b0ca1641e Mon Sep 17 00:00:00 2001
From: Andrey Belousov <groundhog448@gmail.com>
Date: Mon, 9 Dec 2019 22:55:17 +0000
Subject: [PATCH] Added servlets for Users and Tickets

---
 .../s3ai/controllers/tickets/TicketsEdit.java | 66 +++++++++++++++++++
 .../s3ai/controllers/tickets/TicketsFill.java | 47 +++++++++++++
 .../s3ai/controllers/tickets/TicketsList.java | 24 +++++++
 .../controllers/tickets/TicketsUpdate.java    |  4 --
 .../com/s3ai/controllers/users/UsersEdit.java | 49 ++++++++++++++
 .../com/s3ai/controllers/users/UsersFill.java | 39 +++++++++++
 .../com/s3ai/controllers/users/UsersList.java | 27 +++++++-
 .../s3ai/controllers/users/UsersUpdate.java   |  4 --
 8 files changed, 251 insertions(+), 9 deletions(-)
 create mode 100644 src/main/java/com/s3ai/controllers/tickets/TicketsEdit.java
 create mode 100644 src/main/java/com/s3ai/controllers/tickets/TicketsFill.java
 delete mode 100644 src/main/java/com/s3ai/controllers/tickets/TicketsUpdate.java
 create mode 100644 src/main/java/com/s3ai/controllers/users/UsersEdit.java
 create mode 100644 src/main/java/com/s3ai/controllers/users/UsersFill.java
 delete mode 100644 src/main/java/com/s3ai/controllers/users/UsersUpdate.java

diff --git a/src/main/java/com/s3ai/controllers/tickets/TicketsEdit.java b/src/main/java/com/s3ai/controllers/tickets/TicketsEdit.java
new file mode 100644
index 0000000..e5e3254
--- /dev/null
+++ b/src/main/java/com/s3ai/controllers/tickets/TicketsEdit.java
@@ -0,0 +1,66 @@
+package com.s3ai.controllers.tickets;
+
+import com.s3ai.entities.Ticket;
+import com.s3ai.services.CinemaService;
+import com.s3ai.services.TicketService;
+import com.s3ai.services.UserService;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.util.UUID;
+
+public class TicketsEdit extends HttpServlet {
+    TicketService ticketService = TicketService.getInstance();
+    CinemaService cinemaService = CinemaService.getInstance();
+    UserService userService = UserService.getInstance();
+
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        Ticket ticket = null;
+        String id = req.getParameter("id");
+        String userId = req.getParameter("userId") == null ? "" : req.getParameter("userId");
+        String cinemaId = req.getParameter("cinemaId") == null ? "" : req.getParameter("cinemaId");
+        String movie = req.getParameter("movie") == null ? "" : req.getParameter("movie");
+
+        var user = userService.getUserById(UUID.fromString(userId));
+        var cinema = cinemaService.getCinemaById(UUID.fromString(cinemaId));
+
+        if (null == user){
+            resp.sendError(500, "Invalid userId");
+        }
+
+        if (null == cinema){
+            resp.sendError(500, "Invalid cinemaId");
+        }
+
+        if (null == id) {
+            ticket = new Ticket();
+            ticket.setId(UUID.randomUUID());
+            ticketService.fillTicketFields(ticket, user, cinema, movie);
+            ticketService.saveTicket(ticket);
+        } else {
+            ticket = ticketService.getTicketById(UUID.fromString(id));
+            ticketService.fillTicketFields(ticket, user, cinema, movie);
+            ticketService.saveTicket(ticket);
+        }
+        resp.sendRedirect("/tickets");
+    }
+
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        HttpSession session = req.getSession();
+        String idToEdit = req.getParameter("id");
+        Ticket ticket = null;
+        RequestDispatcher dispatcher = req.getRequestDispatcher("/pages/tickets/edit.jsp");
+        if (idToEdit != null) {
+            ticket = ticketService.getTicketById(UUID.fromString(idToEdit));
+        } else {
+            ticket = new Ticket();
+        }
+        session.setAttribute("ticket", ticket);
+        dispatcher.forward(req, resp);
+    }
+}
diff --git a/src/main/java/com/s3ai/controllers/tickets/TicketsFill.java b/src/main/java/com/s3ai/controllers/tickets/TicketsFill.java
new file mode 100644
index 0000000..af1768b
--- /dev/null
+++ b/src/main/java/com/s3ai/controllers/tickets/TicketsFill.java
@@ -0,0 +1,47 @@
+package com.s3ai.controllers.tickets;
+
+import com.s3ai.entities.Ticket;
+import com.s3ai.services.CinemaService;
+import com.s3ai.services.TicketService;
+import com.s3ai.services.UserService;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Random;
+
+public class TicketsFill extends HttpServlet {
+    TicketService ticketService = TicketService.getInstance();
+    UserService userService = UserService.getInstance();
+    CinemaService cinemaService = CinemaService.getInstance();
+
+    private String[] wordsFirst = new String[] {"Pirates", "Ladies", "Goblins", "Gangsters", "Programmers", "Hackers", "Wrestlers", "Animals", "Guardians"};
+    private String[] wordsSecond = new String[] {"of the", "in", "from"};
+    private String[] wordsThird = new String[] {"Galaxy", "America", "Russia", "Japan", "Ocean", "Deep", "Caribbean", "Matrix", "Internet", "Woods", "Caves"};
+
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+    }
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        var users = userService.getAllUsers();
+        var cinemas = cinemaService.getAllCinemas();
+
+        var writer = response.getWriter();
+        writer.println("FILLED Instances:");
+        var random = new Random();
+        for (int i = 0; i < 300; i++) {
+            var ticket = new Ticket();
+            ticketService.fillTicketFields(ticket, users.get(random.nextInt(users.size())), cinemas.get(random.nextInt(cinemas.size())), randomMovieName());
+            ticketService.saveTicket(ticket);
+            writer.println(ticket);
+        }
+    }
+
+    private String randomMovieName() {
+        var random = new Random();
+        return String.format("%s %s %s", wordsFirst[random.nextInt(wordsFirst.length)], wordsSecond[random.nextInt(wordsSecond.length)], wordsThird[random.nextInt(wordsThird.length)]);
+    }
+}
diff --git a/src/main/java/com/s3ai/controllers/tickets/TicketsList.java b/src/main/java/com/s3ai/controllers/tickets/TicketsList.java
index 9e8da3a..7fd9249 100644
--- a/src/main/java/com/s3ai/controllers/tickets/TicketsList.java
+++ b/src/main/java/com/s3ai/controllers/tickets/TicketsList.java
@@ -1,4 +1,28 @@
 package com.s3ai.controllers.tickets;
 
+import com.s3ai.entities.Ticket;
+import com.s3ai.services.TicketService;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.UUID;
+
 public class TicketsList {
+    private TicketService ticketService = TicketService.getInstance();
+
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        String id = request.getReader().readLine();
+        Ticket ticket = ticketService.getTicketById(UUID.fromString(id));
+        ticketService.deleteTicket(ticket);
+    }
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        System.out.println("doGet");
+        RequestDispatcher dispatcher = request.getRequestDispatcher("pages/tickets/list.jsp");
+        request.getSession().setAttribute("tickets", ticketService.getAllTickets());
+        dispatcher.forward(request, response);
+    }
 }
diff --git a/src/main/java/com/s3ai/controllers/tickets/TicketsUpdate.java b/src/main/java/com/s3ai/controllers/tickets/TicketsUpdate.java
deleted file mode 100644
index 35d08a4..0000000
--- a/src/main/java/com/s3ai/controllers/tickets/TicketsUpdate.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.s3ai.controllers.tickets;
-
-public class TicketsUpdate {
-}
diff --git a/src/main/java/com/s3ai/controllers/users/UsersEdit.java b/src/main/java/com/s3ai/controllers/users/UsersEdit.java
new file mode 100644
index 0000000..3b6ebce
--- /dev/null
+++ b/src/main/java/com/s3ai/controllers/users/UsersEdit.java
@@ -0,0 +1,49 @@
+package com.s3ai.controllers.users;
+
+import com.s3ai.entities.User;
+import com.s3ai.services.UserService;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.util.UUID;
+
+public class UsersEdit extends HttpServlet {
+    UserService userService = UserService.getInstance();
+
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        String id = req.getParameter("id");
+        User user = null;
+        String name = req.getParameter("name") == null ? "" : req.getParameter("name");
+        Integer age = Integer.parseInt(req.getParameter("age") == null ? "" : req.getParameter("age"));
+        if (null == id) {
+            user = new User();
+            user.setId(UUID.randomUUID());
+            userService.fillUserFields(user, name, age);
+            userService.saveUser(user);
+        } else {
+            user = userService.getUserById(UUID.fromString(id));
+            userService.fillUserFields(user, name, age);
+            userService.saveUser(user);
+        }
+        resp.sendRedirect("/users");
+    }
+
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        HttpSession session = req.getSession();
+        String idToEdit = req.getParameter("id");
+        User user = null;
+        RequestDispatcher dispatcher = req.getRequestDispatcher("/pages/users/edit.jsp");
+        if (idToEdit != null) {
+            user = userService.getUserById(UUID.fromString(idToEdit));
+        } else {
+            user = new User();
+        }
+        session.setAttribute("user", user);
+        dispatcher.forward(req, resp);
+    }
+}
diff --git a/src/main/java/com/s3ai/controllers/users/UsersFill.java b/src/main/java/com/s3ai/controllers/users/UsersFill.java
new file mode 100644
index 0000000..9c32ed5
--- /dev/null
+++ b/src/main/java/com/s3ai/controllers/users/UsersFill.java
@@ -0,0 +1,39 @@
+package com.s3ai.controllers.users;
+
+import com.s3ai.entities.User;
+import com.s3ai.services.UserService;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Random;
+
+public class UsersFill extends HttpServlet {
+    UserService userService = UserService.getInstance();
+
+    private String[] names = new String[] {"Jane", "Mary", "Paul", "Jason", "Keanu", "Andrew", "Joseph", "Jotaro", "Ivan", "Jolyne", "Walther"};
+    private String[] surnames = new String[] {"Doe", "Reeves", "Statham", "Bourne", "Joestar", "Kujoh", "White", "Van Hallen", "Black", "Smith"};
+
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+    }
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        var writer = response.getWriter();
+        writer.println("FILLED Instances:");
+        var random = new Random();
+        for (int i = 0; i < 300; i++) {
+            var user = new User();
+            userService.fillUserFields(user, randomName(), random.nextInt(60) + 10);
+            userService.saveUser(user);
+            writer.println(user);
+        }
+    }
+
+    private String randomName() {
+        var random = new Random();
+        return String.format("%s %s", names[random.nextInt(names.length)], surnames[random.nextInt(surnames.length)]);
+    }
+}
diff --git a/src/main/java/com/s3ai/controllers/users/UsersList.java b/src/main/java/com/s3ai/controllers/users/UsersList.java
index 22330ef..7a8094d 100644
--- a/src/main/java/com/s3ai/controllers/users/UsersList.java
+++ b/src/main/java/com/s3ai/controllers/users/UsersList.java
@@ -1,4 +1,29 @@
 package com.s3ai.controllers.users;
 
-public class UsersList {
+import com.s3ai.entities.User;
+import com.s3ai.services.UserService;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.UUID;
+
+public class UsersList extends HttpServlet {
+    private UserService userService = UserService.getInstance();
+
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        String id = request.getReader().readLine();
+        User user = userService.getUserById(UUID.fromString(id));
+        userService.deleteUser(user);
+    }
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        System.out.println("doGet");
+        RequestDispatcher dispatcher = request.getRequestDispatcher("pages/users/list.jsp");
+        request.getSession().setAttribute("users", userService.getAllUsers());
+        dispatcher.forward(request, response);
+    }
 }
diff --git a/src/main/java/com/s3ai/controllers/users/UsersUpdate.java b/src/main/java/com/s3ai/controllers/users/UsersUpdate.java
deleted file mode 100644
index 281cbbf..0000000
--- a/src/main/java/com/s3ai/controllers/users/UsersUpdate.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.s3ai.controllers.users;
-
-public class UsersUpdate {
-}
-- 
GitLab