diff --git a/pom.xml b/pom.xml index 8f7cf6b7d..f7d9ec1b2 100644 --- a/pom.xml +++ b/pom.xml @@ -20,11 +20,19 @@ + + + jstl + jstl + 1.2 + + mysql mysql-connector-java - 8.0.22 + 8.0.28 + javax.servlet javax.servlet-api diff --git a/src/main/java/mate/carcontroller/AddDriverToCarController.java b/src/main/java/mate/carcontroller/AddDriverToCarController.java new file mode 100644 index 000000000..793acba71 --- /dev/null +++ b/src/main/java/mate/carcontroller/AddDriverToCarController.java @@ -0,0 +1,46 @@ +package mate.carcontroller; + +import java.io.IOException; +import java.util.List; +import java.util.NoSuchElementException; +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.Driver; +import mate.service.CarService; +import mate.service.DriverService; + +public class AddDriverToCarController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + 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 { + List allCars = carService.getAll(); + List allDrivers = driverService.getAll(); + req.setAttribute("cars", allCars); + req.setAttribute("drivers", allDrivers); + req.getRequestDispatcher("/WEB-INF/views/carsJsp/addDriverToCar.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + try { + Long driverId = Long.valueOf(request.getParameter("driver_id")); + Long carId = Long.valueOf(request.getParameter("car_id")); + Car car = carService.get(carId); + Driver driver = driverService.get(driverId); + carService.addDriverToCar(driver, car); + response.sendRedirect(request.getContextPath() + "/success"); + } catch (NoSuchElementException e) { + response.sendRedirect(request.getContextPath() + "/error"); + } + } +} diff --git a/src/main/java/mate/carcontroller/CarDeleteController.java b/src/main/java/mate/carcontroller/CarDeleteController.java new file mode 100644 index 000000000..d0ae0e720 --- /dev/null +++ b/src/main/java/mate/carcontroller/CarDeleteController.java @@ -0,0 +1,21 @@ +package mate.carcontroller; + +import java.io.IOException; +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.service.CarService; + +public class CarDeleteController extends HttpServlet { + public 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 id = Long.valueOf(req.getParameter("id")); + carService.delete(id); + } +} diff --git a/src/main/java/mate/carcontroller/CreateCarController.java b/src/main/java/mate/carcontroller/CreateCarController.java new file mode 100644 index 000000000..23ceca3ff --- /dev/null +++ b/src/main/java/mate/carcontroller/CreateCarController.java @@ -0,0 +1,47 @@ +package mate.carcontroller; + +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.exception.DataProcessingException; +import mate.lib.Injector; +import mate.model.Car; +import mate.model.Driver; +import mate.model.Manufacturer; +import mate.service.CarService; + +public class CreateCarController extends HttpServlet { + public 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 { + req.getRequestDispatcher("/WEB-INF/views/carsJsp/create_car.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + try { + String model = req.getParameter("model"); + Long manufacturerId = Long.valueOf(req.getParameter("manufacturer_id")); + + Manufacturer manufacturer = new Manufacturer(); + manufacturer.setId(manufacturerId); + Car car = new Car(); + List driverList = new ArrayList<>(); + car.setModel(model); + car.setManufacturer(manufacturer); + car.setDrivers(driverList); + carService.create(car); + resp.sendRedirect(req.getContextPath() + "/success"); + } catch (DataProcessingException e) { + resp.sendRedirect(req.getContextPath() + "/error"); + } + } +} diff --git a/src/main/java/mate/carcontroller/GetAllCarsController.java b/src/main/java/mate/carcontroller/GetAllCarsController.java new file mode 100644 index 000000000..d0daa2354 --- /dev/null +++ b/src/main/java/mate/carcontroller/GetAllCarsController.java @@ -0,0 +1,25 @@ +package mate.carcontroller; + +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.Car; +import mate.service.CarService; + +public class GetAllCarsController extends HttpServlet { + public 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 { + List allCars = carService.getAll(); + req.setAttribute("cars", allCars); + req.getRequestDispatcher("/WEB-INF/views/carsJsp/all_cars.jsp").forward(req, resp); + } +} diff --git a/src/main/java/mate/controller/IndexController.java b/src/main/java/mate/controller/WelcomePageController.java similarity index 72% rename from src/main/java/mate/controller/IndexController.java rename to src/main/java/mate/controller/WelcomePageController.java index 27bcd4faa..538ca57c0 100644 --- a/src/main/java/mate/controller/IndexController.java +++ b/src/main/java/mate/controller/WelcomePageController.java @@ -6,10 +6,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -public class IndexController extends HttpServlet { +public class WelcomePageController extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - req.getRequestDispatcher("/WEB-INF/views/index.jsp").forward(req, resp); + req.getRequestDispatcher("/WEB-INF/views/welcome.jsp").forward(req, resp); } } diff --git a/src/main/java/mate/drivercontroller/CreateDriverController.java b/src/main/java/mate/drivercontroller/CreateDriverController.java new file mode 100644 index 000000000..cbd1db222 --- /dev/null +++ b/src/main/java/mate/drivercontroller/CreateDriverController.java @@ -0,0 +1,40 @@ +package mate.drivercontroller; + +import java.io.IOException; +import java.util.NoSuchElementException; +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 CreateDriverController extends HttpServlet { + public 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/driversJsp/create_driver.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + try { + String name = req.getParameter("name"); + String driverLicence = req.getParameter("license_number"); + Driver driver = new Driver(); + driver.setName(name); + driver.setLicenseNumber(driverLicence); + driverService.create(driver); + + resp.sendRedirect(req.getContextPath() + "/success"); + } catch (NoSuchElementException e) { + resp.sendRedirect(req.getContextPath() + "/error"); + } + } +} diff --git a/src/main/java/mate/drivercontroller/DriverDeleteController.java b/src/main/java/mate/drivercontroller/DriverDeleteController.java new file mode 100644 index 000000000..2b462c853 --- /dev/null +++ b/src/main/java/mate/drivercontroller/DriverDeleteController.java @@ -0,0 +1,22 @@ +package mate.drivercontroller; + +import java.io.IOException; +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.service.DriverService; + +public class DriverDeleteController extends HttpServlet { + public 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); + } +} diff --git a/src/main/java/mate/drivercontroller/GetAllDriversController.java b/src/main/java/mate/drivercontroller/GetAllDriversController.java new file mode 100644 index 000000000..42fb7e529 --- /dev/null +++ b/src/main/java/mate/drivercontroller/GetAllDriversController.java @@ -0,0 +1,25 @@ +package mate.drivercontroller; + +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 { + public 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 allDrivers = driverService.getAll(); + req.setAttribute("drivers", allDrivers); + req.getRequestDispatcher("/WEB-INF/views/driversJsp/all_drivers.jsp").forward(req, resp); + } +} diff --git a/src/main/java/mate/manufacturercontroller/CreateManufacturerController.java b/src/main/java/mate/manufacturercontroller/CreateManufacturerController.java new file mode 100644 index 000000000..60c761b3a --- /dev/null +++ b/src/main/java/mate/manufacturercontroller/CreateManufacturerController.java @@ -0,0 +1,40 @@ +package mate.manufacturercontroller; + +import java.io.IOException; +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.Manufacturer; +import mate.service.ManufacturerService; + +public class CreateManufacturerController extends HttpServlet { + public 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/manufacturersJsp/create_manufacturer.jsp") + .forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + try { + 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() + "/success"); + } catch (RuntimeException e) { + resp.sendRedirect(req.getContextPath() + "/error"); + } + } +} diff --git a/src/main/java/mate/manufacturercontroller/GetAllManufacturersController.java b/src/main/java/mate/manufacturercontroller/GetAllManufacturersController.java new file mode 100644 index 000000000..e8b9eae24 --- /dev/null +++ b/src/main/java/mate/manufacturercontroller/GetAllManufacturersController.java @@ -0,0 +1,26 @@ +package mate.manufacturercontroller; + +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.Manufacturer; +import mate.service.ManufacturerService; + +public class GetAllManufacturersController extends HttpServlet { + public 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 allManufacturers = manufacturerService.getAll(); + req.setAttribute("manufacturers", allManufacturers); + req.getRequestDispatcher("/WEB-INF/views/manufacturersJsp/all_manufacturers.jsp") + .forward(req, resp); + } +} diff --git a/src/main/java/mate/manufacturercontroller/ManufacturerDeleteController.java b/src/main/java/mate/manufacturercontroller/ManufacturerDeleteController.java new file mode 100644 index 000000000..d16401789 --- /dev/null +++ b/src/main/java/mate/manufacturercontroller/ManufacturerDeleteController.java @@ -0,0 +1,22 @@ +package mate.manufacturercontroller; + +import java.io.IOException; +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.service.ManufacturerService; + +public class ManufacturerDeleteController extends HttpServlet { + public 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); + } +} diff --git a/src/main/java/mate/util/ConnectionUtil.java b/src/main/java/mate/util/ConnectionUtil.java index a9249b004..a9ad793d2 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 = "glorytobeServer"; + private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static { try { diff --git a/src/main/webapp/WEB-INF/views/carsJsp/addDriverToCar.jsp b/src/main/webapp/WEB-INF/views/carsJsp/addDriverToCar.jsp new file mode 100644 index 000000000..86b123c9a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/carsJsp/addDriverToCar.jsp @@ -0,0 +1,105 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html; charset=UTF-8" language="java" %> + + + + Add Driver to Car + + + +

Add Driver to Car

+ +
+
+
+
+ + +
+
+ + +
+ +
+
+
+ + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/views/carsJsp/all_cars.jsp b/src/main/webapp/WEB-INF/views/carsJsp/all_cars.jsp new file mode 100644 index 000000000..a70992829 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/carsJsp/all_cars.jsp @@ -0,0 +1,77 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html; charset=UTF-8" language="java" %> + + + + List of Cars + + + +

List of Cars

+ + + + + + + + + + + + + + + + + +
IDModelManufacturerDrivers
+ + , + + Delete Car +
+ + diff --git a/src/main/webapp/WEB-INF/views/carsJsp/create_car.jsp b/src/main/webapp/WEB-INF/views/carsJsp/create_car.jsp new file mode 100644 index 000000000..40a7feb0c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/carsJsp/create_car.jsp @@ -0,0 +1,74 @@ + + + + Create Driver + + + +

Create Car

+
+
+
+ + +
+ +
+ + +
+ + +
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/driversJsp/all_drivers.jsp b/src/main/webapp/WEB-INF/views/driversJsp/all_drivers.jsp new file mode 100644 index 000000000..24e4ece93 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/driversJsp/all_drivers.jsp @@ -0,0 +1,69 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html; charset=UTF-8" language="java" %> + + + + List of drivers + + + +

List of drivers

+ + + + + + + + + + + + + + + +
IdNameLicence Number
Delete Driver
+ + diff --git a/src/main/webapp/WEB-INF/views/driversJsp/create_driver.jsp b/src/main/webapp/WEB-INF/views/driversJsp/create_driver.jsp new file mode 100644 index 000000000..fe40143d6 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/driversJsp/create_driver.jsp @@ -0,0 +1,68 @@ + + + + Create Driver + + + +

Create Driver

+
+
+
+ + +
+ +
+ + +
+ + +
+
+ + + + diff --git a/src/main/webapp/WEB-INF/views/error.jsp b/src/main/webapp/WEB-INF/views/error.jsp new file mode 100644 index 000000000..a39538e47 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/error.jsp @@ -0,0 +1,34 @@ + + + + Error + + + +
+

something goes wrong.. check the input data!

+
+ + diff --git a/src/main/webapp/WEB-INF/views/index.jsp b/src/main/webapp/WEB-INF/views/index.jsp deleted file mode 100644 index 0fbc5292a..000000000 --- a/src/main/webapp/WEB-INF/views/index.jsp +++ /dev/null @@ -1,9 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - My team - - -

Hello, mates!

- - diff --git a/src/main/webapp/WEB-INF/views/manufacturersJsp/all_manufacturers.jsp b/src/main/webapp/WEB-INF/views/manufacturersJsp/all_manufacturers.jsp new file mode 100644 index 000000000..3fe19f461 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturersJsp/all_manufacturers.jsp @@ -0,0 +1,73 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html; charset=UTF-8" language="java" %> + + + + List of drivers + + + +

List of manufacturers

+ + + + + + + + + + + + + + + +
IdNameCountry
Delete + manufacturer
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/manufacturersJsp/create_manufacturer.jsp b/src/main/webapp/WEB-INF/views/manufacturersJsp/create_manufacturer.jsp new file mode 100644 index 000000000..bff27b5fd --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturersJsp/create_manufacturer.jsp @@ -0,0 +1,74 @@ + + + + Create Manufacturer + + + +

Create Manufacturer

+
+
+
+ + +
+ +
+ + +
+ + +
+
+ + + diff --git a/src/main/webapp/WEB-INF/views/success.jsp b/src/main/webapp/WEB-INF/views/success.jsp new file mode 100644 index 000000000..757da79ab --- /dev/null +++ b/src/main/webapp/WEB-INF/views/success.jsp @@ -0,0 +1,35 @@ + + + + Success + + + +
+

successfully created!

+
+ + + diff --git a/src/main/webapp/WEB-INF/views/welcome.jsp b/src/main/webapp/WEB-INF/views/welcome.jsp new file mode 100644 index 000000000..47e78132d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/welcome.jsp @@ -0,0 +1,63 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Welcome to My Team + + + + + + + diff --git a/src/main/webapp/web.xml b/src/main/webapp/web.xml index 00afaeb93..7bb36b630 100644 --- a/src/main/webapp/web.xml +++ b/src/main/webapp/web.xml @@ -4,11 +4,114 @@ http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> - index - mate.controller.IndexController + welcomePage + mate.controller.WelcomePageController - index - /index + welcomePage + /welcome + + + + createDriver + mate.drivercontroller.CreateDriverController + + + createDriver + /drivers/create + + + + success + /WEB-INF/views/success.jsp + + + success + /success + + + error + /WEB-INF/views/error.jsp + + + error + /error + + + createManufacturer + mate.manufacturercontroller.CreateManufacturerController + + + createManufacturer + /manufacturers/create + + + + createCar + mate.carcontroller.CreateCarController + + + createCar + /cars/create + + + + getAllDrivers + mate.drivercontroller.GetAllDriversController + + + getAllDrivers + /drivers/all + + + deleteDriver + mate.drivercontroller.DriverDeleteController + + + deleteDriver + /drivers/delete + + + addDriverToCar + mate.carcontroller.AddDriverToCarController + + + addDriverToCar + /cars/drivers/add + + + + getAllManufacturers + mate.manufacturercontroller.GetAllManufacturersController + + + getAllManufacturers + /manufacturers/all + + + + deleteManufacturer + mate.manufacturercontroller.ManufacturerDeleteController + + + deleteManufacturer + /manufacturers/delete + + + getAllCars + mate.carcontroller.GetAllCarsController + + + getAllCars + /cars/all + + + deleteCar + mate.carcontroller.CarDeleteController + + + deleteCar + /cars/delete +