package info.bukova.isspst.services;

import info.bukova.isspst.Module;
import info.bukova.isspst.filters.Filter;
import info.bukova.isspst.reporting.Report;

import java.util.List;

public interface Service<T> {

	public T create();
	public void add(T entity);
	public void update(T entity);
	public void delete(T entity);
	public void validate(T entity) throws ValidationException;
	public void loadLazyData(T entity);
	public void loadLazyData(String group, T entity);
	public List<T> getAll();
	public List<T> execQuery(String query);
	public T selectSingle(String query);
	public T getById(int id);
	public List<T> filterList(List<T> sourceList, Filter<T> filter);
	public Module getModule();
	public List<Report> getReports();
	public boolean canPrintRecord(T entity);
	public List<Class<?>> getEntityClasses();
	
}
