Skip to content
Snippets Groups Projects
Commit 37c5f6d6 authored by Martin Slovík's avatar Martin Slovík
Browse files

Removing generic facade implementation

parent bc3dfc7a
No related branches found
No related tags found
No related merge requests found
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
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();
}
}
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();
}
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();
}
}
......@@ -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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment