diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..e56f02582 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 6366460f0..db004c143 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/* *.iml target/* +*.DS_Store diff --git a/pom.xml b/pom.xml index 8f7cf6b7d..86bb5f262 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,12 @@ 4.0.1 provided + + + jstl + jstl + 1.2 + diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 000000000..d221983af Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/main/.DS_Store b/src/main/.DS_Store new file mode 100644 index 000000000..09754eb6e Binary files /dev/null and b/src/main/.DS_Store differ diff --git a/src/main/java/mate/controller/cars/AddDriverToCarController.java b/src/main/java/mate/controller/cars/AddDriverToCarController.java new file mode 100644 index 000000000..6a0c92abe --- /dev/null +++ b/src/main/java/mate/controller/cars/AddDriverToCarController.java @@ -0,0 +1,41 @@ +package mate.controller.cars; + +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/driver/add") +public class AddDriverToCarController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private final DriverService driverService = (DriverService) injector + .getInstance(DriverService.class); + + private final CarService carService = (CarService) injector.getInstance(CarService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher(req.getContextPath() + + "/WEB-INF/views/cars/driver/add.jsp") + .forward(req,resp); + } + + @Override + 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/cars/DeleteCarController.java b/src/main/java/mate/controller/cars/DeleteCarController.java new file mode 100644 index 000000000..deb171328 --- /dev/null +++ b/src/main/java/mate/controller/cars/DeleteCarController.java @@ -0,0 +1,25 @@ +package mate.controller.cars; + +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 = "/cars/delete") +public class DeleteCarController 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() + "/cars/all"); + } +} diff --git a/src/main/java/mate/controller/cars/GetAllCarsController.java b/src/main/java/mate/controller/cars/GetAllCarsController.java new file mode 100644 index 000000000..225f57c5f --- /dev/null +++ b/src/main/java/mate/controller/cars/GetAllCarsController.java @@ -0,0 +1,18 @@ +package mate.controller.cars; + +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 = "/cars") +public class GetAllCarsController extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher(req.getContextPath() + "/WEB-INF/views/cars/all.jsp") + .forward(req,resp); + } +} diff --git a/src/main/java/mate/controller/cars/NewCarController.java b/src/main/java/mate/controller/cars/NewCarController.java new file mode 100644 index 000000000..7e44ecc77 --- /dev/null +++ b/src/main/java/mate/controller/cars/NewCarController.java @@ -0,0 +1,40 @@ +package mate.controller.cars; + +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.Manufacturer; +import mate.service.CarService; +import mate.service.ManufacturerService; + +@WebServlet(urlPatterns = "/cars/add") + +public class NewCarController 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/add.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + String model = req.getParameter("Model"); + Long manufacturer = Long.valueOf(req.getParameter("ManufacturerID")); + Manufacturer manufacture = manufacturerService.get(manufacturer); + carService.create(new Car(model, manufacture)); + resp.sendRedirect(req.getContextPath() + "/cars"); + + } +} diff --git a/src/main/java/mate/controller/drivers/DeleteDriverController.java b/src/main/java/mate/controller/drivers/DeleteDriverController.java new file mode 100644 index 000000000..41d003d52 --- /dev/null +++ b/src/main/java/mate/controller/drivers/DeleteDriverController.java @@ -0,0 +1,25 @@ +package mate.controller.drivers; + +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("/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 + public 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/drivers/GetAllDriversController.java b/src/main/java/mate/controller/drivers/GetAllDriversController.java new file mode 100644 index 000000000..fa0478e33 --- /dev/null +++ b/src/main/java/mate/controller/drivers/GetAllDriversController.java @@ -0,0 +1,18 @@ +package mate.controller.drivers; + +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 = "/drivers") +public class GetAllDriversController extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher(req.getContextPath() + "/WEB-INF/views/drivers/all.jsp") + .forward(req,resp); + } +} diff --git a/src/main/java/mate/controller/drivers/NewDriverController.java b/src/main/java/mate/controller/drivers/NewDriverController.java new file mode 100644 index 000000000..102351f58 --- /dev/null +++ b/src/main/java/mate/controller/drivers/NewDriverController.java @@ -0,0 +1,37 @@ +package mate.controller.drivers; + +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; +import mate.service.ManufacturerService; + +@WebServlet(urlPatterns = "/drivers/add") +public class NewDriverController extends HttpServlet { + private static final Injector injector = Injector.getInstance("mate"); + private final DriverService driverService = (DriverService) injector + .getInstance(DriverService.class); + private final ManufacturerService manufacturerService = + (ManufacturerService) injector.getInstance(ManufacturerService.class); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher(req.getContextPath() + ("/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"); + driverService.create(new Driver(name, licenseNumber)); + resp.sendRedirect(req.getContextPath() + "/drivers"); + } +} diff --git a/src/main/java/mate/controller/IndexController.java b/src/main/java/mate/controller/main/IndexController.java similarity index 81% rename from src/main/java/mate/controller/IndexController.java rename to src/main/java/mate/controller/main/IndexController.java index 27bcd4faa..58db92594 100644 --- a/src/main/java/mate/controller/IndexController.java +++ b/src/main/java/mate/controller/main/IndexController.java @@ -1,13 +1,15 @@ -package mate.controller; +package mate.controller.main; 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 = "/") public class IndexController extends HttpServlet { - @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getRequestDispatcher("/WEB-INF/views/index.jsp").forward(req, resp); diff --git a/src/main/java/mate/controller/manufacturers/DeleteManufacturerController.java b/src/main/java/mate/controller/manufacturers/DeleteManufacturerController.java new file mode 100644 index 000000000..e97a852b3 --- /dev/null +++ b/src/main/java/mate/controller/manufacturers/DeleteManufacturerController.java @@ -0,0 +1,25 @@ +package mate.controller.manufacturers; + +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("/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 id = Long.valueOf(req.getParameter("id")); + manufacturerService.delete(id); + resp.sendRedirect(req.getContextPath() + "/manufacturers/all"); + } +} diff --git a/src/main/java/mate/controller/manufacturers/GetAllManufacturersController.java b/src/main/java/mate/controller/manufacturers/GetAllManufacturersController.java new file mode 100644 index 000000000..c714797c7 --- /dev/null +++ b/src/main/java/mate/controller/manufacturers/GetAllManufacturersController.java @@ -0,0 +1,27 @@ +package mate.controller.manufacturers; + +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 manufacturerList = manufacturerService.getAll(); + req.setAttribute("manufacturers", manufacturerList); + req.getRequestDispatcher("/WEB-INF/views/manufacturers/all.jsp").forward(req, resp); + } +} diff --git a/src/main/java/mate/controller/manufacturers/NewManufacturerController.java b/src/main/java/mate/controller/manufacturers/NewManufacturerController.java new file mode 100644 index 000000000..30302475f --- /dev/null +++ b/src/main/java/mate/controller/manufacturers/NewManufacturerController.java @@ -0,0 +1,34 @@ +package mate.controller.manufacturers; + +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 NewManufacturerController 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(name,country); + manufacturerService.create(manufacturer); + resp.sendRedirect(req.getContextPath() + "/manufacturers"); + } +} diff --git a/src/main/java/mate/model/Car.java b/src/main/java/mate/model/Car.java index 5cabe9ca6..e5b20ef49 100644 --- a/src/main/java/mate/model/Car.java +++ b/src/main/java/mate/model/Car.java @@ -1,5 +1,6 @@ package mate.model; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -9,6 +10,15 @@ public class Car { private Manufacturer manufacturer; private List drivers; + public Car() { + } + + public Car(String model, Manufacturer manufacturer) { + this.model = model; + this.manufacturer = manufacturer; + this.drivers = new ArrayList<>(); + } + public Long getId() { return id; } diff --git a/src/main/java/mate/model/Driver.java b/src/main/java/mate/model/Driver.java index 49306359c..accf73e08 100644 --- a/src/main/java/mate/model/Driver.java +++ b/src/main/java/mate/model/Driver.java @@ -7,6 +7,14 @@ public class Driver { private String name; private String licenseNumber; + public Driver(String name, String licenseNumber) { + this.name = name; + this.licenseNumber = licenseNumber; + } + + public Driver() { + } + public Long getId() { return id; } diff --git a/src/main/java/mate/model/Manufacturer.java b/src/main/java/mate/model/Manufacturer.java index b3ff7b966..fac80e2a4 100644 --- a/src/main/java/mate/model/Manufacturer.java +++ b/src/main/java/mate/model/Manufacturer.java @@ -7,6 +7,14 @@ public class Manufacturer { private String name; private String country; + public Manufacturer(String name, String country) { + this.name = name; + this.country = country; + } + + public Manufacturer() { + } + public Long getId() { return id; } diff --git a/src/main/java/mate/util/ConnectionUtil.java b/src/main/java/mate/util/ConnectionUtil.java index a9249b004..e9f5fdd17 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=UTC"; + private static final String USERNAME = "root"; + private static final String PASSWORD = "1234567890"; + 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..64a562035 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cars/add.jsp @@ -0,0 +1,36 @@ +<%-- + Created by IntelliJ IDEA. + User: ihor + Date: 6/20/23 + Time: 6:47 PM + To change this template use File | Settings | File Templates. +--%> +<%--<%@ page contentType="text/html;charset=UTF-8" language="java" %>--%> +<%----%> +<%----%> +<%-- Title--%> +<%----%> +<%----%> +<%--

this is page for adding new car

--%> +<%--
--%> +<%--Manufacturer
--%> +<%--Model
--%> +<%--<--%> +<%----%> +<%--
--%> +<%----%> +<%----%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Create CAR + + +

Create car using these fields

+
+ Model
+ Manufacturer id
+ +
+ + \ 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..26db57b5f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cars/all.jsp @@ -0,0 +1,45 @@ +<%-- + Created by IntelliJ IDEA. + User: ihor + Date: 6/20/23 + Time: 8:08 PM + To change this template use File | Settings | File Templates. +--%> + +<%@ 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:

+ + + + + + + + + + + + + + + + + + + + + + + + +
IDMODELMANUFACTURE IDMANUFACTURE NAMEMANUFACTURER COUNTRYDRIVERSDELETE
+ + delete
+ + \ No newline at end of file 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..36b5807e5 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cars/driver/add.jsp @@ -0,0 +1,21 @@ +<%-- + Created by IntelliJ IDEA. + User: ihor + Date: 6/27/23 + Time: 7:29 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Add Driver to Car + + +

Add Driver to Car form

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

Create driver using these fields

+
+ Name
+ License Number
+ +
+ + \ No newline at end of file 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..8a58aca37 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/drivers/all.jsp @@ -0,0 +1,26 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + ALL DRIVERS + + +

List of drivers:

+ + + + + + + + + + + + + + + +
IDNAMELICENSE_NUMBERDELETE
delete
+ + 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..36701a0bb --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturers/add.jsp @@ -0,0 +1,23 @@ +<%-- + Created by IntelliJ IDEA. + User: ihor + Date: 6/23/23 + Time: 9:00 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Create Manufacturer + + +

Create manufacturer using these fields

+
+ Name
+ Country
+ + + +
+ + \ No newline at end of file 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..eca39ba6b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/manufacturers/all.jsp @@ -0,0 +1,27 @@ +<%@ 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
+ + + \ No newline at end of file diff --git a/src/main/webapp/web.xml b/src/main/webapp/web.xml index 00afaeb93..43229e3b7 100644 --- a/src/main/webapp/web.xml +++ b/src/main/webapp/web.xml @@ -3,12 +3,56 @@ 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 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +