From 1897494d70a354b5706fbe15bc74718b8282a498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Slov=C3=ADk?= <xslovik@fi.muni.cz> Date: Fri, 7 Apr 2023 21:08:45 +0200 Subject: [PATCH] Adding Flight and Steward facades --- .../core/facade/flight/FlightFacade.java | 24 ++++++ .../core/facade/flight/FlightFacadeImpl.java | 53 ++++++++++++ .../core/facade/steward/StewardFacade.java | 26 ++++++ .../facade/steward/StewardFacadeImpl.java | 85 +++++++++++++++++++ 4 files changed, 188 insertions(+) create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacade.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacadeImpl.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacade.java create mode 100644 core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacadeImpl.java diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacade.java new file mode 100644 index 0000000..8e79380 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacade.java @@ -0,0 +1,24 @@ +package cz.muni.fi.pa165.core.facade.flight; + +import cz.muni.fi.pa165.core.model.FlightDto; +import cz.muni.fi.pa165.core.model.NewFlightDtoRequest; + +import java.util.List; +import java.util.Optional; + +/** + * @param <K> Key + * @author martinslovik + */ +public interface FlightFacade<K> { + + FlightDto save(NewFlightDtoRequest newFlightDtoRequest); + + Optional<FlightDto> findById(K id); + + List<FlightDto> findAll(); + + void deleteById(K id); + + void deleteAll(); +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacadeImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacadeImpl.java new file mode 100644 index 0000000..4bff4f3 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacadeImpl.java @@ -0,0 +1,53 @@ +package cz.muni.fi.pa165.core.facade.flight; + +import cz.muni.fi.pa165.core.data.domain.Flight; +import cz.muni.fi.pa165.core.model.FlightDto; +import cz.muni.fi.pa165.core.model.NewFlightDtoRequest; +import cz.muni.fi.pa165.core.service.flight.FlightService; +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class FlightFacadeImpl implements FlightFacade<Long> { + + private final FlightService flightService; + private final ModelMapper modelMapper; + + @Autowired + public FlightFacadeImpl(FlightService flightService, ModelMapper modelMapper) { + this.flightService = flightService; + this.modelMapper = modelMapper; + } + + @Override + public FlightDto save(NewFlightDtoRequest newFlightDtoRequest) { + var entityToSave = modelMapper.map(newFlightDtoRequest, Flight.class); + var savedEntity = flightService.save(entityToSave); + return modelMapper.map(savedEntity, FlightDto.class); + } + + @Override + public Optional<FlightDto> findById(Long id) { + var foundEntity = flightService.findById(id); + return foundEntity.map(e -> modelMapper.map(e, FlightDto.class)); + } + + @Override + public List<FlightDto> findAll() { + return null; + } + + @Override + public void deleteById(Long id) { + + } + + @Override + public void deleteAll() { + + } +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacade.java new file mode 100644 index 0000000..f76532b --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacade.java @@ -0,0 +1,26 @@ +package cz.muni.fi.pa165.core.facade.steward; + +import cz.muni.fi.pa165.core.model.NewStewardDtoRequest; +import cz.muni.fi.pa165.core.model.StewardDto; + +import java.util.List; +import java.util.Optional; + +/** + * @param <K> Key + * @author martinslovik + */ +public interface StewardFacade<K> { + + StewardDto save(NewStewardDtoRequest newStewardDtoRequest); + + Optional<StewardDto> findById(K id); + + List<StewardDto> findAll(); + + void deleteById(K id); + + void deleteAll(); + + StewardDto assignStewardFlight(Long stewardId, Long flightId); +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacadeImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacadeImpl.java new file mode 100644 index 0000000..63ba97c --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacadeImpl.java @@ -0,0 +1,85 @@ +package cz.muni.fi.pa165.core.facade.steward; + +import cz.muni.fi.pa165.core.data.domain.FlightSteward; +import cz.muni.fi.pa165.core.data.domain.Steward; +import cz.muni.fi.pa165.core.exceptions.ResourceNotFoundException; +import cz.muni.fi.pa165.core.model.NewStewardDtoRequest; +import cz.muni.fi.pa165.core.model.StewardDto; +import cz.muni.fi.pa165.core.service.flight.FlightService; +import cz.muni.fi.pa165.core.service.steward.StewardService; +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class StewardFacadeImpl implements StewardFacade<Long> { + + private final StewardService stewardService; + private final FlightService flightService; + private final ModelMapper modelMapper; + + @Autowired + public StewardFacadeImpl(StewardService stewardService, FlightService flightService, ModelMapper modelMapper) { + this.stewardService = stewardService; + this.flightService = flightService; + this.modelMapper = modelMapper; + } + + @Override + public StewardDto save(NewStewardDtoRequest newStewardDtoRequest) { + var entityToSave = modelMapper.map(newStewardDtoRequest, Steward.class); + var savedEntity = stewardService.save(entityToSave); + return modelMapper.map(savedEntity, StewardDto.class); + } + + @Override + public Optional<StewardDto> findById(Long id) { + return Optional.empty(); + } + + @Override + public List<StewardDto> findAll() { + return null; + } + + @Override + public void deleteById(Long id) { + + } + + @Override + public void deleteAll() { + + } + + @Override + public StewardDto assignStewardFlight(Long stewardId, Long flightId) { + var stewardEntityOpt = stewardService.findById(stewardId); + var flightEntityOpt = flightService.findById(flightId); + + if (stewardEntityOpt.isEmpty() || flightEntityOpt.isEmpty()) { + throw new ResourceNotFoundException("Not Found."); + } + + var stewardEntity = stewardEntityOpt.get(); + var flightEntity = flightEntityOpt.get(); + + var flightSteward = new FlightSteward(); + flightSteward.setStewardId(stewardId); + flightSteward.setSteward(stewardEntity); + flightSteward.setFlightId(flightId); + flightSteward.setFlight(flightEntity); + + flightEntity.setFlightSteward(flightSteward); + flightService.save(flightEntity); + + stewardEntity.setFlightSteward(flightSteward); + stewardService.save(stewardEntity); + + //TODO create DTO without nested members + return null; + } +} -- GitLab