package org.brixcms.plugin.jpa.web.admin; import java.io.Serializable; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.brixcms.plugin.jpa.Persistable; import org.brixcms.plugin.site.SimpleCallback; import org.brixcms.registry.ExtensionPoint; /** * Plugin that handles entity of certain type. * * @author dan.simko@gmail.com */ public interface EntityPlugin<T extends Persistable<ID>, ID extends Serializable> { public static ExtensionPoint<EntityPlugin<?, ?>> POINT = new ExtensionPoint<EntityPlugin<?, ?>>() { @Override public org.brixcms.registry.ExtensionPoint.Multiplicity getMultiplicity() { return Multiplicity.COLLECTION; } @Override public String getUuid() { return EntityPlugin.class.getName(); } }; /** * Returns the plugin Id. Each JpaEntityPlugin must have unique ID. * * @return plugin Id */ String getPluginId(); /** * Returns the entity class that this plugin can handle. * * @return entity class */ Class<T> getEntityClass(); /** * Returns model caption of Create link for this plugin. * * @return caption model */ IModel<String> newCreateCaptionModel(); /** * Returns an instance of panel that should create new instance of entity * this plugin can handle. * * @param id * panel component id * @param goBack * simple callback that should be invoked after entity creation * or on cancel * @return panel instance */ Panel newCreateEntityPanel(String id, SimpleCallback goBack); }