From 8ecf9e9cab87e6d6c14dbeb07f9e80e707f78fe2 Mon Sep 17 00:00:00 2001 From: Programmist73 Date: Sun, 9 Apr 2023 09:15:24 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2?= =?UTF-8?q?-=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=BB=D0=B5=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B8=20DOT.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DTO/ClientDTO.java | 25 ++++++++ .../premium_store/controller/DTO/TankDTO.java | 24 ++++++++ .../controller/ClientController.java | 53 +++++++++++++++++ .../controller/LevelController.java | 49 ++++++++++++++++ .../controller/NationController.java | 50 ++++++++++++++++ .../controller/controller/TankController.java | 57 +++++++++++++++++++ .../premium_store/service/NationService.java | 2 +- 7 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 spring_online_calculator/src/main/java/premium_store/controller/DTO/ClientDTO.java create mode 100644 spring_online_calculator/src/main/java/premium_store/controller/DTO/TankDTO.java create mode 100644 spring_online_calculator/src/main/java/premium_store/controller/controller/ClientController.java create mode 100644 spring_online_calculator/src/main/java/premium_store/controller/controller/LevelController.java create mode 100644 spring_online_calculator/src/main/java/premium_store/controller/controller/NationController.java create mode 100644 spring_online_calculator/src/main/java/premium_store/controller/controller/TankController.java diff --git a/spring_online_calculator/src/main/java/premium_store/controller/DTO/ClientDTO.java b/spring_online_calculator/src/main/java/premium_store/controller/DTO/ClientDTO.java new file mode 100644 index 0000000..a8dc010 --- /dev/null +++ b/spring_online_calculator/src/main/java/premium_store/controller/DTO/ClientDTO.java @@ -0,0 +1,25 @@ +package premium_store.controller.DTO; + +import premium_store.model.Client; +import premium_store.model.Tank; + +import java.util.List; + +//класс, который соединяет танки клиента в одну строчку (нам так захотелось) +public class ClientDTO { + private final long id; + private final List tanks; + + public ClientDTO(Client client){ + this.id = client.getId(); + this.tanks = client.getTanks(); + } + + public long getId(){ + return id; + } + + public List getTanks(){ + return tanks; + } +} diff --git a/spring_online_calculator/src/main/java/premium_store/controller/DTO/TankDTO.java b/spring_online_calculator/src/main/java/premium_store/controller/DTO/TankDTO.java new file mode 100644 index 0000000..84b6e25 --- /dev/null +++ b/spring_online_calculator/src/main/java/premium_store/controller/DTO/TankDTO.java @@ -0,0 +1,24 @@ +package premium_store.controller.DTO; + +import premium_store.model.Client; +import premium_store.model.Tank; + +import java.util.List; + +public class TankDTO { + private final long id; + private final List clients; + + public TankDTO(Tank tank){ + this.id = tank.getId(); + this.clients = tank.getClients(); + } + + public long getId(){ + return id; + } + + public List getClients(){ + return clients; + } +} diff --git a/spring_online_calculator/src/main/java/premium_store/controller/controller/ClientController.java b/spring_online_calculator/src/main/java/premium_store/controller/controller/ClientController.java new file mode 100644 index 0000000..afb46d8 --- /dev/null +++ b/spring_online_calculator/src/main/java/premium_store/controller/controller/ClientController.java @@ -0,0 +1,53 @@ +package premium_store.controller.controller; + +import org.springframework.web.bind.annotation.*; +import premium_store.controller.DTO.ClientDTO; +import premium_store.model.Tank; +import premium_store.service.ClientService; + +import java.util.List; + +@RestController +@RequestMapping("/client") +public class ClientController { + private final ClientService clientService; + + public ClientController(ClientService clientService){ + this.clientService = clientService; + } + + //аннотация PathVariable связывает значения id из URL и Long id + @GetMapping("/{id}") + public ClientDTO getClient(@PathVariable Long id) { + return new ClientDTO(clientService.findClient(id)); + } + + //с помощью Java Stream преобразуем набор пришедших данных в объекты StudentDto + @GetMapping("/") + public List getClients() { + return clientService.findAllClients().stream() + .map(ClientDTO::new) + .toList(); + } + + @PostMapping("/") + public ClientDTO createClient(@RequestParam("nickName") String nickName, + @RequestParam("email") String email, + @RequestParam("balance") Integer balance) { + return new ClientDTO(clientService.addClient(nickName, email, balance)); + } + + @PutMapping("/{id}") + public ClientDTO updateClient(@PathVariable Long id, + @RequestParam("nickName") String nickName, + @RequestParam("email") String email, + @RequestParam("balance") Integer balance, + @RequestParam("tanks") List tanks) { + return new ClientDTO(clientService.updateClient(id, nickName, email, balance, tanks)); + } + + @DeleteMapping("/{id}") + public ClientDTO deleteClient(@PathVariable Long id) { + return new ClientDTO(clientService.deleteClient(id)); + } +} diff --git a/spring_online_calculator/src/main/java/premium_store/controller/controller/LevelController.java b/spring_online_calculator/src/main/java/premium_store/controller/controller/LevelController.java new file mode 100644 index 0000000..f866017 --- /dev/null +++ b/spring_online_calculator/src/main/java/premium_store/controller/controller/LevelController.java @@ -0,0 +1,49 @@ +package premium_store.controller.controller; + +import org.springframework.web.bind.annotation.*; +import premium_store.model.Level; +import premium_store.service.LevelService; + +import java.util.List; + +//привязываем наш контроллер к придуманному корневому URL благодаря аннотациям +//здесь происходит внедрение зависимости нашего сервиса +//так же здесь прописываем вызовы методов CRUD в привязке к URL +@RestController +@RequestMapping("/level") +public class LevelController { + private final LevelService levelService; + + public LevelController(LevelService levelService){ + this.levelService = levelService; + } + + //аннотация PathVariable связывает значения id из URL и Long id + @GetMapping("/{id}") + public Level getLevel(@PathVariable Long id) { + return levelService.findLevel(id); + } + + //с помощью Java Stream преобразуем набор пришедших данных в объекты StudentDto + @GetMapping("/") + public List getLevels() { + return levelService.findAllLevels().stream() + .toList(); + } + + @PostMapping("/") + public Level createLevel(@RequestParam("Level") int level) { + return levelService.addLevel(level); + } + + @PutMapping("/{id}") + public Level updateLevel(@PathVariable Long id, + @RequestParam("Level") int level) { + return levelService.updateLevel(id, level); + } + + @DeleteMapping("/{id}") + public Level deleteLevel(@PathVariable Long id) { + return levelService.deleteLevel(id); + } +} diff --git a/spring_online_calculator/src/main/java/premium_store/controller/controller/NationController.java b/spring_online_calculator/src/main/java/premium_store/controller/controller/NationController.java new file mode 100644 index 0000000..2cc1446 --- /dev/null +++ b/spring_online_calculator/src/main/java/premium_store/controller/controller/NationController.java @@ -0,0 +1,50 @@ +package premium_store.controller.controller; + +import org.springframework.web.bind.annotation.*; +import premium_store.model.Nation; +import premium_store.service.NationService; + +import java.util.List; + +//привязываем наш контроллер к придуманному корневому URL благодаря аннотациям +//здесь происходит внедрение зависимости нашего сервиса +//так же здесь прописываем вызовы методов CRUD в привязке к URL +@RestController +@RequestMapping("/nation") +public class NationController { + private final NationService nationService; + + public NationController(NationService nationService){ + this.nationService = nationService; + } + + //аннотация PathVariable связывает значения id из URL и Long id + @GetMapping("/{id}") + public Nation getNation(@PathVariable Long id) { + return nationService.findNation(id); + } + + //с помощью Java Stream преобразуем набор пришедших данных в объекты StudentDto + @GetMapping("/") + public List getNations() { + return nationService.findAllNations().stream() + .toList(); + } + + @PostMapping("/") + public Nation createNation(@RequestParam("nation") String nation) { + return nationService.addNation(nation); + } + + @PutMapping("/{id}") + public Nation updateNation(@PathVariable Long id, + @RequestParam("nation") String nation) { + return nationService.updateNation(id, nation); + } + + @DeleteMapping("/{id}") + public Nation deleteNation(@PathVariable Long id) { + return nationService.deleteNation(id); + } +} + diff --git a/spring_online_calculator/src/main/java/premium_store/controller/controller/TankController.java b/spring_online_calculator/src/main/java/premium_store/controller/controller/TankController.java new file mode 100644 index 0000000..85c17dd --- /dev/null +++ b/spring_online_calculator/src/main/java/premium_store/controller/controller/TankController.java @@ -0,0 +1,57 @@ +package premium_store.controller.controller; + +import org.springframework.web.bind.annotation.*; +import premium_store.controller.DTO.TankDTO; +import premium_store.model.Client; +import premium_store.model.Level; +import premium_store.model.Nation; +import premium_store.service.TankService; + +import java.util.List; + +@RestController +@RequestMapping("/tank") +public class TankController { + private final TankService tankService; + + public TankController(TankService tankService){ + this.tankService = tankService; + } + + //аннотация PathVariable связывает значения id из URL и Long id + @GetMapping("/{id}") + public TankDTO getTank(@PathVariable Long id) { + return new TankDTO(tankService.findTank(id)); + } + + //с помощью Java Stream преобразуем набор пришедших данных в объекты TankDTO + @GetMapping("/") + public List getTanks() { + return tankService.findAllTanks().stream() + .map(TankDTO::new) + .toList(); + } + + @PostMapping("/") + public TankDTO createTank(@RequestParam("firstName") String name, + @RequestParam("nation") Nation nation, + @RequestParam("level") Level level, + @RequestParam("cost") int cost) { + return new TankDTO(tankService.addTank(name, nation, level, cost)); + } + + @PutMapping("/{id}") + public TankDTO updateTank(@PathVariable Long id, + @RequestParam("firstName") String name, + @RequestParam("nation") Nation nation, + @RequestParam("level") Level level, + @RequestParam("cost") int cost, + @RequestParam("clients")List clients) { + return new TankDTO(tankService.updateTank(id, name, nation, level, cost, clients)); + } + + @DeleteMapping("/{id}") + public TankDTO deleteTank(@PathVariable Long id) { + return new TankDTO(tankService.deleteTank(id)); + } +} diff --git a/spring_online_calculator/src/main/java/premium_store/service/NationService.java b/spring_online_calculator/src/main/java/premium_store/service/NationService.java index aa5a74d..d6d3fa5 100644 --- a/spring_online_calculator/src/main/java/premium_store/service/NationService.java +++ b/spring_online_calculator/src/main/java/premium_store/service/NationService.java @@ -52,7 +52,7 @@ public class NationService { } @Transactional - public Nation deleteNAtion(Long id) { + public Nation deleteNation(Long id) { final Nation currentNation = findNation(id); nationRepository.delete(currentNation);