Exemple #1
0
 public function execute(ExecutionContext $execution)
 {
     $data = $execution->read();
     // For data from pipe, we need to get back global metadata... Little crappy I know...
     $metadata = $execution->getContextMetadata();
     // Read data
     try {
         $data = $this->slice($execution, $metadata);
     } catch (\OutOfBoundsException $e) {
         // Message has no more data and should not be spread
         $execution->terminate();
         $data = [];
     }
     // No data
     if (count($data) <= 0) {
         $this->debug('No data');
     }
     // Store data read
     foreach ($data as $k => $result) {
         $metadata = $this->metadataAccessor->createMetadata($result, $metadata);
         $execution->write($result, $metadata);
     }
     // Limit total to the max if lesser
     if ($execution->hasNoTotal()) {
         $execution->changeTotal($this->count());
     }
     $execution->valid();
 }
Exemple #2
0
 public function execute(ExecutionContext $execution)
 {
     $property = $execution->getJobOption('property');
     $data = $execution->read();
     if (null !== $property) {
         $accessor = PropertyAccess::createPropertyAccessor();
     }
     foreach ($data as $k => $result) {
         $context = $this->createContext($execution, $result->getMetadata());
         $data = $result->getValue();
         if (null !== $property) {
             $data = $accessor->getValue($data, $property);
         }
         $this->load($data, $context);
     }
     if (count($data) > 0) {
         $context = $this->createContext($execution, $result->getMetadata());
         $this->flush($context);
         $this->clear($context);
     }
     if (false === $execution->getJobOption('requeue')) {
         // If a loader don't requeue message, the next job step will need the original data
         $execution->rewindData();
     }
 }
Exemple #3
0
 public function execute(ExecutionContext $execution)
 {
     $data = $execution->read();
     $this->debug(count($data) . ' rows');
     foreach ($data as $k => $result) {
         $value = $result->getValue();
         $metadata = $result->getMetadata();
         $context = $this->createContext($execution, $metadata);
         $transformedData = $this->transform($value, $context);
         if (is_array($transformedData)) {
             foreach ($transformedData as $d) {
                 $this->writeData($value, $metadata, $execution, $d);
             }
         } else {
             $this->writeData($value, $metadata, $execution, $transformedData);
         }
     }
     $execution->valid();
 }