Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function doExecute(StepExecution $stepExecution)
 {
     $itemsToWrite = array();
     $writeCount = 0;
     $this->initializeStepElements($stepExecution);
     $stopExecution = false;
     while (!$stopExecution) {
         try {
             $readItem = $this->reader->read();
             if (null === $readItem) {
                 $stopExecution = true;
                 continue;
             }
         } catch (InvalidItemException $e) {
             $this->handleStepExecutionWarning($this->stepExecution, $this->reader, $e);
             continue;
         }
         $processedItem = $this->process($readItem);
         if (null !== $processedItem) {
             $itemsToWrite[] = $processedItem;
             $writeCount++;
             if (0 === $writeCount % $this->batchSize) {
                 $this->write($itemsToWrite);
                 $itemsToWrite = array();
                 $this->getJobRepository()->updateStepExecution($stepExecution);
             }
         }
     }
     if (count($itemsToWrite) > 0) {
         $this->write($itemsToWrite);
     }
     $this->flushStepElements();
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function execute(StepExecutionWarningHandlerInterface $warningHandler = null)
 {
     $itemsToWrite = [];
     $writeCount = 0;
     $scheduleWrite = false;
     try {
         $stopExecution = false;
         while (!$stopExecution) {
             try {
                 $readItem = $this->reader->read();
                 if (null === $readItem) {
                     $stopExecution = true;
                     continue;
                 }
             } catch (InvalidItemException $e) {
                 $this->handleStepExecutionWarning($this->reader, $e, $warningHandler);
                 continue;
             }
             $processedItem = $this->process($readItem, $warningHandler);
             if (null !== $processedItem) {
                 $itemsToWrite[] = $processedItem;
                 $writeCount++;
                 if (0 === $writeCount % $this->batchSize || $scheduleWrite) {
                     $this->write($itemsToWrite, $warningHandler);
                     $itemsToWrite = [];
                     $scheduleWrite = false;
                 }
             }
             if ($this->reader instanceof IteratorBasedReader) {
                 $sourceIterator = $this->reader->getSourceIterator();
                 if ($sourceIterator instanceof SubordinateReaderInterface && $sourceIterator->writeRequired()) {
                     $scheduleWrite = true;
                 }
             }
         }
         if (count($itemsToWrite) > 0) {
             $this->write($itemsToWrite, $warningHandler);
         }
         $this->ensureResourcesReleased($warningHandler);
     } catch (\Exception $error) {
         $this->ensureResourcesReleased($warningHandler);
         throw $error;
     }
 }
Exemplo n.º 3
0
 /**
  * Executes a step
  *
  * @param StepExecutionWarningHandlerInterface|null $warningHandler
  *
  * @throws \Exception If any critical error occurs
  */
 public function execute(StepExecutionWarningHandlerInterface $warningHandler = null)
 {
     $itemsToWrite = array();
     $writeCount = 0;
     try {
         $stopExecution = false;
         while (!$stopExecution) {
             try {
                 $readItem = $this->reader->read();
                 if (null === $readItem) {
                     $stopExecution = true;
                     continue;
                 }
             } catch (InvalidItemException $e) {
                 $this->handleStepExecutionWarning($this->reader, $e, $warningHandler);
                 continue;
             }
             $processedItem = $this->process($readItem, $warningHandler);
             if (null !== $processedItem) {
                 $itemsToWrite[] = $processedItem;
                 $writeCount++;
                 if (0 === $writeCount % $this->batchSize) {
                     $this->write($itemsToWrite, $warningHandler);
                     $itemsToWrite = array();
                 }
             }
         }
         if (count($itemsToWrite) > 0) {
             $this->write($itemsToWrite, $warningHandler);
         }
         $this->ensureResourcesReleased($warningHandler);
     } catch (\Exception $error) {
         $this->ensureResourcesReleased($warningHandler);
         throw $error;
     }
 }