package au.com.vaadinutils.crud.adaptor;
import java.util.List;
import com.vaadin.addon.jpacontainer.EntityItem;
import com.vaadin.addon.jpacontainer.JPAContainer;
import com.vaadin.data.Container.Filter;
import com.vaadin.ui.Component;
import au.com.vaadinutils.crud.CrudAction;
import au.com.vaadinutils.crud.CrudEntity;
import au.com.vaadinutils.crud.ValidatingFieldGroup;
/**
* classes wishing to be detached via an interface from the crud implementation
* need to implement this interface
*
* @author rsutton
*
* @param <E>
*/
public interface CrudInterface<E extends CrudEntity>
{
Component buildEditor(ValidatingFieldGroup<E> fieldGroup2);
Filter getContainerFilter(String filterString, boolean advancedSearchActive);
String getTitleText();
List<CrudAction<E>> getCrudActions();
/**
* if you don't need to modify it, just return newEntity
*
* @param newEntity
* @param previousEntity
* @return
*/
E preNew(E newEntity, E previousEntity);
void rowChanged(EntityItem<E> item);
void postNew(EntityItem<E> newEntity);
void interceptSaveValues(EntityItem<E> entityItem) throws Exception;
void resetFilters(JPAContainer<E> container);
EntityItem<E> createNewEntity(EntityItem<E> newEntity, E previousEntity) throws InstantiationException, IllegalAccessException;
}