/**
  * {@inheritdoc}
  *
  * Transforms a configuration (array) to a job parameters (object).
  */
 public function transform($configuration)
 {
     if (null === $configuration) {
         $configuration = [];
     }
     return $this->jobParametersFactory->create($this->job, $configuration);
 }
 /**
  * {@inheritdoc}
  */
 public function process($item)
 {
     $entity = $this->findOrCreateObject($item);
     try {
         $this->updater->update($entity, $item);
     } catch (\InvalidArgumentException $exception) {
         $this->skipItemWithMessage($item, $exception->getMessage(), $exception);
     }
     $violations = $this->validator->validate($entity);
     if ($violations->count() > 0) {
         $this->objectDetacher->detach($entity);
         $this->skipItemWithConstraintViolations($item, $violations);
     }
     $rawParameters = $entity->getRawParameters();
     if (!empty($rawParameters)) {
         $job = $this->jobRegistry->get($entity->getJobName());
         $parameters = $this->jobParamsFactory->create($job, $rawParameters);
         $violations = $this->jobParamsValidator->validate($job, $parameters);
         if ($violations->count() > 0) {
             $this->objectDetacher->detach($entity);
             $this->skipItemWithConstraintViolations($item, $violations);
         }
     }
     return $entity;
 }
 /**
  * @param JobInstance $jobInstance
  * @param string      $field
  * @param mixed       $data
  */
 protected function setData(JobInstance $jobInstance, $field, $data)
 {
     switch ($field) {
         case 'connector':
             $jobInstance->setConnector($data);
             break;
         case 'alias':
             $jobInstance->setJobName($data);
             break;
         case 'label':
             $jobInstance->setLabel($data);
             break;
         case 'type':
             $jobInstance->setType($data);
             break;
         case 'configuration':
             $job = $this->jobRegistry->get($jobInstance->getJobName());
             /** @var JobParameters $jobParameters */
             $jobParameters = $this->jobParametersFactory->create($job, $data);
             $jobInstance->setRawParameters($jobParameters->all());
             break;
         case 'code':
             $jobInstance->setCode($data);
             break;
     }
 }
 /**
  * Create a jobExecution
  *
  * @param JobInstance   $jobInstance
  * @param UserInterface $user
  *
  * @return JobExecution
  */
 protected function createJobExecution(JobInstance $jobInstance, UserInterface $user)
 {
     $job = $this->jobRegistry->get($jobInstance->getJobName());
     $jobParameters = $this->jobParametersFactory->create($job, $jobInstance->getRawParameters());
     $jobExecution = $this->jobRepository->createJobExecution($jobInstance, $jobParameters);
     $jobExecution->setUser($user->getUsername());
     $this->jobRepository->updateJobExecution($jobExecution);
     return $jobExecution;
 }
 /**
  * @param JobInstance $jobInstance
  * @param array       $validationGroups
  *
  * @return ConstraintViolationListInterface
  */
 protected function validateJobInstance(JobInstance $jobInstance, array $validationGroups)
 {
     $rawParameters = $jobInstance->getRawParameters();
     $job = $this->jobRegistry->get($jobInstance->getJobName());
     $jobParameters = $this->jobParametersFactory->create($job, $rawParameters);
     /** @var ConstraintViolationListInterface $jobParamsViolations */
     $jobParamsViolations = $this->jobParametersValidator->validate($job, $jobParameters, $validationGroups);
     /** @var ConstraintViolationListInterface $jobInstanceViolations */
     $jobInstanceViolations = $this->validator->validate($jobInstance, $validationGroups);
     foreach ($jobInstanceViolations as $violation) {
         $jobParamsViolations->add($violation);
     }
     return $jobParamsViolations;
 }