/**
  * Go through all products that need to be cleaned and clean them.
  * @return $this object
  */
 public function cleanAllProducts()
 {
     // Get all products that need cleaning - due to loose comparison of column
     // values by the collection, any products that do not include an 'is_clean'
     // column will be included.
     $productsToClean = $this->_products->getItemsByColumnValue('is_clean', false);
     $logData = ['total_products' => count($productsToClean)];
     $logMessage = 'Cleaning {total_products} products.';
     $this->_logger->info($logMessage, $this->_context->getMetaData(__CLASS__, $logData));
     foreach ($productsToClean as $product) {
         $this->cleanProduct($product);
     }
     // save all the products that may have been modified while cleaning products
     $this->_helper->saveCollectionStubIndexer($this->_products);
     return $this;
 }
 /**
  * load a product collection base on a given set of product data and apply
  * the product data to the collection and then save
  * product data is expected to have known SKU in order to load the collection
  * @param  DOMDocument $itemDataDoc
  * @param  int $storeId
  * @param  array $cfgData
  * @param  EbayEnterprise_Catalog_Interface_Import_Items $items
  * @return self
  */
 protected function _importExtractedData(DOMDocument $itemDataDoc, $storeId, array $cfgData, EbayEnterprise_Catalog_Interface_Import_Items $items)
 {
     $feedXPath = $this->_coreHelper->getNewDomXPath($itemDataDoc);
     $skusToUpdate = $this->_getSkusToUpdate($feedXPath, $cfgData);
     if (count($skusToUpdate)) {
         $collection = $items->buildCollection($skusToUpdate);
         if ($cfgData['feed_type'] === 'product') {
             $collection->setStore($storeId);
         }
         foreach ($feedXPath->query($cfgData['base_item_xpath']) as $itemNode) {
             $this->_updateItem($feedXPath, $itemNode, $collection, $storeId, $cfgData, $items);
         }
         $logData = ['total_products' => $collection->getSize(), 'feed_type' => $cfgData['feed_type']];
         $logMessage = 'saving collection of {total_products} {feed_type}';
         $this->_logger->info($logMessage, $this->_context->getMetaData(__CLASS__, $logData));
         // keep track of skus we've processed for the website
         $this->_importedSkus = array_unique(array_merge($this->_importedSkus, $skusToUpdate));
         $this->_helper->saveCollectionStubIndexer($collection);
     }
     return $this;
 }