package eu.dnetlib.r2d2.neo4j;

import org.springframework.transaction.annotation.Transactional;

@Transactional
public interface BeanDao<B extends Neo4jBean> {
	
	@Transactional
	public void init();
	
	public B newBean();

	public void deleteBean(String beanId);

	public B getBean(String beanId);

	public String saveBean(B bean);

	public Iterable<B> search(String term);

	public Iterable<B> search(String term, String... fields);

	public Iterable<B> getAll();
	
	public SearchResults<B> search(int from, int size, String term);
	
	public SearchResults<B> search(int from, int size, String term, String... fields);
	
	public SearchResults<B> getAll(int from, int size);
}