From f6d23f860d7a6edb7cbdde75952d787cbe2852e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B0=D1=88=D0=B8=D0=BD=20=D0=9C=D0=B0=D0=BA=D1=81?= =?UTF-8?q?=D0=B8=D0=BC?= Date: Sun, 14 May 2023 20:39:33 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A7=D0=B8=D0=BD=D0=B8=D0=BC=20=D1=87=D0=B8?= =?UTF-8?q?=D0=BD=D0=B8=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data.mv.db | Bin 77824 -> 69632 bytes .../lab3/controller/BuyerController.java | 3 +- .../maxim/lab3/controller/BuyerDTO.java | 6 +- .../lab3/controller/BuyerMVCController.java | 1 + .../maxim/lab3/controller/CarController.java | 8 +- .../example/maxim/lab3/controller/CarDTO.java | 23 +-- .../lab3/controller/CarMVCController.java | 103 +++++++------- .../lab3/controller/StoreController.java | 12 +- .../maxim/lab3/controller/StoreDTO.java | 6 +- .../lab3/controller/StoreMVCController.java | 13 +- src/main/resources/templates/car-set.html | 132 ++++++++++++++++++ 11 files changed, 220 insertions(+), 87 deletions(-) create mode 100644 src/main/resources/templates/car-set.html diff --git a/data.mv.db b/data.mv.db index b9a589c7897e9dedf6c4ae2bef7e1f1a8ffcb2cf..30f036727910bd864a367a1d63d1eece71403b88 100644 GIT binary patch literal 69632 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 EAA@C6g#Z8m literal 77824 zcmeHQdyE~|S)Y5oYmc3EUXJr@lIx8V+sWo;&SPGeHe{dP>wWs(T|XjK);!KQPS(3- zy>{$^RP#`)<{yeg11&U^mQvJ~3Q-{hNXS529%{t~5T!-5C8bdQ0afrH|M1P6GmkrW zX7_HqiJkOZ**kM)=A8M?@0>ZW@B4mdvVn)(r4{d`_}D)80oFj8rVV*7Tv~pqfrvBY ztukkg`3+=Q$icp8+4@khvU=WGgIJf@>cw*_%h7|u5?k|LV5<$w34GI_+8#yzBmxov ziGV~vA|Mfv2uK7Z0uljvxOsVduD9Y?LMS1q0 z6lLZ*9KRhMtFJsCU9X~VKXs^fK-Fyrgffw8xt49&8dhCOb;}QkqU`$m&b^iDQ;G^k z4u(#cr6L_WF12kq@ifO_SVbN+h^x6fvF2lksTc(|F)T;L1Z$QV1S+OhKmrG@7`jEM z4$qj(*DMXL*v!ICV5!*i42lp|aey4^+d7;$CUIQ?Cw`z?*iZ>U9^BMaNW(M&?5MxpnMysIU}l;s^)1WLh@tA5NqtY( zRGkuPQisBcg)pNIoOr(OFn6b}8y>{b4aamfYQc$T+kW7xy6F=@08+6u;*tQtiL2`v zYmcq0o~^%t>*p_DTw7UXb>FSeURqi@;VfNZW6qkhaP!-Sr@@KA7(%wnkl`^*smcs&+9qZyv-ALl9Gc3Y%hnmZlsU*j9>HMDzzKnIh)py#pcMLb zh!s!|yDo!U268pWhFEssd!Fg3frC+)B{;D|*?l-+)Q9d`4Pdz7m@s0?6~cxk)=L@4 z1nUyRODy}L%W6|Nn3Z43kHeROa}6x?a?>kr8#+LkM9(-E4vs9XxGiY$SJ|@14u;>2 ztQbEI6=T~=`RQJ2+6-HBWF_M(46>izdOr<=@xlFgN2S8o-TL?4AFZ?P{FT3Z=s-U# z7uEws*|~2Y>#IDZ>4-K^PZ=nf#)~54O4NzyjvEWuINCV?($+i75=&M!m$Y zHedx22F_F)y6h}99NQ;>>pR(a1e~TKSE)E2iR0NwW2ihHE{&)8h!n(IbKE6XCuT05 z$KMB|e;sQyil;LdTb32(khu;se`{wVs&1-87f>MUP`c^vqB zU3?(Ksps391R;o-v^YiY z)HledoqYU-G3f@_hWeEbX%(gV;RoL6uN+XKwmOI!+km�gBqB`kB39)vm`)Z#G1< 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 findAllBuyer() { return buyerService.findAllBuyers() diff --git a/src/main/java/com/example/maxim/lab3/controller/BuyerDTO.java b/src/main/java/com/example/maxim/lab3/controller/BuyerDTO.java index 0aac610..c89ad04 100644 --- a/src/main/java/com/example/maxim/lab3/controller/BuyerDTO.java +++ b/src/main/java/com/example/maxim/lab3/controller/BuyerDTO.java @@ -6,12 +6,12 @@ import jakarta.validation.constraints.NotBlank; public class BuyerDTO { private long id; - @NotBlank(message = "FirstName can't be null or empty") + @NotBlank(message = "buyerFirstName can't be null or empty") private String buyerFirstName; - @NotBlank(message = "SecondName can't be null or empty") + @NotBlank(message = "buyerSecondName can't be null or empty") private String buyerSecondName; public BuyerDTO(Buyer buyer){ - this.id = buyer.getId(); + this.id =buyer.getId(); this.buyerFirstName = buyer.getBuyerFirstName(); this.buyerSecondName = buyer.getBuyerSecondName(); } diff --git a/src/main/java/com/example/maxim/lab3/controller/BuyerMVCController.java b/src/main/java/com/example/maxim/lab3/controller/BuyerMVCController.java index a6e29c0..176d65c 100644 --- a/src/main/java/com/example/maxim/lab3/controller/BuyerMVCController.java +++ b/src/main/java/com/example/maxim/lab3/controller/BuyerMVCController.java @@ -22,6 +22,7 @@ public class BuyerMVCController { .toList()); return "buyer"; } + @GetMapping(value = {"/edit", "/edit/{id}"}) public String editBuyer(@PathVariable(required = false) Long id, Model model) { diff --git a/src/main/java/com/example/maxim/lab3/controller/CarController.java b/src/main/java/com/example/maxim/lab3/controller/CarController.java index bbae588..24de0c2 100644 --- a/src/main/java/com/example/maxim/lab3/controller/CarController.java +++ b/src/main/java/com/example/maxim/lab3/controller/CarController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; @RestController -@RequestMapping(WebConfiguration.REST_API + "/car") +@RequestMapping("WebConfiguration.REST_API + /car") public class CarController { private final CarService carService; public CarController(CarService carService){ @@ -37,8 +37,8 @@ public class CarController { @GetMapping public List findAllCars(){ return carService.findAllCars() - .stream() - .map(x -> new CarDTO(x)) - .toList(); + .stream() + .map(x -> new CarDTO(x)) + .toList(); } } diff --git a/src/main/java/com/example/maxim/lab3/controller/CarDTO.java b/src/main/java/com/example/maxim/lab3/controller/CarDTO.java index f9529ca..f0784f8 100644 --- a/src/main/java/com/example/maxim/lab3/controller/CarDTO.java +++ b/src/main/java/com/example/maxim/lab3/controller/CarDTO.java @@ -8,7 +8,7 @@ import java.util.List; public class CarDTO { private long id; - @NotBlank(message = "CarName can't be null or empty") + @NotBlank(message = "carName can't be null or empty") private String carName; private List buyerDTOList; private List storeDTOList; @@ -33,19 +33,24 @@ public class CarDTO { public String getCarName(){ return carName; } - public void setCarName(String carName){ - this.carName = carName; - } public List getBuyerDTOList(){ return buyerDTOList; } - public void setBuyerDTOList(List buyers){ - this.buyerDTOList = buyers; + + public void setCarName(String carName) { + this.carName = carName; } + + public void setBuyerDTOList(List buyerDTOList) { + this.buyerDTOList = buyerDTOList; + } + + public void setStoreDTOList(List storeDTOList) { + this.storeDTOList = storeDTOList; + } + public List getStoreDTOList(){ return storeDTOList; } - public void setStoreDTOList(List stores){ - this.storeDTOList = stores; - } } + diff --git a/src/main/java/com/example/maxim/lab3/controller/CarMVCController.java b/src/main/java/com/example/maxim/lab3/controller/CarMVCController.java index 26dffe5..5999a44 100644 --- a/src/main/java/com/example/maxim/lab3/controller/CarMVCController.java +++ b/src/main/java/com/example/maxim/lab3/controller/CarMVCController.java @@ -32,11 +32,10 @@ public class CarMVCController { } @GetMapping(value = {"/edit", "/edit/{id}"}) public String editCar(@PathVariable(required = false) Long id, - @RequestParam(value ="PW", required = false) String PW, - Model model) { + Model model) { if (id == null || id <= 0) { List buyers = buyerService.findAllBuyers().stream() - .map(BuyerDTO::new).toList(); + .map(BuyerDTO::new).toList(); List stores = storeService.findAllStores().stream() .map(StoreDTO::new).toList(); model.addAttribute("CarDTO", new CarDTO()); @@ -44,75 +43,73 @@ public class CarMVCController { model.addAttribute("stores", stores); return "car-create"; } else { - if(PW.equals("N")) { - model.addAttribute("carId", id); - model.addAttribute("CarDTO", new CarDTO(carService.findCar(id))); - return "car-create"; - } - if(PW.equals("W")) { + String name = carService.findCar(id).getCarName(); List buyers = buyerService.findAllBuyers().stream() .map(BuyerDTO::new).toList(); List carBuyers = carService - .findCar(id).getBuyers().stream().map(BuyerDTO::new).toList(); + .findCar(id) + .getBuyers() + .stream() + .map(BuyerDTO::new) + .toList(); + List stores = storeService.findAllStores().stream() + .map(StoreDTO::new).toList(); + List carStores = carService + .findCar(id) + .getStores() + .stream() + .map(StoreDTO::new) + .toList(); + model.addAttribute("name", name); model.addAttribute("carId", id); model.addAttribute("carBuyers", carBuyers); model.addAttribute("buyers", buyers); - return "car-buyer"; - } - if(PW.equals("P")) { - List stores = storeService.findAllStores().stream() - .map(StoreDTO::new).toList(); - List carStores = carService - .findCar(id).getStores().stream().map(StoreDTO::new).toList(); - model.addAttribute("carId", id); model.addAttribute("carStores", carStores); model.addAttribute("stores", stores); - return "car-store"; - } + model.addAttribute("CarDTO", new CarDTO(carService.findCar(id))); } - return "car"; + return "car-set"; } - @PostMapping(value = {"/0"}) + @PostMapping(value = {"/"}) public String saveCar(@ModelAttribute @Valid CarDTO carDTO, - BindingResult bindingResult, - Model model) { + BindingResult bindingResult, + Model model) { if (bindingResult.hasErrors()) { model.addAttribute("errors", bindingResult.getAllErrors()); return "car-create"; } - carService.addCar(carDTO); + carService.addCar(carDTO); +// } else { +// carService.updateCar(id, carDTO); +// } return "redirect:/car"; } @PostMapping(value = {"/{id}"}) - public String editCarName(@PathVariable Long id, - @RequestParam("carName") String name){ - carService.findCar(id).setCarName(name); - carService.updateCar(id, new CarDTO(carService.findCar(id))); - return "redirect:/car/"; - } - @PostMapping(value = {"/{id}/buyer"}) - public String editBuyerCar(@PathVariable Long id, - @RequestParam("buyer") Long buyerId, - @RequestParam(value = "delete", required = false) boolean del, - Model model) { - if (del) { - carService.deleteBuyer(id, buyerId); - } else { - carService.addBuyer(id, buyerId); - } - return "redirect:/car/edit/" + id + "?PW=W"; - } - @PostMapping(value = {"/{id}/store"}) - public String editStoreCar(@PathVariable Long id, - @RequestParam("store") Long storeId, - @RequestParam(value = "delete", required = false) boolean del, - Model model) { - if (del) { - carService.deleteStore(id, storeId); - } else { - carService.addStore(id, storeId); + public String editCar(@PathVariable Long id, + @RequestParam("PW") String PW, + @RequestParam("wpName") String name, + @RequestParam(value="idPW", required = false) Long idPW, + @RequestParam(value = "delete", required = false) boolean del, + Model model) { + if(PW.equals("N")){ + carService.findCar(id).setCarName(name); + carService.updateCar(id, new CarDTO(carService.findCar(id))); } - return "redirect:/car/edit/" + id + "?PW=P"; + if (PW.equals("W")){ + if (del == true) { + carService.deleteBuyer(id, idPW); + } else { + carService.addBuyer(id, idPW); + } + } + else if(PW.equals("P")){ + if (del == true) { + carService.deleteStore(id, idPW); + } else { + carService.addStore(id, idPW); + } + } + return "redirect:/car/edit/" + id; } @PostMapping("/delete/{id}") public String deleteCar(@PathVariable Long id) { diff --git a/src/main/java/com/example/maxim/lab3/controller/StoreController.java b/src/main/java/com/example/maxim/lab3/controller/StoreController.java index f2d0bb6..9ebd719 100644 --- a/src/main/java/com/example/maxim/lab3/controller/StoreController.java +++ b/src/main/java/com/example/maxim/lab3/controller/StoreController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; @RestController -@RequestMapping(WebConfiguration.REST_API + "/store") +@RequestMapping("WebConfiguration.REST_API + /store") public class StoreController { private final StoreService storeService; public StoreController(StoreService storeService){ @@ -40,16 +40,10 @@ public class StoreController { } @GetMapping("/buyer/{id}") public List findBuyersOnCar(@PathVariable Long id){ - return storeService.findAllBuyersProducedStore(id) - .stream() - .map(BuyerDTO::new) - .toList(); + return storeService.findAllBuyersProducedStore(id).stream().map(BuyerDTO::new).toList(); } @GetMapping public List findAllStore() { - return storeService.findAllStores() - .stream() - .map(StoreDTO::new) - .toList(); + return storeService.findAllStores().stream().map(StoreDTO::new).toList(); } } diff --git a/src/main/java/com/example/maxim/lab3/controller/StoreDTO.java b/src/main/java/com/example/maxim/lab3/controller/StoreDTO.java index a438535..92f10cc 100644 --- a/src/main/java/com/example/maxim/lab3/controller/StoreDTO.java +++ b/src/main/java/com/example/maxim/lab3/controller/StoreDTO.java @@ -9,7 +9,7 @@ import java.util.List; public class StoreDTO { private long id; - @NotBlank(message = "StoreName can't be null or empty") + @NotBlank(message = "storeName can't be null or empty") private String storeName; private List carDTOList; public StoreDTO(Store store){ @@ -18,7 +18,7 @@ public class StoreDTO { this.carDTOList = store.getCar() == null ? null : store.getCar() .stream() .filter(x -> x.getStores().contains(store.getId())) - .map(y -> new CarDTO()) + .map(y -> new CarDTO(y)) .toList(); } public StoreDTO() { @@ -33,7 +33,9 @@ public class StoreDTO { public void setStoreName(String storeName){ this.storeName = storeName; } + public List getCarDTOList(){ return carDTOList; } } + diff --git a/src/main/java/com/example/maxim/lab3/controller/StoreMVCController.java b/src/main/java/com/example/maxim/lab3/controller/StoreMVCController.java index 274b26c..6511dec 100644 --- a/src/main/java/com/example/maxim/lab3/controller/StoreMVCController.java +++ b/src/main/java/com/example/maxim/lab3/controller/StoreMVCController.java @@ -23,7 +23,7 @@ public class StoreMVCController { return "store"; } @GetMapping("/info/{id}") - public String findBuyersOnCar(@PathVariable(required = false) Long id, Model model){ + public String findBuyersOnWorkplace(@PathVariable(required = false) Long id, Model model){ model.addAttribute("cathegory", "Кто производит " + storeService.findStore(id).getStoreName()); model.addAttribute("buyers", storeService.findAllBuyersProducedStore(id) .stream() @@ -34,7 +34,7 @@ public class StoreMVCController { } @GetMapping(value = {"/edit", "/edit/{id}"}) public String editStore(@PathVariable(required = false) Long id, - Model model) { + Model model) { if (id == null || id <= 0) { model.addAttribute("StoreDTO", new StoreDTO()); } else { @@ -43,11 +43,11 @@ public class StoreMVCController { } return "store-edit"; } - @PostMapping(value = {"/", "/{id}"}) + @PostMapping(value = {"", "/{id}"}) public String saveStore(@PathVariable(required = false) Long id, - @ModelAttribute @Valid StoreDTO storeDTO, - BindingResult bindingResult, - Model model) { + @ModelAttribute @Valid StoreDTO storeDTO, + BindingResult bindingResult, + Model model) { if (bindingResult.hasErrors()) { model.addAttribute("errors", bindingResult.getAllErrors()); return "store-edit"; @@ -65,3 +65,4 @@ public class StoreMVCController { return "redirect:/store"; } } + diff --git a/src/main/resources/templates/car-set.html b/src/main/resources/templates/car-set.html new file mode 100644 index 0000000..63d77d2 --- /dev/null +++ b/src/main/resources/templates/car-set.html @@ -0,0 +1,132 @@ + + + + + +
+
+
+
+ + + +
+ +
+ +
+
+
+
+
+ + +
+ + +
+
+ +
+
+ + + + + + + + + + + + + + + + + +
idИмяФамилия
+
+ + + +
+
+ +
+
+
+
+
+ + +
+ + +
+
+ + +
+
+ + + + + + + + + + + + + + + + +
idНазваниеЦена
+
+ + + +
+
+ +
+
+
+
+ +
+ + \ No newline at end of file