From 37c5f6d6a1ea8900a707900b580ca49378d1eef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Slov=C3=ADk?= <xslovik@fi.muni.cz> Date: Wed, 5 Apr 2023 10:18:12 +0200 Subject: [PATCH] Removing generic facade implementation --- .../airplanetype/AirplaneTypeFacade.java | 19 +++++- .../airplanetype/AirplaneTypeFacadeImpl.java | 47 +++++++++++--- .../pa165/core/facade/common/BaseFacade.java | 27 -------- .../core/facade/common/BaseFacadeImpl.java | 65 ------------------- .../core/rest/AirplaneTypeController.java | 4 +- 5 files changed, 57 insertions(+), 105 deletions(-) delete mode 100644 core/src/main/java/cz/muni/fi/pa165/core/facade/common/BaseFacade.java delete mode 100644 core/src/main/java/cz/muni/fi/pa165/core/facade/common/BaseFacadeImpl.java diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/airplanetype/AirplaneTypeFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/airplanetype/AirplaneTypeFacade.java index 640f042..1b19ca6 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/facade/airplanetype/AirplaneTypeFacade.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/airplanetype/AirplaneTypeFacade.java @@ -1,9 +1,24 @@ package cz.muni.fi.pa165.core.facade.airplanetype; -import cz.muni.fi.pa165.core.facade.common.BaseFacade; import cz.muni.fi.pa165.core.model.AirplaneTypeDto; import cz.muni.fi.pa165.core.model.NewAirplaneTypeDtoRequest; -public interface AirplaneTypeFacade extends BaseFacade<NewAirplaneTypeDtoRequest, AirplaneTypeDto, Long> { +import java.util.List; +import java.util.Optional; +/** + * @param <K> Key + * @author martinslovik + */ +public interface AirplaneTypeFacade<K> { + + AirplaneTypeDto save(NewAirplaneTypeDtoRequest newAirplaneTypeDtoRequest); + + Optional<AirplaneTypeDto> findById(K id); + + List<AirplaneTypeDto> findAll(); + + void deleteById(K id); + + void deleteAll(); } \ No newline at end of file diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/airplanetype/AirplaneTypeFacadeImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/airplanetype/AirplaneTypeFacadeImpl.java index cba30da..8d57aef 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/facade/airplanetype/AirplaneTypeFacadeImpl.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/airplanetype/AirplaneTypeFacadeImpl.java @@ -1,7 +1,6 @@ package cz.muni.fi.pa165.core.facade.airplanetype; import cz.muni.fi.pa165.core.data.domain.AirplaneType; -import cz.muni.fi.pa165.core.facade.common.BaseFacadeImpl; import cz.muni.fi.pa165.core.model.AirplaneTypeDto; import cz.muni.fi.pa165.core.model.NewAirplaneTypeDtoRequest; import cz.muni.fi.pa165.core.service.airplanetype.AirplaneTypeService; @@ -9,19 +8,49 @@ 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 AirplaneTypeFacadeImpl extends BaseFacadeImpl<NewAirplaneTypeDtoRequest, AirplaneTypeDto, AirplaneType, Long> - implements AirplaneTypeFacade { +public class AirplaneTypeFacadeImpl implements AirplaneTypeFacade<Long> { - private final ModelMapper airplaneTypeMapper; private final AirplaneTypeService airplaneTypeService; + private final ModelMapper modelMapper; @Autowired - public AirplaneTypeFacadeImpl(AirplaneTypeService airplaneTypeService, ModelMapper airplaneTypeMapper) { - super(airplaneTypeService, airplaneTypeMapper); + public AirplaneTypeFacadeImpl(AirplaneTypeService airplaneTypeService, ModelMapper modelMapper) { this.airplaneTypeService = airplaneTypeService; - this.airplaneTypeMapper = airplaneTypeMapper; - super.setDtoClass(AirplaneTypeDto.class); - super.setEntityClass(AirplaneType.class); + this.modelMapper = modelMapper; + } + + @Override + public AirplaneTypeDto save(NewAirplaneTypeDtoRequest newAirplaneTypeDtoRequest) { + var entityToSave = modelMapper.map(newAirplaneTypeDtoRequest, AirplaneType.class); + var savedEntity = airplaneTypeService.save(entityToSave); + return modelMapper.map(savedEntity, AirplaneTypeDto.class); + } + + @Override + public Optional<AirplaneTypeDto> findById(Long id) { + var foundEntity = airplaneTypeService.findById(id); + return foundEntity.map(e -> modelMapper.map(e, AirplaneTypeDto.class)); + } + + @Override + public List<AirplaneTypeDto> findAll() { + var entities = airplaneTypeService.findAll(); + return entities.stream() + .map(entity -> modelMapper.map(entity, AirplaneTypeDto.class)) + .toList(); + } + + @Override + public void deleteById(Long id) { + airplaneTypeService.deleteById(id); + } + + @Override + public void deleteAll() { + airplaneTypeService.deleteAll(); } } diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/common/BaseFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/common/BaseFacade.java deleted file mode 100644 index 4ec4a63..0000000 --- a/core/src/main/java/cz/muni/fi/pa165/core/facade/common/BaseFacade.java +++ /dev/null @@ -1,27 +0,0 @@ -package cz.muni.fi.pa165.core.facade.common; - -import cz.muni.fi.pa165.core.model.DomainEntityDto; - -import java.util.List; -import java.util.Optional; - -/** - * BaseFacade for common CRUD operations - * - * @param <N> NewRequestDto - * @param <D> Dto - * @param <K> Entity - * @author martinslovik - */ -public interface BaseFacade<N, D extends DomainEntityDto, K> { - - D save(N newDtoRequest); - - Optional<D> findById(K id); - - List<D> findAll(); - - void deleteById(K id); - - void deleteAll(); -} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/common/BaseFacadeImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/common/BaseFacadeImpl.java deleted file mode 100644 index cd1f3ec..0000000 --- a/core/src/main/java/cz/muni/fi/pa165/core/facade/common/BaseFacadeImpl.java +++ /dev/null @@ -1,65 +0,0 @@ -package cz.muni.fi.pa165.core.facade.common; - -import cz.muni.fi.pa165.core.data.domain.common.DomainEntity; -import cz.muni.fi.pa165.core.model.DomainEntityDto; -import cz.muni.fi.pa165.core.service.common.BaseService; -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 abstract class BaseFacadeImpl<N, D extends DomainEntityDto, E extends DomainEntity, K> implements BaseFacade<N, D, K> { - - private final BaseService<E, K> service; - private Class<D> dtoClass; - private Class<E> entityClass; - private final ModelMapper modelMapper; - - @Autowired - protected BaseFacadeImpl(BaseService<E, K> service, ModelMapper modelMapper) { - this.service = service; - this.modelMapper = modelMapper; - } - - public void setDtoClass(Class<D> dtoClass) { - this.dtoClass = dtoClass; - } - - public void setEntityClass(Class<E> entityClass) { - this.entityClass = entityClass; - } - - @Override - public D save(N newDtoRequest) { - var entity = modelMapper.map(newDtoRequest, entityClass); - var savedEntity = service.save(entity); - return modelMapper.map(savedEntity, dtoClass); - } - - @Override - public Optional<D> findById(K id) { - var entityOptional = service.findById(id); - return entityOptional.map(e -> modelMapper.map(e, dtoClass)); - } - - @Override - public List<D> findAll() { - var entities = service.findAll(); - return entities.stream() - .map(entity -> modelMapper.map(entity, dtoClass)) - .toList(); - } - - @Override - public void deleteById(K id) { - service.deleteById(id); - } - - @Override - public void deleteAll() { - service.deleteAll(); - } -} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/rest/AirplaneTypeController.java b/core/src/main/java/cz/muni/fi/pa165/core/rest/AirplaneTypeController.java index 110a892..ab624b4 100644 --- a/core/src/main/java/cz/muni/fi/pa165/core/rest/AirplaneTypeController.java +++ b/core/src/main/java/cz/muni/fi/pa165/core/rest/AirplaneTypeController.java @@ -14,10 +14,10 @@ import java.util.List; @RestController public class AirplaneTypeController implements AirplaneTypeApiDelegate { - private final AirplaneTypeFacade airplaneTypeFacade; + private final AirplaneTypeFacade<Long> airplaneTypeFacade; @Autowired - public AirplaneTypeController(AirplaneTypeFacade airplaneTypeFacade) { + public AirplaneTypeController(AirplaneTypeFacade<Long> airplaneTypeFacade) { this.airplaneTypeFacade = airplaneTypeFacade; } -- GitLab