diff --git a/pom.xml b/pom.xml index 8f7cf6b7d..0164778b9 100644 --- a/pom.xml +++ b/pom.xml @@ -23,13 +23,18 @@ mysql mysql-connector-java - 8.0.22 + 8.0.28 javax.servlet javax.servlet-api 4.0.1 - provided + compile + + + jstl + jstl + 1.2 diff --git a/src/main/java/mate/controller/IndexController.java b/src/main/java/mate/controller/IndexController.java index 27bcd4faa..02d542e0b 100644 --- a/src/main/java/mate/controller/IndexController.java +++ b/src/main/java/mate/controller/IndexController.java @@ -2,10 +2,12 @@ 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; +@WebServlet(urlPatterns = "/index") public class IndexController extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) 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..57c57d323 --- /dev/null +++ b/src/main/java/mate/controller/car/AddDriverToCarController.java @@ -0,0 +1,38 @@ +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.model.Car; +import mate.model.Driver; +import mate.service.CarService; +import mate.service.DriverService; + +@WebServlet(urlPatterns = "/cars/drivers/add") +public class AddDriverToCarController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("mate"); + private static final String ADD_Driver_TO_CAR_JSP = "/WEB-INF/views/car/addDriverToCar.jsp"; + private final CarService carService = (CarService) INJECTOR.getInstance(CarService.class); + private final DriverService driverService = + (DriverService) INJECTOR.getInstance(DriverService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher(ADD_Driver_TO_CAR_JSP).forward(req, resp); + } + + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Long carID = Long.valueOf(req.getParameter("car_id")); + Long driverID = Long.valueOf(req.getParameter("driver_id")); + Car car = carService.get(carID); + Driver driver = driverService.get(driverID); + carService.addDriverToCar(driver, car); + resp.sendRedirect(req.getContextPath() + "/cars"); + } +} 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..23acd135f --- /dev/null +++ b/src/main/java/mate/controller/car/DeleteCarController.java @@ -0,0 +1,24 @@ +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 final CarService carService = (CarService) INJECTOR.getInstance(CarService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Long carID = Long.valueOf(req.getParameter("id")); + carService.delete(carID); + resp.sendRedirect(req.getContextPath() + "/cars"); + } +} diff --git a/src/main/java/mate/controller/car/GetAllCarsController.java b/src/main/java/mate/controller/car/GetAllCarsController.java new file mode 100644 index 000000000..5ac39d801 --- /dev/null +++ b/src/main/java/mate/controller/car/GetAllCarsController.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") +public class GetAllCarsController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("mate"); + private static final String ALL_CARS_JSP = "/WEB-INF/views/car/allCars.jsp"; + private final CarService carService = (CarService) INJECTOR.getInstance(CarService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + List allCars = carService.getAll(); + req.setAttribute("cars", allCars); + req.getRequestDispatcher(ALL_CARS_JSP).forward(req, resp); + } +} diff --git a/src/main/java/mate/controller/car/RegistrationCarController.java b/src/main/java/mate/controller/car/RegistrationCarController.java new file mode 100644 index 000000000..f2a029ae2 --- /dev/null +++ b/src/main/java/mate/controller/car/RegistrationCarController.java @@ -0,0 +1,42 @@ +package mate.controller.car; + +import java.io.IOException; +import java.util.Collections; +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.Manufacturer; +import mate.service.CarService; +import mate.service.ManufacturerService; + +@WebServlet(urlPatterns = "/cars/add") +public class RegistrationCarController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("mate"); + private static final String ADD_CAR_JSP = "/WEB-INF/views/car/addCar.jsp"; + private final CarService carService = (CarService) INJECTOR.getInstance(CarService.class); + private final ManufacturerService manufacturerService = + (ManufacturerService) INJECTOR.getInstance(ManufacturerService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher(ADD_CAR_JSP).forward(req, resp); + } + + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + String model = req.getParameter("model"); + String manufacturerID = req.getParameter("manufacturer_id"); + Manufacturer manufacturer = manufacturerService.get(Long.valueOf(manufacturerID)); + Car car = new Car(); + car.setModel(model); + car.setManufacturer(manufacturer); + car.setDrivers(Collections.emptyList()); + carService.create(car); + resp.sendRedirect(req.getContextPath() + "/cars"); + } +} 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..76a306f89 --- /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 driverID = Long.valueOf(req.getParameter("id")); + driverService.delete(driverID); + resp.sendRedirect(req.getContextPath() + "/drivers"); + } +} 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..d802adbce --- /dev/null +++ b/src/main/java/mate/controller/driver/GetAllDriversController.java @@ -0,0 +1,28 @@ +package mate.controller.driver; + +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.Driver; +import mate.service.DriverService; + +@WebServlet(urlPatterns = "/drivers") +public class GetAllDriversController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("mate"); + private static final String ALL_DRIVERS_JSP = "/WEB-INF/views/driver/allDrivers.jsp"; + private final DriverService driverService = + (DriverService) INJECTOR.getInstance(DriverService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + List allDrivers = driverService.getAll(); + req.setAttribute("drivers", allDrivers); + req.getRequestDispatcher(ALL_DRIVERS_JSP).forward(req, resp); + } +} diff --git a/src/main/java/mate/controller/driver/RegistrationDriverController.java b/src/main/java/mate/controller/driver/RegistrationDriverController.java new file mode 100644 index 000000000..ea0e328d8 --- /dev/null +++ b/src/main/java/mate/controller/driver/RegistrationDriverController.java @@ -0,0 +1,37 @@ +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 RegistrationDriverController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("mate"); + private static final String ADD_DRIVER_JSP = "/WEB-INF/views/driver/addDriver.jsp"; + private final DriverService driverService = + (DriverService) INJECTOR.getInstance(DriverService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher(ADD_DRIVER_JSP).forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + String name = req.getParameter("name"); + String licenseNumber = req.getParameter("license_number"); + Driver driver = new Driver(); + driver.setName(name); + driver.setLicenseNumber(licenseNumber); + driverService.create(driver); + resp.sendRedirect(req.getContextPath() + "/drivers"); + } +} diff --git a/src/main/java/mate/controller/manufacturer/DeleteManufacturerController.java b/src/main/java/mate/controller/manufacturer/DeleteManufacturerController.java new file mode 100644 index 000000000..bb0ec93cd --- /dev/null +++ b/src/main/java/mate/controller/manufacturer/DeleteManufacturerController.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 DeleteManufacturerController 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 manufacturerID = Long.valueOf(req.getParameter("id")); + manufacturerService.delete(manufacturerID); + resp.sendRedirect(req.getContextPath() + "/manufacturers"); + } +} 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..39f8ad27c --- /dev/null +++ b/src/main/java/mate/controller/manufacturer/GetAllManufacturersController.java @@ -0,0 +1,29 @@ +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") +public class GetAllManufacturersController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("mate"); + private static final String ALL_MANUFACTURERS_JSP = + "/WEB-INF/views/manufacturer/allManufacturers.jsp"; + private final ManufacturerService manufacturerService = + (ManufacturerService) INJECTOR.getInstance(ManufacturerService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + List allManufacturers = manufacturerService.getAll(); + req.setAttribute("manufacturers", allManufacturers); + req.getRequestDispatcher(ALL_MANUFACTURERS_JSP).forward(req, resp); + } +} diff --git a/src/main/java/mate/controller/manufacturer/RegistrationManufacturerController.java b/src/main/java/mate/controller/manufacturer/RegistrationManufacturerController.java new file mode 100644 index 000000000..897723f21 --- /dev/null +++ b/src/main/java/mate/controller/manufacturer/RegistrationManufacturerController.java @@ -0,0 +1,38 @@ +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 RegistrationManufacturerController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("mate"); + private static final String ADD_MANUFACTURER_JSP = + "/WEB-INF/views/manufacturer/addManufacturer.jsp"; + private final ManufacturerService manufacturerService = + (ManufacturerService) INJECTOR.getInstance(ManufacturerService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher(ADD_MANUFACTURER_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"); + } +} diff --git a/src/main/java/mate/util/ConnectionUtil.java b/src/main/java/mate/util/ConnectionUtil.java index a9249b004..98e7286b7 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"; + private static final String USERNAME = "root"; + private static final String PASSWORD = "00000"; + private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static { try { diff --git a/src/main/webapp/WEB-INF/views/car/addCar.jsp b/src/main/webapp/WEB-INF/views/car/addCar.jsp new file mode 100644 index 000000000..1d3a23b52 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/car/addCar.jsp @@ -0,0 +1,15 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Car registration + + +

Please, fill the form with car's data

+ +
+ Model
+ Manufacturer ID
+ +
+ + diff --git a/src/main/webapp/WEB-INF/views/car/addDriverToCar.jsp b/src/main/webapp/WEB-INF/views/car/addDriverToCar.jsp new file mode 100644 index 000000000..d111dc946 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/car/addDriverToCar.jsp @@ -0,0 +1,15 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Adding Driver to Car + + +

Please, fill the form for adding driver

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

List of Cars:

+ + + + + + + + + + + + + + + +
IDModelManufacturerDelete
Delete this car
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/driver/addDriver.jsp b/src/main/webapp/WEB-INF/views/driver/addDriver.jsp new file mode 100644 index 000000000..0651858f5 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/driver/addDriver.jsp @@ -0,0 +1,15 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Driver registration + + +

Please, fill the form with drivers' data

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

List of Drivers:

+ + + + + + + + + + + + + + + +
IDNameRegistration numberDelete
Delete this driver
+ + diff --git a/src/main/webapp/WEB-INF/views/manufacturer/addManufacturer.jsp b/src/main/webapp/WEB-INF/views/manufacturer/addManufacturer.jsp new file mode 100644 index 000000000..caa4c98f9 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturer/addManufacturer.jsp @@ -0,0 +1,15 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Manufacturer registration + + +

Please, fill the form with manufacturer's data

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

List of Manufacturers:

+ + + + + + + + + + + + + + + +
IDNameCountryDelete
Delete this manufacturer
+ + \ No newline at end of file diff --git a/src/main/webapp/web.xml b/src/main/webapp/web.xml index 00afaeb93..f69dec813 100644 --- a/src/main/webapp/web.xml +++ b/src/main/webapp/web.xml @@ -3,12 +3,5 @@ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> - - index - mate.controller.IndexController - - - index - /index - +