package devopsdistilled.operp.server.data.service.impl;

import java.io.Serializable;
import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;

import devopsdistilled.operp.server.data.service.EntityService;

public abstract class AbstractEntityService<T, ID extends Serializable>
		implements EntityService<T, ID> {

	private static final long serialVersionUID = 4892118695516828793L;

	protected abstract JpaRepository<T, ID> getRepo();

	@Override
	public List<T> findAll() {
		return getRepo().findAll();
	}

	@Override
	public List<T> findAll(Sort sort) {
		return getRepo().findAll(sort);
	}

	@Override
	public <S extends T> List<S> save(Iterable<S> entities) {
		return getRepo().save(entities);
	}

	@Override
	public void flush() {
		getRepo().flush();
	}

	@Override
	public T saveAndFlush(T entity) {
		return getRepo().saveAndFlush(entity);
	}

	@Override
	public void deleteInBatch(Iterable<T> entities) {
		getRepo().deleteInBatch(entities);
	}

	@Override
	public void deleteAllInBatch() {
		getRepo().deleteAllInBatch();
	}

	@Override
	public Page<T> findAll(Pageable pageable) {
		return getRepo().findAll(pageable);
	}

	@Override
	public <S extends T> S save(S entity) {
		return getRepo().save(entity);
	}

	@Override
	public T findOne(ID id) {
		return getRepo().findOne(id);
	}

	@Override
	public boolean exists(ID id) {
		return getRepo().exists(id);
	}

	@Override
	public long count() {
		return getRepo().count();
	}

	@Override
	public void delete(ID id) {
		getRepo().delete(id);
	}

	@Override
	public void delete(T entity) {
		getRepo().delete(entity);
	}

	@Override
	public void delete(Iterable<? extends T> entities) {
		getRepo().delete(entities);
	}

	@Override
	public void deleteAll() {
		getRepo().deleteAll();
	}

	@Override
	public Iterable<T> findAll(Iterable<ID> ids) {
		return getRepo().findAll(ids);
	}
}

@@ -305,16 +305,72 @@
 itory;%0A%0A
+import devopsdistilled.operp.server.data.entity.Entiti;%0A
 import d
@@ -466,25 +466,40 @@
 tityService%3C
-T
+E extends Entiti
 , ID extends
@@ -511,16 +511,49 @@
 alizable
+, ER extends JpaRepository%3CE, ID%3E
 %3E%0A%09%09impl
@@ -573,17 +573,17 @@
 Service%3C
-T
+E
 , ID%3E %7B%0A
@@ -676,28 +676,10 @@
 act 
-JpaRepository%3CT, ID%3E
+ER
  get
@@ -703,33 +703,33 @@
 de%0A%09public List%3C
-T
+E
 %3E findAll() %7B%0A%09%09
@@ -784,17 +784,17 @@
 ic List%3C
-T
+E
 %3E findAl
@@ -876,17 +876,17 @@
 extends 
-T
+E
 %3E List%3CS
@@ -1033,17 +1033,17 @@
 %09public 
-T
+E
  saveAnd
@@ -1048,17 +1048,17 @@
 ndFlush(
-T
+E
  entity)
@@ -1152,17 +1152,17 @@
 terable%3C
-T
+E
 %3E entiti
@@ -1313,17 +1313,17 @@
 ic Page%3C
-T
+E
 %3E findAl
@@ -1417,17 +1417,17 @@
 extends 
-T
+E
 %3E S save
@@ -1495,17 +1495,17 @@
 %09public 
-T
+E
  findOne
@@ -1793,17 +1793,17 @@
  delete(
-T
+E
  entity)
@@ -1887,17 +1887,17 @@
 extends 
-T
+E
 %3E entiti
@@ -2035,9 +2035,9 @@
 ble%3C
-T
+E
 %3E fi

Use generic Repository argument in getRepo()