Добавление классов-контроллеров и DOT.

This commit is contained in:
Programmist73 2023-04-09 09:15:24 +04:00
parent d0f9fb2bd0
commit 8ecf9e9cab
7 changed files with 259 additions and 1 deletions

View File

@ -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<Tank> tanks;
public ClientDTO(Client client){
this.id = client.getId();
this.tanks = client.getTanks();
}
public long getId(){
return id;
}
public List<Tank> getTanks(){
return tanks;
}
}

View File

@ -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<Client> clients;
public TankDTO(Tank tank){
this.id = tank.getId();
this.clients = tank.getClients();
}
public long getId(){
return id;
}
public List<Client> getClients(){
return clients;
}
}

View File

@ -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<ClientDTO> 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<Tank> 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));
}
}

View File

@ -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<Level> 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);
}
}

View File

@ -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<Nation> 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);
}
}

View File

@ -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<TankDTO> 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<Client> 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));
}
}

View File

@ -52,7 +52,7 @@ public class NationService {
} }
@Transactional @Transactional
public Nation deleteNAtion(Long id) { public Nation deleteNation(Long id) {
final Nation currentNation = findNation(id); final Nation currentNation = findNation(id);
nationRepository.delete(currentNation); nationRepository.delete(currentNation);