Loading Classes/WE/SpreadsheetImport/Command/SpreadsheetImportCommandController.php +1 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ class SpreadsheetImportCommandController extends CommandController { $spreadsheetImport->setImportingStatus(SpreadsheetImport::IMPORTING_STATUS_COMPLETED); $this->spreadsheetImportRepository->update($spreadsheetImport); $this->outputFormatted('Spreadsheet has been exported. (totalInserted: %d, totalUpdated: %d, totalDeleted: %d, totalSkipped: %d)', $this->outputFormatted('Spreadsheet has been imported. (totalInserted: %d, totalUpdated: %d, totalDeleted: %d, totalSkipped: %d)', array($spreadsheetImport->getTotalInserted(), $spreadsheetImport->getTotalUpdated(), $spreadsheetImport->getTotalDeleted(), $spreadsheetImport->getTotalSkipped())); } else { $this->outputFormatted('There is no spreadsheet importing in queue.'); Loading Classes/WE/SpreadsheetImport/SpreadsheetImportService.php +20 −3 Original line number Diff line number Diff line Loading @@ -70,6 +70,12 @@ class SpreadsheetImportService { */ protected $propertyMapper; /** * @Flow\Inject * @var \TYPO3\Flow\Validation\ValidatorResolver */ protected $validatorResolver; /** * @param \WE\SpreadsheetImport\Domain\Model\SpreadsheetImport $spreadsheetImport * Loading Loading @@ -187,6 +193,7 @@ class SpreadsheetImportService { $objectIds = array(); $domain = $this->domain; $objectRepository = $this->getDomainRepository(); $objectValidator = $this->validatorResolver->getBaseValidatorConjunction($domain); $identifierProperties = $this->getDomainMappingIdentifierProperties(); $file = $this->spreadsheetImport->getFile()->createTemporaryLocalCopy(); $reader = \PHPExcel_IOFactory::load($file); Loading @@ -199,21 +206,33 @@ class SpreadsheetImportService { $objectIds[] = $this->persistenceManager->getIdentifierByObject($object); if ($this->spreadsheetImport->isUpdating()) { $this->setObjectPropertiesByRow($object, $row); $validationResult = $objectValidator->validate($object); if ($validationResult->hasErrors()) { $totalSkipped++; continue; } $objectRepository->update($object); $totalUpdated++; $i++; } else { $totalSkipped++; continue; } } elseif ($this->spreadsheetImport->isInserting()) { $newObject = new $domain; $this->setObjectPropertiesByRow($newObject, $row); $validationResult = $objectValidator->validate($newObject); if ($validationResult->hasErrors()) { $totalSkipped++; continue; } $objectRepository->add($newObject); $objectIds[] = $this->persistenceManager->getIdentifierByObject($newObject); $totalInserted++; $i++; } else { $totalSkipped++; continue; } if ($i >= $numberOfRecordsToPersist) { $this->persistenceManager->persistAll(); Loading @@ -224,7 +243,6 @@ class SpreadsheetImportService { // remove objects which are not exist on the spreadsheet if ($this->spreadsheetImport->isDeleting()) { $notExistingObjects = $this->findObjectsByExcludedIds($objectIds); $i = 0; foreach ($notExistingObjects as $object) { $objectRepository->remove($object); $totalDeleted++; Loading @@ -246,8 +264,7 @@ class SpreadsheetImportService { * @return \TYPO3\Flow\Persistence\RepositoryInterface */ private function getDomainRepository() { $domainClassName = $this->domain; $repositoryClassName = preg_replace(array('/\\\Model\\\/', '/$/'), array('\\Repository\\', 'Repository'), $domainClassName); $repositoryClassName = preg_replace(array('/\\\Model\\\/', '/$/'), array('\\Repository\\', 'Repository'), $this->domain); /** @var RepositoryInterface $repository */ $repository = $this->objectManager->get($repositoryClassName); return $repository; Loading Loading
Classes/WE/SpreadsheetImport/Command/SpreadsheetImportCommandController.php +1 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ class SpreadsheetImportCommandController extends CommandController { $spreadsheetImport->setImportingStatus(SpreadsheetImport::IMPORTING_STATUS_COMPLETED); $this->spreadsheetImportRepository->update($spreadsheetImport); $this->outputFormatted('Spreadsheet has been exported. (totalInserted: %d, totalUpdated: %d, totalDeleted: %d, totalSkipped: %d)', $this->outputFormatted('Spreadsheet has been imported. (totalInserted: %d, totalUpdated: %d, totalDeleted: %d, totalSkipped: %d)', array($spreadsheetImport->getTotalInserted(), $spreadsheetImport->getTotalUpdated(), $spreadsheetImport->getTotalDeleted(), $spreadsheetImport->getTotalSkipped())); } else { $this->outputFormatted('There is no spreadsheet importing in queue.'); Loading
Classes/WE/SpreadsheetImport/SpreadsheetImportService.php +20 −3 Original line number Diff line number Diff line Loading @@ -70,6 +70,12 @@ class SpreadsheetImportService { */ protected $propertyMapper; /** * @Flow\Inject * @var \TYPO3\Flow\Validation\ValidatorResolver */ protected $validatorResolver; /** * @param \WE\SpreadsheetImport\Domain\Model\SpreadsheetImport $spreadsheetImport * Loading Loading @@ -187,6 +193,7 @@ class SpreadsheetImportService { $objectIds = array(); $domain = $this->domain; $objectRepository = $this->getDomainRepository(); $objectValidator = $this->validatorResolver->getBaseValidatorConjunction($domain); $identifierProperties = $this->getDomainMappingIdentifierProperties(); $file = $this->spreadsheetImport->getFile()->createTemporaryLocalCopy(); $reader = \PHPExcel_IOFactory::load($file); Loading @@ -199,21 +206,33 @@ class SpreadsheetImportService { $objectIds[] = $this->persistenceManager->getIdentifierByObject($object); if ($this->spreadsheetImport->isUpdating()) { $this->setObjectPropertiesByRow($object, $row); $validationResult = $objectValidator->validate($object); if ($validationResult->hasErrors()) { $totalSkipped++; continue; } $objectRepository->update($object); $totalUpdated++; $i++; } else { $totalSkipped++; continue; } } elseif ($this->spreadsheetImport->isInserting()) { $newObject = new $domain; $this->setObjectPropertiesByRow($newObject, $row); $validationResult = $objectValidator->validate($newObject); if ($validationResult->hasErrors()) { $totalSkipped++; continue; } $objectRepository->add($newObject); $objectIds[] = $this->persistenceManager->getIdentifierByObject($newObject); $totalInserted++; $i++; } else { $totalSkipped++; continue; } if ($i >= $numberOfRecordsToPersist) { $this->persistenceManager->persistAll(); Loading @@ -224,7 +243,6 @@ class SpreadsheetImportService { // remove objects which are not exist on the spreadsheet if ($this->spreadsheetImport->isDeleting()) { $notExistingObjects = $this->findObjectsByExcludedIds($objectIds); $i = 0; foreach ($notExistingObjects as $object) { $objectRepository->remove($object); $totalDeleted++; Loading @@ -246,8 +264,7 @@ class SpreadsheetImportService { * @return \TYPO3\Flow\Persistence\RepositoryInterface */ private function getDomainRepository() { $domainClassName = $this->domain; $repositoryClassName = preg_replace(array('/\\\Model\\\/', '/$/'), array('\\Repository\\', 'Repository'), $domainClassName); $repositoryClassName = preg_replace(array('/\\\Model\\\/', '/$/'), array('\\Repository\\', 'Repository'), $this->domain); /** @var RepositoryInterface $repository */ $repository = $this->objectManager->get($repositoryClassName); return $repository; Loading