Interface SearchQueryVisitor<T>

  • All Known Implementing Classes:
    SearchQueryRenderer

    public interface SearchQueryVisitor<T>
    Used by the SearchQuery domain model to render the model into another form (such as a Select statement).
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      T addCanonicalParam​(T query, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given canonical parameter
      T addChained​(T currentSubQuery, com.ibm.fhir.search.parameters.QueryParameter currentParm)
      Add a chain subquery element as part of a chained parameter search
      T addCompositeParam​(T query, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Add a composite query parameter filter to the query
      T addCompositeParam​(T query, com.ibm.fhir.search.parameters.QueryParameter queryParm, boolean isMissing)
      Add a composite query which only tests missing/not missing, not the actual parameter value
      T addDateParam​(T queryData, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given date parameter
      void addFilter​(T currentSubQuery, String resourceType, com.ibm.fhir.search.parameters.QueryParameter currentParm)
      Add a filter predicate to the given chained sub-query element.
      T addIncludeFilter​(T query, com.ibm.fhir.search.parameters.InclusionParameter inclusionParm, List<Long> logicalResourceIds)  
      T addInclusionParam​(T query, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Special case to handle inclusion related to compartment-based searches
      T addLocationParam​(T queryData, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given location (lat/lng) param
      T addLocationPosition​(T queryData, List<com.ibm.fhir.search.parameters.QueryParameter> queryParameters)  
      T addMissingParam​(T query, com.ibm.fhir.search.parameters.QueryParameter queryParm, boolean isMissing)
      Add a missing (NOT EXISTS) parameter clause to the query
      T addNumberParam​(T queryData, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given number parameter
      T addPagination​(T query)
      Add pagination (LIMIT/OFFSET) to the query
      T addQuantityParam​(T queryData, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given quantity parameter
      T addReferenceParam​(T queryData, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given reference parameter
      T addReverseChained​(T currentSubQuery, com.ibm.fhir.search.parameters.QueryParameter currentParm)
      Add a reverse chain subquery element as part of a chained parameter search
      T addRevIncludeFilter​(T query, com.ibm.fhir.search.parameters.InclusionParameter inclusionParm, List<Long> logicalResourceIds)  
      T addSecurityParam​(T query, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given security query parameter
      T addSorting​(T query, String lrAlias)
      Add sorting (order by) to the query
      void addSortParam​(T queryData, String code, com.ibm.fhir.search.SearchConstants.Type type, com.ibm.fhir.search.sort.Sort.Direction direction)
      Add the given sort parameter to the sort query
      T addStringParam​(T query, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given string parameter
      T addTagParam​(T query, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given tag query parameter
      T addTokenParam​(T query, String resourceType, com.ibm.fhir.search.parameters.QueryParameter queryParm)
      Filter the query using the given parameter id and token value
      T addWholeSystemDataFilter​(T query, String resourceType, List<Long> logicalResourceIds)  
      T addWholeSystemResourceTypeFilter​(T query, List<Integer> resourceTypeIds)  
      T addWholeSystemSorting​(T query, List<DomainSortParameter> sortParms, String lrAlias)
      Add sorting (order by) for whole-system search to the query
      T countRoot​(String rootResourceType)
      The root query (select statement) for a count query
      T dataRoot​(String rootResourceType)
      The root query (select statement) for the data query
      T getParameterBaseQuery​(T queryData)
      Get the join to which we want to attach all the parameter tables.
      T includeRoot​(String rootResourceType)
      The root query (select statement) for the include query.
      T joinResources​(T queryData)
      Finish the data query by wrapping the root and joining the resources table
      T sortRoot​(String rootResourceType)
      The root of the FHIR search sort query
      T wholeSystemDataRoot​(String rootResourceType)
      The root of the FHIR whole-system data search query
      T wholeSystemFilterRoot()
      The root of the FHIR whole-system filter search query
      T wrapInclude​(T query)  
      T wrapWholeSystem​(List<T> queries, boolean isCountQuery)
      The wrapper for whole-system search
    • Method Detail

      • countRoot

        T countRoot​(String rootResourceType)
        The root query (select statement) for a count query
        Parameters:
        rootResourceType -
        Returns:
      • dataRoot

        T dataRoot​(String rootResourceType)
        The root query (select statement) for the data query
        Parameters:
        rootResourceType -
        Returns:
      • joinResources

        T joinResources​(T queryData)
        Finish the data query by wrapping the root and joining the resources table
        Parameters:
        queryData -
        Returns:
      • getParameterBaseQuery

        T getParameterBaseQuery​(T queryData)
        Get the join to which we want to attach all the parameter tables. This makes it easier to build different styles of joins
        Parameters:
        queryData -
        Returns:
      • includeRoot

        T includeRoot​(String rootResourceType)
        The root query (select statement) for the include query. This query is different than the data root because of the need to support version references for _include searches. For this, we join: xx_RESOURCES.LOGICAL_RESOURCE_ID = xx_LOGICAL_RESOURCES.LOGICAL_RESOURCE_ID and allow the filter to specify the version_id constraint. However, we still need to assert that the resource has not been deleted, so we keep: xx_LOGICAL_RESOURCES.IS_DELETED = 'N'
        Parameters:
        rootResourceType -
        Returns:
      • wrapInclude

        T wrapInclude​(T query)
        Parameters:
        query -
        Returns:
      • sortRoot

        T sortRoot​(String rootResourceType)
        The root of the FHIR search sort query
        Parameters:
        rootResourceType -
        Returns:
      • wholeSystemFilterRoot

        T wholeSystemFilterRoot()
        The root of the FHIR whole-system filter search query
        Returns:
      • wholeSystemDataRoot

        T wholeSystemDataRoot​(String rootResourceType)
        The root of the FHIR whole-system data search query
        Parameters:
        rootResourceType -
        Returns:
      • wrapWholeSystem

        T wrapWholeSystem​(List<T> queries,
                          boolean isCountQuery)
        The wrapper for whole-system search
        Parameters:
        queries -
        isCountQuery -
        Returns:
      • addTokenParam

        T addTokenParam​(T query,
                        String resourceType,
                        com.ibm.fhir.search.parameters.QueryParameter queryParm)
                 throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given parameter id and token value
        Parameters:
        query -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addTagParam

        T addTagParam​(T query,
                      String resourceType,
                      com.ibm.fhir.search.parameters.QueryParameter queryParm)
               throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given tag query parameter
        Parameters:
        query -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addSecurityParam

        T addSecurityParam​(T query,
                           String resourceType,
                           com.ibm.fhir.search.parameters.QueryParameter queryParm)
                    throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given security query parameter
        Parameters:
        query -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addStringParam

        T addStringParam​(T query,
                         String resourceType,
                         com.ibm.fhir.search.parameters.QueryParameter queryParm)
                  throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given string parameter
        Parameters:
        query -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addCanonicalParam

        T addCanonicalParam​(T query,
                            String resourceType,
                            com.ibm.fhir.search.parameters.QueryParameter queryParm)
                     throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given canonical parameter
        Parameters:
        query -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addNumberParam

        T addNumberParam​(T queryData,
                         String resourceType,
                         com.ibm.fhir.search.parameters.QueryParameter queryParm)
                  throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given number parameter
        Parameters:
        queryData -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addQuantityParam

        T addQuantityParam​(T queryData,
                           String resourceType,
                           com.ibm.fhir.search.parameters.QueryParameter queryParm)
                    throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given quantity parameter
        Parameters:
        queryData -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addDateParam

        T addDateParam​(T queryData,
                       String resourceType,
                       com.ibm.fhir.search.parameters.QueryParameter queryParm)
                throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given date parameter
        Parameters:
        queryData -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addReferenceParam

        T addReferenceParam​(T queryData,
                            String resourceType,
                            com.ibm.fhir.search.parameters.QueryParameter queryParm)
                     throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given reference parameter
        Parameters:
        queryData -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addLocationParam

        T addLocationParam​(T queryData,
                           String resourceType,
                           com.ibm.fhir.search.parameters.QueryParameter queryParm)
                    throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Filter the query using the given location (lat/lng) param
        Parameters:
        queryData -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addMissingParam

        T addMissingParam​(T query,
                          com.ibm.fhir.search.parameters.QueryParameter queryParm,
                          boolean isMissing)
                   throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Add a missing (NOT EXISTS) parameter clause to the query
        Parameters:
        query -
        queryParm -
        isMissing - true if the condition should be that the parameter does not exist
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addCompositeParam

        T addCompositeParam​(T query,
                            com.ibm.fhir.search.parameters.QueryParameter queryParm)
                     throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Add a composite query parameter filter to the query
        Parameters:
        query -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addCompositeParam

        T addCompositeParam​(T query,
                            com.ibm.fhir.search.parameters.QueryParameter queryParm,
                            boolean isMissing)
                     throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Add a composite query which only tests missing/not missing, not the actual parameter value
        Parameters:
        query -
        queryParm -
        isMissing -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addInclusionParam

        T addInclusionParam​(T query,
                            String resourceType,
                            com.ibm.fhir.search.parameters.QueryParameter queryParm)
                     throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Special case to handle inclusion related to compartment-based searches
        Parameters:
        query -
        resourceType -
        queryParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addSorting

        T addSorting​(T query,
                     String lrAlias)
        Add sorting (order by) to the query
        Parameters:
        query -
        lrAlias -
        Returns:
      • addWholeSystemSorting

        T addWholeSystemSorting​(T query,
                                List<DomainSortParameter> sortParms,
                                String lrAlias)
        Add sorting (order by) for whole-system search to the query
        Parameters:
        query -
        sortParms -
        lrAlias -
        Returns:
      • addPagination

        T addPagination​(T query)
        Add pagination (LIMIT/OFFSET) to the query
        Parameters:
        query -
        Returns:
      • addChained

        T addChained​(T currentSubQuery,
                     com.ibm.fhir.search.parameters.QueryParameter currentParm)
              throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Add a chain subquery element as part of a chained parameter search
        Parameters:
        currentSubQuery -
        currentParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addReverseChained

        T addReverseChained​(T currentSubQuery,
                            com.ibm.fhir.search.parameters.QueryParameter currentParm)
                     throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Add a reverse chain subquery element as part of a chained parameter search
        Parameters:
        currentSubQuery -
        currentParm -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addFilter

        void addFilter​(T currentSubQuery,
                       String resourceType,
                       com.ibm.fhir.search.parameters.QueryParameter currentParm)
                throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Add a filter predicate to the given chained sub-query element. This must be the last element of the chain.
        Parameters:
        currentSubQuery -
        resourceType -
        currentParm -
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addLocationPosition

        T addLocationPosition​(T queryData,
                              List<com.ibm.fhir.search.parameters.QueryParameter> queryParameters)
                       throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Parameters:
        queryData -
        queryParameters -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addIncludeFilter

        T addIncludeFilter​(T query,
                           com.ibm.fhir.search.parameters.InclusionParameter inclusionParm,
                           List<Long> logicalResourceIds)
                    throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Parameters:
        query -
        inclusionParm -
        logicalResourceIds -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addRevIncludeFilter

        T addRevIncludeFilter​(T query,
                              com.ibm.fhir.search.parameters.InclusionParameter inclusionParm,
                              List<Long> logicalResourceIds)
                       throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Parameters:
        query -
        inclusionParm -
        logicalResourceIds -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addWholeSystemDataFilter

        T addWholeSystemDataFilter​(T query,
                                   String resourceType,
                                   List<Long> logicalResourceIds)
                            throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Parameters:
        query -
        resourceType -
        logicalResourceIds -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addWholeSystemResourceTypeFilter

        T addWholeSystemResourceTypeFilter​(T query,
                                           List<Integer> resourceTypeIds)
                                    throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Parameters:
        query -
        resourceTypeIds -
        Returns:
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException
      • addSortParam

        void addSortParam​(T queryData,
                          String code,
                          com.ibm.fhir.search.SearchConstants.Type type,
                          com.ibm.fhir.search.sort.Sort.Direction direction)
                   throws com.ibm.fhir.persistence.exception.FHIRPersistenceException
        Add the given sort parameter to the sort query
        Parameters:
        queryData -
        code -
        type -
        direction -
        Throws:
        com.ibm.fhir.persistence.exception.FHIRPersistenceException