diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ead0ef36a..282f50ac5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v2 with: - java-version: '11' + java-version: '17' distribution: 'adopt' cache: maven - name: Build with Maven diff --git a/pom.xml b/pom.xml index 8f7cf6b7d..07720eed6 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,11 @@ 4.0.1 provided + + javax.servlet + jstl + 1.2 + diff --git a/src/main/java/mate/controller/car/CreateCarController.java b/src/main/java/mate/controller/car/CreateCarController.java new file mode 100644 index 000000000..211e2c4bb --- /dev/null +++ b/src/main/java/mate/controller/car/CreateCarController.java @@ -0,0 +1,44 @@ +package mate.controller.car; + +import java.io.IOException; +import java.util.ArrayList; +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/create") +public class CreateCarController extends HttpServlet { + private static final Injector injector = + Injector.getInstance("mate"); + 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("/WEB-INF/views/cars/create.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + String carModel = req.getParameter("car_model"); + Long manufacturerId = Long.valueOf(req.getParameter("manufacturer_id")); + Manufacturer manufacturer = manufacturerService.get(manufacturerId); + Car car = new Car(); + car.setManufacturer(manufacturer); + car.setModel(carModel); + car.setDrivers(new ArrayList<>()); + carService.create(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..04c883241 --- /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 final CarService carService = + (CarService) injector.getInstance(CarService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + carService.delete(Long.valueOf(req.getParameter("id"))); + 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..ad5309a85 --- /dev/null +++ b/src/main/java/mate/controller/car/GetAllCarsController.java @@ -0,0 +1,29 @@ +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 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/cars/all.jsp").forward(req, resp); + } +} diff --git a/src/main/java/mate/controller/driver/AddDriverToCarController.java b/src/main/java/mate/controller/driver/AddDriverToCarController.java new file mode 100644 index 000000000..027a3591b --- /dev/null +++ b/src/main/java/mate/controller/driver/AddDriverToCarController.java @@ -0,0 +1,40 @@ +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.Car; +import mate.model.Driver; +import mate.service.CarService; +import mate.service.DriverService; + +@WebServlet(urlPatterns = "/drivers/add") +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 { + req.getRequestDispatcher("/WEB-INF/views/drivers/add.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Long driverId = Long.valueOf(req.getParameter("driver_id")); + Long carId = Long.valueOf(req.getParameter("car_id")); + Driver driver = driverService.get(driverId); + Car car = carService.get(carId); + carService.addDriverToCar(driver, car); + resp.sendRedirect(req.getContextPath() + "/drivers"); + } +} diff --git a/src/main/java/mate/controller/driver/CreateDriverController.java b/src/main/java/mate/controller/driver/CreateDriverController.java new file mode 100644 index 000000000..d96cff2aa --- /dev/null +++ b/src/main/java/mate/controller/driver/CreateDriverController.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/create") +public class CreateDriverController 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/create.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Driver driver = new Driver(); + String name = req.getParameter("driver_name"); + String licenseNumber = req.getParameter("license_number"); + driver.setName(name); + driver.setLicenseNumber(licenseNumber); + driverService.create(driver); + resp.sendRedirect(req.getContextPath() + "/drivers"); + } +} 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..170ebe06c --- /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 { + driverService.delete(Long.valueOf(req.getParameter("id"))); + 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..7047d88f9 --- /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 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/drivers/all.jsp").forward(req, resp); + } +} diff --git a/src/main/java/mate/controller/manufacturer/CreateManufacturerController.java b/src/main/java/mate/controller/manufacturer/CreateManufacturerController.java new file mode 100644 index 000000000..1214f8989 --- /dev/null +++ b/src/main/java/mate/controller/manufacturer/CreateManufacturerController.java @@ -0,0 +1,37 @@ +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/create") +public class CreateManufacturerController 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/create.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Manufacturer manufacturer = new Manufacturer(); + String name = req.getParameter("manufacturer_name"); + String country = req.getParameter("manufacturer_country"); + manufacturer.setName(name); + manufacturer.setCountry(country); + manufacturerService.create(manufacturer); + resp.sendRedirect(req.getContextPath() + "/manufacturers"); + } +} 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..03f10f98c --- /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 { + manufacturerService.delete(Long.valueOf(req.getParameter("id"))); + 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..badbaba28 --- /dev/null +++ b/src/main/java/mate/controller/manufacturer/GetAllManufacturersController.java @@ -0,0 +1,28 @@ +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 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/manufacturers/all.jsp").forward(req, resp); + } +} diff --git a/src/main/java/mate/util/ConnectionUtil.java b/src/main/java/mate/util/ConnectionUtil.java index a9249b004..399515a3d 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 = "Ltkmrf008866"; + private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static { try { 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..caae5d62d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cars/all.jsp @@ -0,0 +1,35 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Cars + + +

list of cars:

+ + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/views/cars/create.jsp b/src/main/webapp/WEB-INF/views/cars/create.jsp new file mode 100644 index 000000000..538a30069 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cars/create.jsp @@ -0,0 +1,14 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Create car + + +

Fill out the form below

+ + Car model
+ Manufacturer ID
+ + + + 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..95fb3d6b3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/drivers/add.jsp @@ -0,0 +1,14 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Add driver to car + + +

Fill out the form below

+ + Driver id
+ Car id
+ + + + 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..b6c923231 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/drivers/all.jsp @@ -0,0 +1,29 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Drivers + + +

list of drivers:

+
CAR IDMODELMANUFACTURER IDDRIVERS ID
+ + + + delete car with id: ${car.id} + +
+ + + + + + + + + + + + + +
IDNAMELICENSE NUMBER
+ + delete manufacturer with id: ${manufacturer.id} + +
+ + diff --git a/src/main/webapp/WEB-INF/views/drivers/create.jsp b/src/main/webapp/WEB-INF/views/drivers/create.jsp new file mode 100644 index 000000000..fda1892df --- /dev/null +++ b/src/main/webapp/WEB-INF/views/drivers/create.jsp @@ -0,0 +1,14 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Create driver + + +

Fill out the form below

+
+ Driver name
+ License number
+ +
+ + 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..582d7fc3e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturers/all.jsp @@ -0,0 +1,29 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Manufacturers + + +

list of manufacturers:

+ + + + + + + + + + + + + + +
IDNAMECOUNTRY
+ + delete manufacturer with id: ${manufacturer.id} + +
+ + diff --git a/src/main/webapp/WEB-INF/views/manufacturers/create.jsp b/src/main/webapp/WEB-INF/views/manufacturers/create.jsp new file mode 100644 index 000000000..afadd6f45 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturers/create.jsp @@ -0,0 +1,14 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Create manufacturer + + +

Fill out the form below

+
+ manufacturer name
+ manufacturer country
+ +
+ +