Class DefaultPlatformFieldSearchFacadeStrategy<T extends ItemModel>

  • All Implemented Interfaces:
    com.hybris.cockpitng.dataaccess.facades.search.FieldSearchFacade<T>, com.hybris.cockpitng.dataaccess.facades.search.FieldSearchFacadeStrategy<T>
    Direct Known Subclasses:
    DefaultYFormsFieldSearchFacadeStrategy

    public class DefaultPlatformFieldSearchFacadeStrategy<T extends ItemModel>
    extends java.lang.Object
    implements com.hybris.cockpitng.dataaccess.facades.search.FieldSearchFacadeStrategy<T>
    Platform specific implementation of FieldSearchFacadeStrategy

    • Field Detail

      • STRATEGY_NAME

        public static final java.lang.String STRATEGY_NAME
        Strategy name to be used in configuration when preferred search strategy is to be changed
        See Also:
        Constant Field Values
      • ATTRIBUTE_PERMISSION_CHECK_PROPERTY

        public static final java.lang.String ATTRIBUTE_PERMISSION_CHECK_PROPERTY
        See Also:
        Constant Field Values
    • Constructor Detail

      • DefaultPlatformFieldSearchFacadeStrategy

        public DefaultPlatformFieldSearchFacadeStrategy()
    • Method Detail

      • canHandle

        public boolean canHandle​(java.lang.String typeCode)
        Specified by:
        canHandle in interface com.hybris.cockpitng.dataaccess.facades.search.FieldSearchFacadeStrategy<T extends ItemModel>
      • search

        public com.hybris.cockpitng.search.data.pageable.Pageable search​(com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
        Specified by:
        search in interface com.hybris.cockpitng.dataaccess.facades.search.FieldSearchFacade<T extends ItemModel>
      • searchInternal

        protected com.hybris.cockpitng.search.data.pageable.Pageable searchInternal​(com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
      • adjustSearchQuery

        protected com.hybris.cockpitng.search.data.SearchQueryData adjustSearchQuery​(com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
        This method allows filtering or altering the search data before the real query will be passed to the search engine.
        Parameters:
        searchQueryData - query to adjust
      • createSearchQueryDataBuilderWithAttributes

        protected com.hybris.backoffice.widgets.advancedsearch.engine.AdvancedSearchQueryData.Builder createSearchQueryDataBuilderWithAttributes​(com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
      • parseSearchQueryAttributes

        protected java.util.List<com.hybris.cockpitng.search.data.SearchQueryCondition> parseSearchQueryAttributes​(com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
      • excludeNoReadPermissionSubTypes

        protected void excludeNoReadPermissionSubTypes​(java.util.List<com.hybris.cockpitng.search.data.SearchQueryCondition> conditions,
                                                       com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
        Security threat issue: https://cxjira.sap.com/browse/DRB-450 | Type level permission | Type/Subtype | To exclude unauthorized subtype from search results. |
        Parameters:
        conditions -
        searchQueryData -
      • isNeedToExcludeNoReadPermissionSubType

        protected boolean isNeedToExcludeNoReadPermissionSubType​(java.lang.String typeCode,
                                                                 java.util.List<com.hybris.cockpitng.search.data.SearchQueryCondition> conditions)
        Security threat issue: https://cxjira.sap.com/browse/ECP-5491 | Attribute/type level permission | Type/Subtype | To exclude subtype from search results if any following conditions match: 1. No read permission for subtype 2. If attribute level permission check enabled and the search condition contains at least one unauthorized attribute of this subtype.
        Parameters:
        typeCode -
        conditions -
      • isAttributePermissionCheckEnabled

        protected boolean isAttributePermissionCheckEnabled()
      • buildQuery

        protected GenericSearchQuery buildQuery​(com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
        Uses GenericQuery to build flexible search query based on SearchQueryData information.
        Parameters:
        searchQueryData -
        Returns:
        String representing flexible search query
      • createSortCondition

        protected GenericSearchOrderBy createSortCondition​(GenericQuery query,
                                                           java.lang.String typeCode,
                                                           com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
      • createEnumSortOrder

        protected GenericSearchOrderBy createEnumSortOrder​(GenericQuery query,
                                                           java.lang.String sortType,
                                                           java.lang.String qualifier,
                                                           boolean asc)
      • sorEnumByLocalizedNameEnabled

        protected boolean sorEnumByLocalizedNameEnabled()
      • getConditionsOperator

        protected Operator getConditionsOperator​(com.hybris.cockpitng.search.data.SearchQueryData searchQueryData)
        Returns logical operator which joins query conditions (or, and)
        Parameters:
        searchQueryData -
        Returns:
        OR operator
      • isSortable

        public boolean isSortable​(com.hybris.cockpitng.dataaccess.facades.type.DataType type,
                                  java.lang.String attributeQualifier,
                                  com.hybris.cockpitng.dataaccess.context.Context context)
        Specified by:
        isSortable in interface com.hybris.cockpitng.dataaccess.facades.search.FieldSearchFacade<T extends ItemModel>
      • setGenericSearchService

        public void setGenericSearchService​(GenericSearchService genericSearchService)
      • setTypeService

        public void setTypeService​(TypeService typeService)
      • setCommonI18NService

        public void setCommonI18NService​(CommonI18NService commonI18NService)
      • setCockpitProperties

        public void setCockpitProperties​(com.hybris.cockpitng.core.util.CockpitProperties cockpitProperties)
      • getCockpitProperties

        protected com.hybris.cockpitng.core.util.CockpitProperties getCockpitProperties()
      • getPermissionFacade

        protected com.hybris.cockpitng.dataaccess.facades.permissions.PermissionFacade getPermissionFacade()
      • setPermissionFacade

        public void setPermissionFacade​(com.hybris.cockpitng.dataaccess.facades.permissions.PermissionFacade permissionFacade)
      • setGenericMultiConditionQueryBuilder

        public void setGenericMultiConditionQueryBuilder​(ConditionQueryBuilder genericMultiConditionQueryBuilder)
      • getStrategyName

        public java.lang.String getStrategyName()
        Specified by:
        getStrategyName in interface com.hybris.cockpitng.dataaccess.facades.search.FieldSearchFacadeStrategy<T extends ItemModel>