Class AbstractResourceQueryController<ResponseDTO,ID,FD extends GenericFilterDTO>
java.lang.Object
org.praxisplatform.uischema.controller.base.AbstractResourceQueryController<ResponseDTO,ID,FD>
- Direct Known Subclasses:
AbstractReadOnlyResourceController,AbstractResourceController
public abstract class AbstractResourceQueryController<ResponseDTO,ID,FD extends GenericFilterDTO>
extends Object
Base canonica de leitura do novo core resource-oriented.
Esta classe concentra a superficie HTTP de query, options, option-sources, stats e schema
discovery. A partir da Fase 4/5, ela tambem publica discovery contextual em
`GET /surfaces`, `GET /{id}/surfaces`, `GET /actions` e `GET /{id}/actions` a partir dos
catalogos canonicos de surfaces/actions. Recursos mutantes devem subir para
AbstractResourceController; recursos somente leitura devem herdar diretamente desta base.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected List<org.springframework.hateoas.Link> protected List<org.springframework.hateoas.Link> protected List<org.springframework.hateoas.Link> protected List<org.springframework.hateoas.Link> protected List<org.springframework.hateoas.Link> org.springframework.http.ResponseEntity<RestApiResponse<DistributionStatsResponse>> distributionStats(DistributionStatsRequest<FD> request) org.springframework.http.ResponseEntity<RestApiResponse<org.springframework.data.domain.Page<org.springframework.hateoas.EntityModel<ResponseDTO>>>> filter(FD filterDTO, int page, int size, List<ID> includeIds, org.springframework.util.MultiValueMap<String, String> queryParams) org.springframework.http.ResponseEntity<RestApiResponse<CursorPage<org.springframework.hateoas.EntityModel<ResponseDTO>>>> filterByCursor(FD filterDTO, String after, String before, int size, org.springframework.util.MultiValueMap<String, String> queryParams) filterOptions(FD filterDTO, int page, int size, org.springframework.util.MultiValueMap<String, String> queryParams) filterOptionSourceOptions(String sourceKey, FD filterDTO, String search, List<String> includeIds, int page, int size, org.springframework.util.MultiValueMap<String, String> queryParams) org.springframework.http.ResponseEntity<RestApiResponse<List<org.springframework.hateoas.EntityModel<ResponseDTO>>>> getAll()protected Stringorg.springframework.http.ResponseEntity<RestApiResponse<ResponseDTO>> org.springframework.http.ResponseEntity<List<ResponseDTO>> org.springframework.http.ResponseEntity<ActionCatalogResponse> org.springframework.http.ResponseEntity<CapabilitySnapshot> protected Class<? extends AbstractResourceQueryController<ResponseDTO, ID, FD>> protected Stringorg.springframework.http.ResponseEntity<ActionCatalogResponse> getItemActions(ID id) org.springframework.http.ResponseEntity<CapabilitySnapshot> org.springframework.http.ResponseEntity<SurfaceCatalogResponse> getItemSurfaces(ID id) getOptionsByIds(List<ID> ids) getOptionSourceOptionsByIds(String sourceKey, List<String> ids) protected Stringprotected Stringprotected abstract IDgetResponseId(ResponseDTO dto) org.springframework.http.ResponseEntity<Void> protected abstract BaseResourceQueryService<ResponseDTO, ID, FD> org.springframework.http.ResponseEntity<RestApiResponse<GroupByStatsResponse>> groupByStats(GroupByStatsRequest<FD> request) protected org.springframework.hateoas.LinkshateoasOrNull(org.springframework.hateoas.Links links) protected voidprotected booleanprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.Linkprotected org.springframework.hateoas.LinklinkToSelf(ID id) protected org.springframework.hateoas.LinklinkToUiSchema(String methodPath, String operation, String schemaType) org.springframework.http.ResponseEntity<LocateResponse> locate(FD filterDTO, ID id, int size, org.springframework.util.MultiValueMap<String, String> queryParams) protected <T> org.springframework.http.ResponseEntity<RestApiResponse<T>> successEnvelope(org.springframework.http.ResponseEntity.BodyBuilder builder, Object data, org.springframework.hateoas.Links links) org.springframework.http.ResponseEntity<RestApiResponse<TimeSeriesStatsResponse>> timeSeriesStats(TimeSeriesStatsRequest<FD> request) protected org.springframework.hateoas.EntityModel<ResponseDTO> toEntityModel(ResponseDTO dto) protected RestApiResource<ResponseDTO> protected <T> org.springframework.http.ResponseEntity<T> withVersion(org.springframework.http.ResponseEntity.BodyBuilder builder, T body)
-
Constructor Details
-
AbstractResourceQueryController
public AbstractResourceQueryController()
-
-
Method Details
-
initializeBasePath
@PostConstruct protected void initializeBasePath() -
getService
-
getResponseId
-
getControllerClass
-
isReadOnlyResource
protected boolean isReadOnlyResource() -
getIdFieldName
-
getBasePath
-
getResourceKey
-
getResourceKeyOrNull
-
toEntityModel
-
toResourceModel
-
buildItemActionLinks
-
buildEntityActionLinks
-
buildCollectionActionLinks
-
buildItemDiscoveryLinks
-
buildCollectionDiscoveryLinks
-
filter
@PostMapping("/filter") public org.springframework.http.ResponseEntity<RestApiResponse<org.springframework.data.domain.Page<org.springframework.hateoas.EntityModel<ResponseDTO>>>> filter(@RequestBody FD filterDTO, @RequestParam(name="page",defaultValue="0") int page, @RequestParam(name="size",defaultValue="20") int size, @RequestParam(name="includeIds",required=false) List<ID> includeIds, @RequestParam org.springframework.util.MultiValueMap<String, String> queryParams) -
filterByCursor
@PostMapping("/filter/cursor") public org.springframework.http.ResponseEntity<RestApiResponse<CursorPage<org.springframework.hateoas.EntityModel<ResponseDTO>>>> filterByCursor(@RequestBody FD filterDTO, @RequestParam(name="after",required=false) String after, @RequestParam(name="before",required=false) String before, @RequestParam(name="size",defaultValue="20") int size, @RequestParam org.springframework.util.MultiValueMap<String, String> queryParams) -
locate
@PostMapping("/locate") public org.springframework.http.ResponseEntity<LocateResponse> locate(@RequestBody FD filterDTO, @RequestParam("id") ID id, @RequestParam(name="size",defaultValue="20") int size, @RequestParam org.springframework.util.MultiValueMap<String, String> queryParams) -
groupByStats
@PostMapping("/stats/group-by") public org.springframework.http.ResponseEntity<RestApiResponse<GroupByStatsResponse>> groupByStats(@RequestBody GroupByStatsRequest<FD> request) -
timeSeriesStats
@PostMapping("/stats/timeseries") public org.springframework.http.ResponseEntity<RestApiResponse<TimeSeriesStatsResponse>> timeSeriesStats(@RequestBody TimeSeriesStatsRequest<FD> request) -
distributionStats
@PostMapping("/stats/distribution") public org.springframework.http.ResponseEntity<RestApiResponse<DistributionStatsResponse>> distributionStats(@RequestBody DistributionStatsRequest<FD> request) -
getAll
@GetMapping("/all") public org.springframework.http.ResponseEntity<RestApiResponse<List<org.springframework.hateoas.EntityModel<ResponseDTO>>>> getAll() -
getByIds
@GetMapping("/by-ids") public org.springframework.http.ResponseEntity<List<ResponseDTO>> getByIds(@RequestParam(name="ids",required=false) List<ID> ids) -
filterOptions
@PostMapping("/options/filter") public org.springframework.http.ResponseEntity<org.springframework.data.domain.Page<OptionDTO<ID>>> filterOptions(@RequestBody FD filterDTO, @RequestParam(name="page",defaultValue="0") int page, @RequestParam(name="size",defaultValue="20") int size, @RequestParam org.springframework.util.MultiValueMap<String, String> queryParams) -
filterOptionSourceOptions
@PostMapping("/option-sources/{sourceKey}/options/filter") public org.springframework.http.ResponseEntity<org.springframework.data.domain.Page<OptionDTO<Object>>> filterOptionSourceOptions(@PathVariable String sourceKey, @RequestBody FD filterDTO, @RequestParam(name="search",required=false) String search, @RequestParam(name="includeIds",required=false) List<String> includeIds, @RequestParam(name="page",defaultValue="0") int page, @RequestParam(name="size",defaultValue="20") int size, @RequestParam org.springframework.util.MultiValueMap<String, String> queryParams) -
getOptionsByIds
-
getOptionSourceOptionsByIds
-
getById
@GetMapping("/{id}") public org.springframework.http.ResponseEntity<RestApiResponse<ResponseDTO>> getById(@PathVariable ID id) -
getItemSurfaces
@GetMapping("/{id}/surfaces") public org.springframework.http.ResponseEntity<SurfaceCatalogResponse> getItemSurfaces(@PathVariable ID id) -
getItemActions
@GetMapping("/{id}/actions") public org.springframework.http.ResponseEntity<ActionCatalogResponse> getItemActions(@PathVariable ID id) -
getCollectionActions
@GetMapping("/actions") public org.springframework.http.ResponseEntity<ActionCatalogResponse> getCollectionActions() -
getCollectionCapabilities
@GetMapping("/capabilities") public org.springframework.http.ResponseEntity<CapabilitySnapshot> getCollectionCapabilities() -
getItemCapabilities
@GetMapping("/{id}/capabilities") public org.springframework.http.ResponseEntity<CapabilitySnapshot> getItemCapabilities(@PathVariable ID id) -
getSchema
-
linkToSelf
-
linkToAll
protected org.springframework.hateoas.Link linkToAll() -
linkToFilter
protected org.springframework.hateoas.Link linkToFilter() -
linkToFilterCursor
protected org.springframework.hateoas.Link linkToFilterCursor() -
linkToCollectionSurfacesIfAvailable
protected org.springframework.hateoas.Link linkToCollectionSurfacesIfAvailable() -
linkToItemSurfacesIfAvailable
-
linkToCollectionActionsIfAvailable
protected org.springframework.hateoas.Link linkToCollectionActionsIfAvailable() -
linkToItemActionsIfAvailable
-
linkToCollectionCapabilitiesIfAvailable
protected org.springframework.hateoas.Link linkToCollectionCapabilitiesIfAvailable() -
linkToItemCapabilitiesIfAvailable
-
linkToDocs
protected org.springframework.hateoas.Link linkToDocs() -
linkToUiSchema
-
withVersion
protected <T> org.springframework.http.ResponseEntity<T> withVersion(org.springframework.http.ResponseEntity.BodyBuilder builder, T body) -
hateoasOrNull
protected org.springframework.hateoas.Links hateoasOrNull(org.springframework.hateoas.Links links) -
successEnvelope
protected <T> org.springframework.http.ResponseEntity<RestApiResponse<T>> successEnvelope(org.springframework.http.ResponseEntity.BodyBuilder builder, Object data, org.springframework.hateoas.Links links)
-