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

Adding generic BaseFacade

parent 978ec13a
No related branches found
No related tags found
No related merge requests found
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();
}
}
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