package au.com.vaadinutils.crud.adaptor;
import java.util.List;
import javax.persistence.metamodel.SingularAttribute;
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.BaseCrudView;
import au.com.vaadinutils.crud.CrudAction;
import au.com.vaadinutils.crud.CrudEntity;
import au.com.vaadinutils.crud.HeadingPropertySet;
import au.com.vaadinutils.crud.ValidatingFieldGroup;
/**
* * this adaptor allows a class to work with a base crud without actually
* extending the basecrud.
*
* because this class implements CrudAdaptor, a class can behave both as a
* childCrud and parentCrud
*
* @author rsutton
*
* @param <P>
* @param <E>
*/
public class BaseCrudAdaptor<P, E extends CrudEntity> extends BaseCrudView<E> implements CrudAdaptor<P, E>
{
private static final long serialVersionUID = 1L;
private CrudInterface<E> client;
public BaseCrudAdaptor(CrudInterface<E> client)
{
this.client = client;
}
@Override
protected Component buildEditor(ValidatingFieldGroup<E> fieldGroup2)
{
return client.buildEditor(fieldGroup2);
}
@Override
protected Filter getContainerFilter(String filterString, boolean advancedSearchActive)
{
return client.getContainerFilter(filterString, advancedSearchActive);
}
@Override
public void enableDragAndDropOrdering(final SingularAttribute<E, Long> ordinalField)
{
super.enableDragAndDropOrdering(ordinalField);
}
@Override
public void disallowNew(boolean disallow)
{
super.disallowNew(disallow);
}
@Override
public void init(Class<E> entityClass, JPAContainer<E> container, HeadingPropertySet headings)
{
super.init(entityClass, container, headings);
}
@Override
public void setSplitPosition(float pos)
{
super.setSplitPosition(pos);
}
@Override
public void disallowDelete(boolean disallow)
{
super.disallowDelete(disallow);
}
@Override
public String getTitleText()
{
return client.getTitleText();
}
@Override
public List<CrudAction<E>> getCrudActions()
{
return client.getCrudActions();
}
@Override
public E getCurrent()
{
return super.getCurrent();
}
@Override
public void createNewEntity(E previousEntity) throws InstantiationException, IllegalAccessException
{
super.createNewEntity(previousEntity);
newEntity = client.createNewEntity(newEntity, previousEntity);
}
@Override
public E preNew(E previousEntity) throws InstantiationException, IllegalAccessException
{
return client.preNew(super.preNew(previousEntity), previousEntity);
}
@Override
public void rowChanged(EntityItem<E> item)
{
super.rowChanged(item);
client.rowChanged(item);
}
@Override
protected void postNew(EntityItem<E> newEntity)
{
super.postNew(newEntity);
client.postNew(newEntity);
}
@Override
protected void interceptSaveValues(EntityItem<E> entityItem) throws Exception
{
client.interceptSaveValues(entityItem);
}
@Override
protected void resetFilters()
{
super.resetFilters();
client.resetFilters(container);
}
@Override
public void setSplitPosition(int normalSplitSize)
{
super.setSplitPosition(normalSplitSize);
}
@Override
public List<CrudAction<E>> getDefaultCrudActions()
{
return super.getCrudActions();
}
}