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 com.tsp.controllers; import com.tsp.dao.ClientDao; import com.tsp.dao.DriverDao; import com.tsp.dao.OrderDao; import com.tsp.dao.PlaceDao; import com.tsp.dao.RouteDao; import com.tsp.dao.StockDao; import com.tsp.model.Client; import com.tsp.model.Driver; import com.tsp.model.LatLng; import com.tsp.model.Order; import com.tsp.model.Place; import com.tsp.model.Route; import com.tsp.model.Stock; import com.tsp.service.DriverService; import com.tsp.service.OrderService; import com.tsp.service.PlaceService; import com.tsp.service.RouteService; import java.util.HashSet; import java.util.List; import javax.annotation.security.RolesAllowed; import org.joda.time.LocalDate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat.ISO; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; /** * * @author Linar Abzaltdinov */ @Controller @RequestMapping(value = "/admin") @RolesAllowed(value = "ROLE_ADMIN") @SessionAttributes({ "futureRoute" }) public class AdminController { private static final Logger log = LoggerFactory.getLogger(AdminController.class); @Autowired ClientDao clientDao; @Autowired StockDao stockDao; @Autowired DriverDao driverDao; @Autowired PlaceService placeService; @Autowired RouteService routeService; @Autowired DriverService driverService; @Autowired OrderService orderService; HashSet<Place> places = new HashSet<>(); @RequestMapping(value = { "/index", "/" }, method = RequestMethod.GET) public String admin(Model model) { return "welcome"; } @RequestMapping(value = "/stocks") ModelAndView stocks() { List<Stock> allStocks = stockDao.getAllStocks(); ModelAndView mv = new ModelAndView("stocks"); mv.addObject("stocks", allStocks); return mv; } // THIS METHODS MOVED TO StockRestController // @RequestMapping(method = RequestMethod.POST, value="/stocks/add") // String addStock(@RequestParam("address") String address) // { // stockDao.addNewStock(address); // return "redirect:/admin/stocks"; // } // // @RequestMapping(method = RequestMethod.GET, value="/stocks/remove") // String removeStock(@RequestParam("id") Long id) // { // stockDao.removeStockById(id); // return "redirect:/admin/stocks"; // } @RequestMapping(value = "/drivers") ModelAndView drivers() { boolean canCreate = true; if (stockDao.getAllStocks().isEmpty()) canCreate = false; List<Driver> allDrivers = driverDao.getAllDrivers(); ModelAndView mv = new ModelAndView("drivers"); mv.addObject("canCreate", canCreate); mv.addObject("drivers", allDrivers); return mv; } @RequestMapping(method = RequestMethod.GET, value = "/drivers/remove") String removeDriver(@RequestParam("id") Long id) { driverDao.removeById(id); return "redirect:/admin/drivers"; } @RequestMapping(method = RequestMethod.GET, value = "/drivers/routes") String showRoutesOfDriver(@RequestParam("id") Long id, Model model) { Driver driver = driverDao.findById(id); model.addAttribute("username", driver.getUsername()); model.addAttribute("routes", routeService.findRouteByDriver(driver)); return "routes"; } @RequestMapping(method = RequestMethod.GET, value = "/drivers/routes/showroute") String showRoute(@RequestParam("id") Long id, Model model) { Route route = routeService.findById(id); model.addAttribute("route", route.toStringForYMaps()); model.addAttribute("yandexnaviroute", route.getOrders()); return "routeonmap"; } @RequestMapping(method = RequestMethod.GET, value = "/drivers/routes/complete") String completeRoute(@RequestParam("id") Long id, Model model) { routeService.complete(id); return "redirect:/admin/drivers"; } @RequestMapping(value = "/clients") ModelAndView clients() { List<Client> allClients = clientDao.getAllClients(); ModelAndView mv = new ModelAndView("clients"); mv.addObject("clients", allClients); return mv; } @RequestMapping(method = RequestMethod.GET, value = "/clients/remove") String removeClient(@RequestParam("id") Long id) { clientDao.removeById(id); return "redirect:/admin/clietns"; } @RequestMapping(method = RequestMethod.GET, value = "/clients/orders") ModelAndView getOrdersForClient(@RequestParam("clientid") Long id) { List<Order> orders = orderService.findOrdersByClientId(id); ModelAndView mv = new ModelAndView("orders"); mv.addObject("orders", orders); mv.addObject("username", clientDao.findById(id).getUsername()); return mv; } @RequestMapping(value = "/orders") ModelAndView orders() { List<Order> allOrders = orderService.findAllOrders(); ModelAndView mv = new ModelAndView("orders"); mv.addObject("orders", allOrders); mv.addObject("today", LocalDate.now()); return mv; } @RequestMapping(method = RequestMethod.POST, value = "/orders/add") String addOrder(@RequestParam("address") String address, @RequestParam("desc") String description, @RequestParam("date") @DateTimeFormat(iso = ISO.DATE) LocalDate date) { orderService.addNewOrder(address, date, description); return "redirect:/admin/orders"; } @RequestMapping(method = RequestMethod.GET, value = "/orders/cancel") String addOrder(@RequestParam("id") Long id) { orderService.cancelOrder(id); return "redirect:/admin/orders"; } @RequestMapping(value = "/createroute") String createRoute(Model model) { model.addAttribute("drivers", driverDao.getAllDrivers()); model.addAttribute("today", LocalDate.now()); return "createroute"; } @RequestMapping(method = RequestMethod.POST, value = "/initroute") String newRoute(Model model, @RequestParam("driver_id") Long id, @RequestParam("date") @DateTimeFormat(iso = ISO.DATE) LocalDate date) { Driver driver = driverDao.findById(id); boolean isCreated = routeService.createRoute(date, driver); if (isCreated) return "redirect:drivers/routes?id=" + driver.getId(); else { model.addAttribute("error", " ?, ?, ? , ?"); return createRoute(model); } } } // // FOR LIMITED NUMBER OF ORDERS PER DRIVER // // @RequestMapping(value="/createroute1") // String createroute1(Model model) // { // model.addAttribute("drivers", driverDao.getAllDrivers()); // model.addAttribute("today", LocalDate.now()); // return "createroute1"; // } // // @RequestMapping(method = RequestMethod.POST, value="/initroute1") // String initroute1(Model model, @RequestParam("driver_id") Long id, @RequestParam("count") int count, @RequestParam("date") @DateTimeFormat(iso=ISO.DATE) LocalDate date) // { // Driver driver = driverDao.findById(id); // List<Order> orders = orderDao.findUntakenOrdersByDateForDriver(date, driver); // if (orders.size() < count) // { // model.addAttribute("error", " ?, ?, ? , ?"); // return createroute(model); // } // orders = orders.subList(0, count); // List<Order> ordersAsRoute = Solver.getOrdersAsRouteTEST(driver.getStock(), orders); // Route route = new Route(driver, date, ordersAsRoute); // if (routeDao.saveRoute(route)) // log.info("New route created for " + route.getDriver().getUsername() + " with id=" + route.getId()); // return "redirect:drivers/routes?id="+route.getDriver().getId(); // //String[] split = lengths.split(","); // //ArrayList<ArrayList<Integer>> a = new ArrayList<>(); // //return "redirect:/route"; // } // // @RequestMapping(value="/fill") // String fill() // { //// Driver driver = driverDao.findById(id); //// List<Order> orders = orderDao.findUntakenOrdersByDateForDriver(date, driver); //// if (orders.isEmpty()) //// { //// model.addAttribute("error", " ?, ?, ? , ?"); //// return createroute(model); //// } //// String places = Solver.generateRouteForGettingLengths(driver.getStock(), orders); //// Route furuteRoute = new Route(driver, LocalDate.now(), orders); //// model.addAttribute("places", places); //// model.addAttribute(furuteRoute); // int lineCount=0; // if (places.isEmpty()) // { // try ( // BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("/Users/polzovatel/Documents/ufa_addresses.csv"), "utf-8")); // ){ // String s; // while ((s=br.readLine()) !=null ) { // lineCount++; // log.debug("input string: "+s); // String[] split = s.split(";"); // if (split.length != 3) // continue; // // Place p = new Place(split[2], new LatLng(Double.valueOf(split[0]),Double.valueOf(split[1]))); // //placeDao.save(p); // places.add(p); // //System.out.println(lineCount); // // } // } // catch (IOException ex) { // System.out.println("Reading error in line "+lineCount); // ex.printStackTrace(); // } // } // int i = 0; // Iterator<Place> it = places.iterator(); // if (stockDao.getAllStocks().isEmpty()) // { // while (it.hasNext()) // { // Place p = it.next(); // placeDao.save(p); // Stock stock = stockDao.addNewStock(p); // Driver dr = new Driver(); // dr.setUsername("driver" + (i+1)); // dr.setFullName("driver" + (i+1)); // dr.setPassword("1234"); // dr.setConfirmPassword("1234"); // dr.setStock(stock); // driverService.save(dr); // it.remove(); // i++; // if (i == 1) // break; // } // } // Random rand = new Random(); // int iter =0; // while (it.hasNext()) // { // log.debug("Iteration: "+(++iter)); // Place p = it.next(); // LocalDate date = LocalDate.now(); // try { // placeDao.save(p); // } catch (Exception ex) // { // continue; // } // orderDao.addNewOrder(p, date, "-"); // if (iter % 55 == 0) // break; // } // return "redirect:createroute"; // }