package au.com.vaadinutils.crud.adaptor;
import java.util.List;
import javax.persistence.metamodel.SingularAttribute;
import com.vaadin.addon.jpacontainer.JPAContainer;
import au.com.vaadinutils.crud.CrudAction;
import au.com.vaadinutils.crud.CrudEntity;
import au.com.vaadinutils.crud.HeadingPropertySet;
/**
* a common crudAdpator interface, implemented by both BaseCrudAdaptor and
* ChildCrudAdaptor.
*
* This common interface aids in allowing a single class to be a parent crud or
* a child crud
*
* @author rsutton
*
* @param <P>
* @param <E>
*/
public interface CrudAdaptor<P, E extends CrudEntity>
{
void init(Class<E> class1, JPAContainer<E> container, HeadingPropertySet headings);
void setSplitPosition(int normalSplitSize);
void disallowDelete(boolean b);
E getCurrent();
JPAContainer<E> getContainer();
E preNew(E previousEntity) throws InstantiationException, IllegalAccessException;
void disallowNew(boolean b);
void setLocked(boolean locked);
List<CrudAction<E>> getDefaultCrudActions();
void enableDragAndDropOrdering(final SingularAttribute<E, Long> ordinalField);
boolean isNew();
public boolean isDirty();
}