dimensionsProcessor = $dimensionsProcessor ?: ObjectManager::getInstance() ->get(DimensionsProcessor::class); $this->selectContainerBuilder = $selectContainerBuilder ?: ObjectManager::getInstance() ->get(SelectContainerBuilder::class); $this->baseSelectStrategyMapper = $baseSelectStrategyMapper ?: ObjectManager::getInstance() ->get(BaseSelectStrategyMapper::class); $this->filterMapper = $filterMapper ?: ObjectManager::getInstance() ->get(FilterMapper::class); } /** * Build index query * * @param RequestInterface $request * @return Select * @throws \DomainException * @throws \InvalidArgumentException * @throws \Magento\Framework\Exception\LocalizedException */ public function build(RequestInterface $request) { /** @var SelectContainer $selectContainer */ $selectContainer = $this->selectContainerBuilder->buildByRequest($request); /** @var BaseSelectStrategyInterface $baseSelectStrategy */ $baseSelectStrategy = $this->baseSelectStrategyMapper->mapSelectContainerToStrategy($selectContainer); $selectContainer = $baseSelectStrategy->createBaseSelect($selectContainer); $selectContainer = $this->filterMapper->applyFilters($selectContainer); $selectContainer = $this->dimensionsProcessor->processDimensions($selectContainer); return $selectContainer->getSelect(); } }