diff --git a/core/src/main/java/cz/muni/fi/pa165/core/service/common/BaseService.java b/core/src/main/java/cz/muni/fi/pa165/core/service/common/BaseService.java new file mode 100644 index 0000000000000000000000000000000000000000..d703fc049359b30c36c7e2e2b168de5adb9dfc13 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/service/common/BaseService.java @@ -0,0 +1,23 @@ +package cz.muni.fi.pa165.core.service.common; + +import java.util.List; +import java.util.Optional; + +/** + * BaseService for common CRUD operations + * @param <E> Entity + * @param <K> Key + * @author martinslovik + */ +public interface BaseService<E, K> { + + E save(E entity); + + Optional<E> findById(K id); + + List<E> findAll(); + + void deleteById(K id); + + void deleteAll(); +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/service/common/BaseServiceImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/service/common/BaseServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..22a0d3a3f1ff51b3b03d2426f6a6391289382d1f --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/service/common/BaseServiceImpl.java @@ -0,0 +1,45 @@ +package cz.muni.fi.pa165.core.service.common; + +import cz.muni.fi.pa165.core.data.domain.common.DomainEntity; +import cz.muni.fi.pa165.core.data.repository.common.BaseRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public abstract class BaseServiceImpl<E extends DomainEntity, K> implements BaseService<E, K> { + + private final BaseRepository<E, K> repository; + + @Autowired + protected BaseServiceImpl(BaseRepository<E, K> repository) { + this.repository = repository; + } + + @Override + public E save(E entity) { + return repository.save(entity); + } + + @Override + public Optional<E> findById(K id) { + return repository.findById(id); + } + + @Override + public List<E> findAll() { + return (List<E>) repository.findAll(); + } + + @Override + public void deleteById(K id) { + repository.deleteById(id); + } + + @Override + public void deleteAll() { + repository.deleteAll(); + } +}