Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package cz.PA165.vozovyPark.controller; import cz.PA165.vozovyPark.dto.UserDTO; import cz.PA165.vozovyPark.dto.VehicleDTO; import cz.PA165.vozovyPark.enums.UserClassEnum; import cz.PA165.vozovyPark.service.DriveService; import cz.PA165.vozovyPark.service.ServiceIntervalService; import cz.PA165.vozovyPark.service.UserService; import cz.PA165.vozovyPark.service.VehicleService; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * * @author jzelezny */ @Controller public class VehicleController { @Autowired private VehicleService vehicleService; @Autowired private UserService userService; @Autowired private ServiceIntervalService serviceIntervalService; @Autowired private DriveService driveService; @RequestMapping(value = "vehicle/allVehicles") public String viewAllVehicles(ModelMap model) { List<UserDTO> userLoggedInList = userService.getByUsername(getLoggedUsername()); if (userLoggedInList.size() == 1) { UserDTO userLoggedIn = userLoggedInList.get(0); if (userLoggedIn.getIsAdmin()) { model.put("allVehicles", vehicleService.findAll()); } else { model.put("allVehicles", vehicleService.findByUserClass(userLoggedIn.getUserClass())); } return "vehicle/allVehicles"; } else { model.put("allVehicles", vehicleService.findAll()); return "vehicle/allVehicles"; } } @RequestMapping(value = "/vehicle/{vehicleId}") public String viewVehicle(ModelMap model, @PathVariable Long vehicleId) { //retype Long to String? - where? model.put("vehicleById", vehicleService.getById(vehicleId)); return "/vehicle/vehicleView"; } @RequestMapping(value = "/vehicle/new", method = RequestMethod.GET) public String showAddVehicleForm(ModelMap model) { model.addAttribute("vehicle", new VehicleDTO()); model.put("userClass", UserClassEnum.values()); return "/vehicle/vehicleForm"; } @RequestMapping(value = "/vehicle/new", method = RequestMethod.POST) public String addVehicle(@Valid @ModelAttribute("vehicle") VehicleDTO vehicle, BindingResult result) { // @Valid validates model after binding user input to it if (result.hasErrors()) { return "/vehicle/vehicleForm"; } vehicleService.createVehicle(vehicle); return "redirect:/vehicle/allVehicles"; } @RequestMapping(value = "/vehicle/update/{vehicleId}", method = RequestMethod.GET) public String showEditForm(ModelMap model, @PathVariable("vehicleId") Long id) { VehicleDTO vehicle = vehicleService.getById(id); model.put("vehicle", vehicle); model.put("userClass", UserClassEnum.values()); // int thisYear = DateTime.now().getYear(); // for (int i = thisYear; i >= 1950;i--){ // model.put("yearMade",i); // } return "/vehicle/vehicleUpdateForm"; } @RequestMapping(value = "/vehicle/update/{vehicleId}", method = RequestMethod.POST) public String updateVehicle(@ModelAttribute("vehicle") VehicleDTO vehicle, @PathVariable("vehicleId") Long id, BindingResult result) { if (result.hasErrors()) { return "/vehicle/vehicleUpdateForm"; } if (id == null) { return "/vehicle/vehicleUpdateForm"; } vehicleService.updateVehicle(vehicle); return "redirect:/vehicle/allVehicles"; } @RequestMapping(value = "/vehicle/delete/{vehicleId}", method = RequestMethod.GET) public String deleteVehicle(@PathVariable("vehicleId") Long id, ModelMap model, HttpServletRequest req) { VehicleDTO vehicle = vehicleService.getById(id); if (serviceIntervalService.findAllByVehicle(vehicle).isEmpty() && !driveService.hasVehicleDrives(vehicle)) { vehicleService.removeVehicle(vehicle); } else { req.getSession().setAttribute("message", "Vehicle has service intervals or drives.."); return "redirect:/vehicle/" + vehicle.getId(); } return "redirect:/vehicle/allVehicles"; } public String getLoggedUsername() { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); return auth.getName(); } }