diff --git a/pom.xml b/pom.xml index 8f7cf6b7d..8a92f9485 100644 --- a/pom.xml +++ b/pom.xml @@ -25,6 +25,11 @@ mysql-connector-java 8.0.22 + + jstl + jstl + 1.2 + javax.servlet javax.servlet-api diff --git a/src/main/java/mate/controller/car/AddCarController.java b/src/main/java/mate/controller/car/AddCarController.java new file mode 100644 index 000000000..785a94a51 --- /dev/null +++ b/src/main/java/mate/controller/car/AddCarController.java @@ -0,0 +1,44 @@ +package mate.controller.car; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.model.Car; +import mate.model.Manufacturer; +import mate.service.CarService; +import mate.service.ManufacturerService; + +public class AddCarController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private static final ManufacturerService manufacturerService = (ManufacturerService) + injector.getInstance(ManufacturerService.class); + private static final CarService carService = (CarService) + injector.getInstance(CarService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + List manufacturers = manufacturerService.getAll(); + req.setAttribute("manufacturers", manufacturers); + req.getRequestDispatcher("/WEB-INF/views/cars/add.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + String model = req.getParameter("model"); + Manufacturer manufacturer = manufacturerService + .get(Long.valueOf(req.getParameter("manufacturer"))); + Car car = new Car(); + car.setModel(model); + car.setManufacturer(manufacturer); + car.setDrivers(new ArrayList<>()); + carService.create(car); + resp.sendRedirect(req.getContextPath() + "/cars/all"); + } +} diff --git a/src/main/java/mate/controller/car/AddDriverToCarController.java b/src/main/java/mate/controller/car/AddDriverToCarController.java new file mode 100644 index 000000000..87e01e68b --- /dev/null +++ b/src/main/java/mate/controller/car/AddDriverToCarController.java @@ -0,0 +1,42 @@ +package mate.controller.car; + +import java.io.IOException; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.model.Car; +import mate.model.Driver; +import mate.service.CarService; +import mate.service.DriverService; + +@WebServlet(urlPatterns = "/cars/driver/add") +public class AddDriverToCarController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private static final CarService carService = (CarService) + injector.getInstance(CarService.class); + private static final DriverService driverService = (DriverService) + injector.getInstance(DriverService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + List cars = carService.getAll(); + List drivers = driverService.getAll(); + req.setAttribute("cars",cars); + req.setAttribute("drivers", drivers); + req.getRequestDispatcher("/WEB-INF/views/cars/driver/add.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Car car = carService.get(Long.valueOf(req.getParameter("car"))); + Driver driver = driverService.get(Long.valueOf(req.getParameter("driver"))); + carService.addDriverToCar(driver,car); + resp.sendRedirect(req.getContextPath() + "/cars/all"); + } +} diff --git a/src/main/java/mate/controller/car/DeleteCarController.java b/src/main/java/mate/controller/car/DeleteCarController.java new file mode 100644 index 000000000..f6e5d061b --- /dev/null +++ b/src/main/java/mate/controller/car/DeleteCarController.java @@ -0,0 +1,25 @@ +package mate.controller.car; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.service.CarService; + +@WebServlet(urlPatterns = "/cars/delete") +public class DeleteCarController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private static final CarService carService = (CarService) + injector.getInstance(CarService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Long id = Long.valueOf(req.getParameter("id")); + carService.delete(id); + resp.sendRedirect(req.getContextPath() + "/cars/all"); + } +} diff --git a/src/main/java/mate/controller/car/GetAllCarController.java b/src/main/java/mate/controller/car/GetAllCarController.java new file mode 100644 index 000000000..4b7a02ff2 --- /dev/null +++ b/src/main/java/mate/controller/car/GetAllCarController.java @@ -0,0 +1,27 @@ +package mate.controller.car; + +import java.io.IOException; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.model.Car; +import mate.service.CarService; + +@WebServlet(urlPatterns = "/cars/all") +public class GetAllCarController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private static final CarService + carService = (CarService) injector.getInstance(CarService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + List carList = carService.getAll(); + req.setAttribute("cars", carList); + req.getRequestDispatcher("/WEB-INF/views/cars/all.jsp").forward(req, resp); + } +} diff --git a/src/main/java/mate/controller/driver/AddDriverController.java b/src/main/java/mate/controller/driver/AddDriverController.java new file mode 100644 index 000000000..c6461c9cf --- /dev/null +++ b/src/main/java/mate/controller/driver/AddDriverController.java @@ -0,0 +1,36 @@ +package mate.controller.driver; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.model.Driver; +import mate.service.DriverService; + +@WebServlet(urlPatterns = "/drivers/add") +public class AddDriverController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private final DriverService driverService = (DriverService) + injector.getInstance(DriverService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher("/WEB-INF/views/drivers/add.jsp").forward(req,resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + String name = req.getParameter("name"); + String licenseNumber = req.getParameter("licenseNumber"); + Driver driver = new Driver(); + driver.setName(name); + driver.setLicenseNumber(licenseNumber); + driverService.create(driver); + resp.sendRedirect(req.getContextPath() + "/drivers/all"); + } +} diff --git a/src/main/java/mate/controller/driver/DeleteDriverController.java b/src/main/java/mate/controller/driver/DeleteDriverController.java new file mode 100644 index 000000000..c9bc450e8 --- /dev/null +++ b/src/main/java/mate/controller/driver/DeleteDriverController.java @@ -0,0 +1,25 @@ +package mate.controller.driver; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.service.DriverService; + +@WebServlet(urlPatterns = "/drivers/delete") +public class DeleteDriverController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private final DriverService driverService = (DriverService) + injector.getInstance(DriverService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Long id = Long.valueOf(req.getParameter("id")); + driverService.delete(id); + resp.sendRedirect(req.getContextPath() + "/drivers/all"); + } +} diff --git a/src/main/java/mate/controller/driver/GetAllDriversController.java b/src/main/java/mate/controller/driver/GetAllDriversController.java new file mode 100644 index 000000000..cfa5a0416 --- /dev/null +++ b/src/main/java/mate/controller/driver/GetAllDriversController.java @@ -0,0 +1,25 @@ +package mate.controller.driver; + +import java.io.IOException; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.model.Driver; +import mate.service.DriverService; + +public class GetAllDriversController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private final DriverService driverService = (DriverService) + injector.getInstance(DriverService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + List driverAll = driverService.getAll(); + req.setAttribute("drivers", driverAll); + req.getRequestDispatcher("/WEB-INF/views/drivers/all.jsp").forward(req,resp); + } +} diff --git a/src/main/java/mate/controller/manufacturer/AddManufacturerController.java b/src/main/java/mate/controller/manufacturer/AddManufacturerController.java new file mode 100644 index 000000000..acae51c0f --- /dev/null +++ b/src/main/java/mate/controller/manufacturer/AddManufacturerController.java @@ -0,0 +1,36 @@ +package mate.controller.manufacturer; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.model.Manufacturer; +import mate.service.ManufacturerService; + +@WebServlet(urlPatterns = "/manufacturers/add") +public class AddManufacturerController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private final ManufacturerService manufacturerService = (ManufacturerService) + injector.getInstance(ManufacturerService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher("/WEB-INF/views/manufacturers/add.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + String name = req.getParameter("name"); + String country = req.getParameter("country"); + Manufacturer manufacturer = new Manufacturer(); + manufacturer.setName(name); + manufacturer.setCountry(country); + manufacturerService.create(manufacturer); + resp.sendRedirect(req.getContextPath() + "/manufacturers/all"); + } +} diff --git a/src/main/java/mate/controller/manufacturer/DeleteManufacturersController.java b/src/main/java/mate/controller/manufacturer/DeleteManufacturersController.java new file mode 100644 index 000000000..4d92c9b62 --- /dev/null +++ b/src/main/java/mate/controller/manufacturer/DeleteManufacturersController.java @@ -0,0 +1,25 @@ +package mate.controller.manufacturer; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.service.ManufacturerService; + +@WebServlet(urlPatterns = "/manufacturers/delete") +public class DeleteManufacturersController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private final ManufacturerService manufacturerService = (ManufacturerService) + injector.getInstance(ManufacturerService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Long id = Long.valueOf(req.getParameter("id")); + manufacturerService.delete(id); + resp.sendRedirect(req.getContextPath() + "/manufacturers/all"); + } +} diff --git a/src/main/java/mate/controller/manufacturer/GetAllManufacturersController.java b/src/main/java/mate/controller/manufacturer/GetAllManufacturersController.java new file mode 100644 index 000000000..e49ea5e8d --- /dev/null +++ b/src/main/java/mate/controller/manufacturer/GetAllManufacturersController.java @@ -0,0 +1,27 @@ +package mate.controller.manufacturer; + +import java.io.IOException; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import mate.lib.Injector; +import mate.model.Manufacturer; +import mate.service.ManufacturerService; + +@WebServlet(urlPatterns = "/manufacturers/all") +public class GetAllManufacturersController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private final ManufacturerService manufacturerService = (ManufacturerService) + injector.getInstance(ManufacturerService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + List manufacturersAll = manufacturerService.getAll(); + req.setAttribute("manufacturers", manufacturersAll); + req.getRequestDispatcher("/WEB-INF/views/manufacturers/all.jsp").forward(req, resp); + } +} diff --git a/src/main/java/mate/model/Manufacturer.java b/src/main/java/mate/model/Manufacturer.java index b3ff7b966..2089a72e0 100644 --- a/src/main/java/mate/model/Manufacturer.java +++ b/src/main/java/mate/model/Manufacturer.java @@ -49,4 +49,11 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(id, name, country); } + + @Override + public String toString() { + return "id=" + id + + ", name='" + name + '\'' + + ", country='" + country; + } } diff --git a/src/main/java/mate/util/ConnectionUtil.java b/src/main/java/mate/util/ConnectionUtil.java index a9249b004..de8de3468 100644 --- a/src/main/java/mate/util/ConnectionUtil.java +++ b/src/main/java/mate/util/ConnectionUtil.java @@ -6,10 +6,10 @@ import java.util.Properties; public class ConnectionUtil { - private static final String URL = "YOUR DATABASE URL"; - private static final String USERNAME = "YOUR USERNAME"; - private static final String PASSWORD = "YOUR PASSWORD"; - private static final String JDBC_DRIVER = "YOUR DRIVER"; + private static final String URL = "jdbc:mysql://localhost:3306/taxi?serverTimezone=Europe/Kiev"; + private static final String USERNAME = "root"; + private static final String PASSWORD = "1984"; + private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static { try { diff --git a/src/main/webapp/WEB-INF/views/cars/add.jsp b/src/main/webapp/WEB-INF/views/cars/add.jsp new file mode 100644 index 000000000..1a7b75bb0 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cars/add.jsp @@ -0,0 +1,21 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" %> + + + Creating a car + + +

Please the form below

+
+ model
+ + Select a Category:  + + +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cars/all.jsp b/src/main/webapp/WEB-INF/views/cars/all.jsp new file mode 100644 index 000000000..d065d71af --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cars/all.jsp @@ -0,0 +1,28 @@ +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Get all cars + + +

List of cars

+ + + + + + + + + + + + + + + + + +
IDMODELMANUFACTURERDRIVERSDELETE
delete this car
+ + diff --git a/src/main/webapp/WEB-INF/views/cars/driver/add.jsp b/src/main/webapp/WEB-INF/views/cars/driver/add.jsp new file mode 100644 index 000000000..0c492cec8 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cars/driver/add.jsp @@ -0,0 +1,25 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" %> + + + Add driver to car + + +

Please the form below

+
+ + + + + +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/drivers/add.jsp b/src/main/webapp/WEB-INF/views/drivers/add.jsp new file mode 100644 index 000000000..1251738f8 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/drivers/add.jsp @@ -0,0 +1,16 @@ +<%@ page contentType="text/html;charset=UTF-8" %> + + + Creating a driver + + +

Please the form below

+
+ name +
+ licenseNumber +
+ +
+ + diff --git a/src/main/webapp/WEB-INF/views/drivers/all.jsp b/src/main/webapp/WEB-INF/views/drivers/all.jsp new file mode 100644 index 000000000..7ee5da45c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/drivers/all.jsp @@ -0,0 +1,27 @@ +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Get all drivers + + +

List of drivers

+ + + + + + + + + + + + + + + +
IDNAMELICENSE NUMBERDELETE
delete this driver
+ + diff --git a/src/main/webapp/WEB-INF/views/manufacturers/add.jsp b/src/main/webapp/WEB-INF/views/manufacturers/add.jsp new file mode 100644 index 000000000..744085920 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturers/add.jsp @@ -0,0 +1,14 @@ +<%@ page contentType="text/html;charset=UTF-8" %> + + + Creating a manufacturer + + +

Please the form below

+
+ name
+ country
+ +
+ + diff --git a/src/main/webapp/WEB-INF/views/manufacturers/all.jsp b/src/main/webapp/WEB-INF/views/manufacturers/all.jsp new file mode 100644 index 000000000..4ce6e22a9 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturers/all.jsp @@ -0,0 +1,27 @@ +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Get all manufacturers + + +

List of manufacturers

+ + + + + + + + + + + + + + + +
IDNAMECOUNTRYDELETE
delete this manufacturer
+ + diff --git a/src/main/webapp/web.xml b/src/main/webapp/web.xml index 00afaeb93..ebea4fa0a 100644 --- a/src/main/webapp/web.xml +++ b/src/main/webapp/web.xml @@ -6,9 +6,29 @@ index mate.controller.IndexController + index /index + + + getAllDriversController + mate.controller.driver.GetAllDriversController + + + getAllDriversController + /drivers/all + + + + addCarController + mate.controller.car.AddCarController + + + addCarController + /cars/add + +