urlRewriteFactory = $urlRewriteFactory; $this->dataObjectHelper = $dataObjectHelper; } /** * {@inheritdoc} */ public function findAllByData(array $data) { $rows = $this->doFindAllByData($data); $urlRewrites = []; foreach ($rows as $row) { $urlRewrites[] = $this->createUrlRewrite($row); } return $urlRewrites; } /** * Find all rows by specific filter. Template method * * @param array $data * @return array */ abstract protected function doFindAllByData(array $data); /** * {@inheritdoc} */ public function findOneByData(array $data) { $row = $this->doFindOneByData($data); return $row ? $this->createUrlRewrite($row) : null; } /** * Find row by specific filter. Template method * * @param array $data * @return array */ abstract protected function doFindOneByData(array $data); /** * {@inheritdoc} */ public function replace(array $urls) { if (!$urls) { return []; } return $this->doReplace($urls); } /** * Save new url rewrites and remove old if exist. Template method * * @param \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[] $urls * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[] * @throws \Magento\UrlRewrite\Model\Exception\UrlAlreadyExistsException|\Exception */ abstract protected function doReplace(array $urls); /** * Create url rewrite object * * @param array $data * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite */ protected function createUrlRewrite($data) { $dataObject = $this->urlRewriteFactory->create(); $this->dataObjectHelper->populateWithArray( $dataObject, $data, \Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class ); return $dataObject; } }