Class AbstractPagedFilterResolver

java.lang.Object
com.bluebell.greenhouse.planter.resolvers.AbstractPagedFilterResolver
Direct Known Subclasses:
AccountLedgerFilterResolver, ExchangeFilterResolver, JobFilterResolver, MarketPriceFilterResolver, PositionFilterResolver, StrategyFilterResolver, StrategyImplementationFilterResolver, SymbolFilterResolver, TransactionFilterResolver, UserFilterResolver

public abstract class AbstractPagedFilterResolver extends Object
Base resolver for paged filter endpoints that need standardized sort, enum, and date resolution.
Version:
3.0.5
Author:
Stephen Prizio
  • Constructor Details

    • AbstractPagedFilterResolver

      public AbstractPagedFilterResolver()
  • Method Details

    • resolveSort

      protected org.springframework.data.domain.Sort resolveSort(String sort, String... properties)
      Resolves a sort direction string to a Sort for the given properties.
      Parameters:
      sort - sort direction
      properties - sort properties
      Returns:
      Sort
    • resolveOptionalCodeEnum

      protected <E extends Enum<E> & GenericEnum<E>> E resolveOptionalCodeEnum(String value, Class<E> enumClass, String invalidMessage)
      Resolves an optional code-backed GenericEnum.
      Type Parameters:
      E - enum type
      Parameters:
      value - incoming code value
      enumClass - enum class
      invalidMessage - message used when the code is invalid
      Returns:
      resolved enum or null
    • resolveOptionalLocalDateTime

      protected LocalDateTime resolveOptionalLocalDateTime(String value, String invalidMessage)
      Resolves an optional LocalDateTime using the API standard date format.
      Parameters:
      value - incoming date/time value
      invalidMessage - message used when the value is invalid
      Returns:
      parsed LocalDateTime or null
    • resolveOptionalLocalDate

      protected LocalDate resolveOptionalLocalDate(String value, String invalidMessage)
      Resolves an optional LocalDate using the API standard date format.
      Parameters:
      value - incoming date value
      invalidMessage - message used when the value is invalid
      Returns:
      parsed LocalDate or null
    • resolveSort

      protected org.springframework.data.domain.Sort resolveSort(List<String> sortValues, org.springframework.data.domain.Sort defaultSort, Map<String, List<String>> sortableFieldMap)
      Resolves a sort expression list using a whitelist of supported sort aliases.
      Parameters:
      sortValues - raw sort expressions
      defaultSort - fallback sort
      sortableFieldMap - whitelist mapping of aliases to entity properties
      Returns:
      Sort
    • sortMapping

      protected Map.Entry<String, List<String>> sortMapping(String alias, String... properties)
      Builds a stable sortable alias mapping.
      Parameters:
      alias - public sort alias
      properties - backing entity properties
      Returns:
      alias mapping
    • resolveOptionalString

      protected String resolveOptionalString(String value)
      Resolves a trimmed optional string, mapping blanks to null.
      Parameters:
      value - raw value
      Returns:
      trimmed value or null
    • normalizeSortValues

      protected final List<String> normalizeSortValues(List<String> sortValues)
      Normalizes sort tokens and recombines Spring-bound split alias/direction pairs.
      Parameters:
      sortValues - raw incoming sort values
      Returns:
      normalized sort expressions
    • coalesceSortValues

      protected final List<String> coalesceSortValues(List<String> sortValues)
      Reconstructs sort expressions when request binding has split field,direction pairs into adjacent values.
      Parameters:
      sortValues - normalized sort values
      Returns:
      sort values with split field/direction pairs rejoined
    • resolveSortValue

      protected final AbstractPagedFilterResolver.ResolvedSortValue resolveSortValue(String sortValue)
      Resolves a single sort token into its alias and direction.
      Parameters:
      sortValue - raw sort token
      Returns:
      resolved sort value
    • resolveSortableProperties

      protected final List<String> resolveSortableProperties(String alias, Map<String, List<String>> sortableFieldMap)
      Resolves the whitelist-mapped entity properties for a sort alias.
      Parameters:
      alias - sortable alias
      sortableFieldMap - whitelist mapping
      Returns:
      entity properties backing the alias
    • appendResolvedSortOrders

      protected final void appendResolvedSortOrders(AbstractPagedFilterResolver.ResolvedSortValue sortValue, List<String> properties, Map<String, org.springframework.data.domain.Sort.Order> resolvedOrders)
      Appends orders for a parsed sort value.
      Parameters:
      sortValue - parsed sort value
      properties - entity properties to sort by
      resolvedOrders - output orders
    • applyDirectionToSort

      protected final org.springframework.data.domain.Sort applyDirectionToSort(String directionValue, org.springframework.data.domain.Sort defaultSort)
      Applies a direction-only legacy sort token to an existing sort definition.
      Parameters:
      directionValue - legacy direction token
      defaultSort - fallback sort
      Returns:
      directed Sort
    • isDirectionOnly

      protected final boolean isDirectionOnly(String value)
      Returns whether the given token is a direction-only sort value.
      Parameters:
      value - token
      Returns:
      true when the token is asc or desc