package org.springframework.roo.addon.web.mvc.controller.addon.finder; import org.springframework.roo.addon.layers.repository.jpa.addon.RepositoryJpaMetadata; import org.springframework.roo.addon.web.mvc.controller.addon.responses.ControllerMVCResponseService; import org.springframework.roo.model.JavaPackage; import org.springframework.roo.model.JavaType; import java.util.List; /** * Provides operations for Web MVC finder functionality. * * @author Stefan Schmidt * @author Paula Navarro * @since 1.2.0 */ public interface WebFinderOperations { boolean isWebFinderInstallationPossible(); /** * Creates or updates the controller associated to specified entity with the specified * query methods. * * @param entity the JavaType representing the entity which associated repository * has the finders to publish in web layer. * @param queryMethods the List<String> of finder names to publish in web layer. * @param responseType the ControllerMVCResponseService to be used by generated * controller. * @param controllerPackage the JavaPackage where controller should be generated. * @param pathPrefix the String with the default controller path for finder requests. */ void createOrUpdateSearchControllerForEntity(JavaType entity, List<String> queryMethods, ControllerMVCResponseService responseType, JavaPackage controllerPackage, String pathPrefix); /** * Creates or updates all controllers with it's associated entities query methods. * * @param responseType the ControllerMVCResponseService to be used by generated * controllers. * @param controllerPackage the JavaPackage where controllers should be generated. * @param pathPrefix the String with the default controller paths for finder requests. */ void createOrUpdateSearchControllerForAllEntities(ControllerMVCResponseService responseType, JavaPackage controllerPackage, String pathPrefix); /** * Returns finders names which can be publish * * @param entity * @param responseType (optional, can be null) * @return */ List<String> getFindersWhichCanBePublish(JavaType entity, ControllerMVCResponseService responseType); /** * Returns finders names which can be publish * * @param repositoryMetadata * @param responseType * @return */ List<String> getFindersWhichCanBePublish(RepositoryJpaMetadata repositoryMetadata, ControllerMVCResponseService responseType); }