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 Details

    • AbstractResourceQueryController

      public AbstractResourceQueryController()
  • Method Details

    • initializeBasePath

      @PostConstruct protected void initializeBasePath()
    • getService

      protected abstract BaseResourceQueryService<ResponseDTO,ID,FD> getService()
    • getResponseId

      protected abstract ID getResponseId(ResponseDTO dto)
    • getControllerClass

      protected Class<? extends AbstractResourceQueryController<ResponseDTO,ID,FD>> getControllerClass()
    • isReadOnlyResource

      protected boolean isReadOnlyResource()
    • getIdFieldName

      protected String getIdFieldName()
    • getBasePath

      protected String getBasePath()
    • getResourceKey

      protected String getResourceKey()
    • getResourceKeyOrNull

      protected String getResourceKeyOrNull()
    • toEntityModel

      protected org.springframework.hateoas.EntityModel<ResponseDTO> toEntityModel(ResponseDTO dto)
    • toResourceModel

      protected RestApiResource<ResponseDTO> toResourceModel(ResponseDTO dto)
    • buildItemActionLinks

      protected List<org.springframework.hateoas.Link> buildItemActionLinks(ID id)
    • buildEntityActionLinks

      protected List<org.springframework.hateoas.Link> buildEntityActionLinks(ID id)
    • buildCollectionActionLinks

      protected List<org.springframework.hateoas.Link> buildCollectionActionLinks()
    • buildItemDiscoveryLinks

      protected List<org.springframework.hateoas.Link> buildItemDiscoveryLinks(ID id)
    • buildCollectionDiscoveryLinks

      protected List<org.springframework.hateoas.Link> 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

      @GetMapping("/options/by-ids") public org.springframework.http.ResponseEntity<List<OptionDTO<ID>>> getOptionsByIds(@RequestParam(name="ids",required=false) List<ID> ids)
    • getOptionSourceOptionsByIds

      @GetMapping("/option-sources/{sourceKey}/options/by-ids") public org.springframework.http.ResponseEntity<List<OptionDTO<Object>>> getOptionSourceOptionsByIds(@PathVariable String sourceKey, @RequestParam(name="ids",required=false) List<String> ids)
    • 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

      @GetMapping("/schemas") public org.springframework.http.ResponseEntity<Void> getSchema()
    • linkToSelf

      protected org.springframework.hateoas.Link linkToSelf(ID id)
    • 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

      protected org.springframework.hateoas.Link linkToItemSurfacesIfAvailable(ID id)
    • linkToCollectionActionsIfAvailable

      protected org.springframework.hateoas.Link linkToCollectionActionsIfAvailable()
    • linkToItemActionsIfAvailable

      protected org.springframework.hateoas.Link linkToItemActionsIfAvailable(ID id)
    • linkToCollectionCapabilitiesIfAvailable

      protected org.springframework.hateoas.Link linkToCollectionCapabilitiesIfAvailable()
    • linkToItemCapabilitiesIfAvailable

      protected org.springframework.hateoas.Link linkToItemCapabilitiesIfAvailable(ID id)
    • linkToDocs

      protected org.springframework.hateoas.Link linkToDocs()
    • linkToUiSchema

      protected org.springframework.hateoas.Link linkToUiSchema(String methodPath, String operation, String schemaType)
    • 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)