示例#1
0
 /**
  * {@inheritdoc}
  */
 public function start()
 {
     $dispatcher = $this->getDispatcher();
     $sourceEvent = new SourcePipelineEvent();
     $sourceEvent->setContext($this->getContext());
     $dispatcher->dispatch($this->getEventName(self::EVENT_SUFFIX_SOURCE), $sourceEvent);
     $this->setContext($sourceEvent->getContext());
     $sources = $sourceEvent->getSources();
     $outputs = [];
     $startEvent = new StartPipelineEvent();
     $startEvent->setContext($this->getContext());
     $startEvent->setItemCount($this->countSourceItems($sources));
     $dispatcher->dispatch($this->getEventName(self::EVENT_SUFFIX_START), $startEvent);
     $this->setContext($startEvent->getContext());
     $this->progressBar && $this->progressBar->start($this->countSourceItems($sources));
     foreach ($sources as $source) {
         foreach ($source as $item) {
             $itemEvent = new ItemPipelineEvent($item);
             $itemEvent->setContext($this->getContext());
             $dispatcher->dispatch($this->getEventName(self::EVENT_SUFFIX_MODIFY), $itemEvent);
             $dispatcher->dispatch($this->getEventName(self::EVENT_SUFFIX_CONSUME), $itemEvent);
             $output = $itemEvent->getOutput();
             if ($output !== null) {
                 $outputs[] = $output;
             }
             $this->setContext($itemEvent->getContext());
             $this->progressBar && $this->progressBar->advance();
         }
     }
     $finishEvent = new FinishPipelineEvent();
     $finishEvent->setContext($this->getContext());
     $dispatcher->dispatch($this->getEventName(self::EVENT_SUFFIX_FINISH), $finishEvent);
     $this->progressBar && $this->progressBar->finish();
     return ['outputs' => $outputs];
 }
 /**
  * Test onConsume action.
  */
 public function testOnConsume()
 {
     $item = $this->getMock('ONGR\\ConnectionsBundle\\Sync\\DiffProvider\\Item\\AbstractDiffItem');
     $this->itemPipelineEvent->expects($this->once())->method('getItem')->will($this->returnValue($item));
     $this->extractor->expects($this->once())->method('extract')->with($item);
     $this->listener->onConsume($this->itemPipelineEvent);
 }
示例#3
0
 /**
  * Skips item, marks event as skipped with a reason.
  *
  * @param ItemPipelineEvent $event
  * @param string            $reason
  */
 public static function skip(ItemPipelineEvent $event, $reason = '')
 {
     $itemSkip = new ItemSkip();
     $itemSkip->setReason($reason);
     $event->setItemSkip($itemSkip);
     $event->stopPropagation();
 }
 /**
  * Entry point of consume event.
  *
  * @param ItemPipelineEvent $event
  */
 public function onConsume(ItemPipelineEvent $event)
 {
     if ($event->getItemSkip()) {
         $this->skip($event);
     } else {
         $this->consume($event);
     }
 }
 /**
  * Validates the class name of event item and prepares internal document for persistence operation.
  *
  * @param ItemPipelineEvent $event
  *
  * @return bool
  */
 protected function setItem(ItemPipelineEvent $event)
 {
     /** @var AbstractImportItem $tempItem */
     $tempItem = $event->getItem();
     if (!$tempItem instanceof $this->importItemClass) {
         $this->log("Item provided is not an {$this->importItemClass}", LogLevel::ERROR);
         return false;
     }
     $this->importItem = $tempItem;
     return true;
 }
 /**
  * Modify event.
  *
  * @param ItemPipelineEvent $event
  */
 public function onModify(ItemPipelineEvent $event)
 {
     $item = $event->getItem();
     if ($item instanceof ImportItem) {
         $this->modify($item, $event);
     } elseif ($item instanceof SyncExecuteItem) {
         $syncStorageData = $item->getSyncStorageData();
         if ($syncStorageData['type'] !== ActionTypes::DELETE) {
             $this->modify($item, $event);
         } else {
             ItemSkipper::skip($event, 'Delete item with id = ' . $syncStorageData['id']);
         }
     } else {
         $this->log('The type of provided item is not ImportItem or SyncExecuteItem.', LogLevel::ERROR);
     }
 }
示例#7
0
 /**
  * OnModify.
  *
  * @param ItemPipelineEvent $event
  */
 public function onModify(ItemPipelineEvent $event)
 {
     if ($event->getItem() == 'skip') {
         ItemSkipper::skip($event, 'Test reason for skip');
     }
 }
 /**
  * {@inheritdoc}
  */
 public function skip(ItemPipelineEvent $event)
 {
     if ($event->getItemSkip()->getReason() === 'Test reason for skip') {
         $this->skipCalled++;
     }
 }
 /**
  * Pipeline consume event listener.
  *
  * @param ItemPipelineEvent $event
  */
 public function consume(ItemPipelineEvent $event)
 {
     $this->invalidateItem($event->getItem(), $event->getContext());
 }
 /**
  * Consumes given event.
  *
  * @param ItemPipelineEvent $event
  */
 public function consume(ItemPipelineEvent $event)
 {
     $this->extractor->extract($event->getItem());
 }
 /**
  * Events onModify action.
  *
  * @param ItemPipelineEvent $documentEvent
  */
 public function onModify(ItemPipelineEvent $documentEvent)
 {
     $this->processData($documentEvent->getItem());
 }