Commit c1d31909 authored by Chhengleap Soem's avatar Chhengleap Soem

Merge branch 'KIME-3603' into 'master'

[TASK] Correct importing queue order

refs KIME-3603

See merge request !3
parents c6ecbfd1 d11970b3
...@@ -54,7 +54,7 @@ class SpreadsheetImportCommandController extends CommandController { ...@@ -54,7 +54,7 @@ class SpreadsheetImportCommandController extends CommandController {
$this->quit(); $this->quit();
} }
/** @var SpreadsheetImport $spreadsheetImport */ /** @var SpreadsheetImport $spreadsheetImport */
$spreadsheetImport = $this->spreadsheetImportRepository->findOneByImportingStatus(SpreadsheetImport::IMPORTING_STATUS_IN_QUEUE); $spreadsheetImport = $this->spreadsheetImportRepository->findPreviousOneInQueue();
if ($spreadsheetImport instanceof SpreadsheetImport) { if ($spreadsheetImport instanceof SpreadsheetImport) {
// mark importing status as "Progressing" before continuing the importing // mark importing status as "Progressing" before continuing the importing
$spreadsheetImport->setImportingStatus(SpreadsheetImport::IMPORTING_STATUS_IN_PROGRESS); $spreadsheetImport->setImportingStatus(SpreadsheetImport::IMPORTING_STATUS_IN_PROGRESS);
......
...@@ -12,7 +12,9 @@ namespace WE\SpreadsheetImport\Domain\Repository; ...@@ -12,7 +12,9 @@ namespace WE\SpreadsheetImport\Domain\Repository;
* */ * */
use TYPO3\Flow\Annotations as Flow; use TYPO3\Flow\Annotations as Flow;
use TYPO3\Flow\Persistence\QueryInterface;
use TYPO3\Flow\Persistence\Repository; use TYPO3\Flow\Persistence\Repository;
use WE\SpreadsheetImport\Domain\Model\SpreadsheetImport;
/** /**
* @Flow\Scope("singleton") * @Flow\Scope("singleton")
...@@ -22,7 +24,21 @@ class SpreadsheetImportRepository extends Repository { ...@@ -22,7 +24,21 @@ class SpreadsheetImportRepository extends Repository {
/** /**
* @var array * @var array
*/ */
protected $defaultOrderings = array('scheduleDate' => \TYPO3\Flow\Persistence\QueryInterface::ORDER_ASCENDING); protected $defaultOrderings = array('scheduleDate' => QueryInterface::ORDER_DESCENDING);
/**
* @return SpreadsheetImport
*/
public function findPreviousOneInQueue() {
$query = $this->createQuery();
$constraint = $query->logicalAnd(
$query->equals('importingStatus', SpreadsheetImport::IMPORTING_STATUS_IN_QUEUE),
$query->lessThanOrEqual('scheduleDate', new \DateTime())
);
return $query->matching($constraint)
->setOrderings(array('scheduleDate' => QueryInterface::ORDER_ASCENDING))
->execute()->getFirst();
}
/** /**
* @param \DateTime $dateTime * @param \DateTime $dateTime
......
...@@ -190,6 +190,8 @@ class SpreadsheetImportService { ...@@ -190,6 +190,8 @@ class SpreadsheetImportService {
$identifierProperties = $this->getDomainMappingIdentifierProperties(); $identifierProperties = $this->getDomainMappingIdentifierProperties();
$file = $this->spreadsheetImport->getFile()->createTemporaryLocalCopy(); $file = $this->spreadsheetImport->getFile()->createTemporaryLocalCopy();
$reader = \PHPExcel_IOFactory::load($file); $reader = \PHPExcel_IOFactory::load($file);
$numberOfRecordsToPersist = $this->settings['numberOfRecordsToPersist'];
$i = 0;
/** @var \PHPExcel_Worksheet_Row $row */ /** @var \PHPExcel_Worksheet_Row $row */
foreach ($reader->getActiveSheet()->getRowIterator(2) as $row) { foreach ($reader->getActiveSheet()->getRowIterator(2) as $row) {
$object = $this->findObjectByIdentifierPropertiesPerRow($identifierProperties, $row); $object = $this->findObjectByIdentifierPropertiesPerRow($identifierProperties, $row);
...@@ -199,6 +201,7 @@ class SpreadsheetImportService { ...@@ -199,6 +201,7 @@ class SpreadsheetImportService {
$this->setObjectPropertiesByRow($object, $row); $this->setObjectPropertiesByRow($object, $row);
$objectRepository->update($object); $objectRepository->update($object);
$totalUpdated++; $totalUpdated++;
$i++;
} else { } else {
$totalSkipped++; $totalSkipped++;
} }
...@@ -208,17 +211,28 @@ class SpreadsheetImportService { ...@@ -208,17 +211,28 @@ class SpreadsheetImportService {
$objectRepository->add($newObject); $objectRepository->add($newObject);
$objectIds[] = $this->persistenceManager->getIdentifierByObject($newObject); $objectIds[] = $this->persistenceManager->getIdentifierByObject($newObject);
$totalInserted++; $totalInserted++;
$i++;
} else { } else {
$totalSkipped++; $totalSkipped++;
} }
if ($i >= $numberOfRecordsToPersist) {
$this->persistenceManager->persistAll();
$i = 0;
}
} }
// remove objects which are not exist on the spreadsheet // remove objects which are not exist on the spreadsheet
if ($this->spreadsheetImport->isDeleting()) { if ($this->spreadsheetImport->isDeleting()) {
$notExistingObjects = $this->findObjectsByExcludedIds($objectIds); $notExistingObjects = $this->findObjectsByExcludedIds($objectIds);
$i = 0;
foreach ($notExistingObjects as $object) { foreach ($notExistingObjects as $object) {
$objectRepository->remove($object); $objectRepository->remove($object);
$totalDeleted++; $totalDeleted++;
$i++;
if ($i >= $numberOfRecordsToPersist) {
$this->persistenceManager->persistAll();
$i = 0;
}
} }
} }
......
WE: WE:
SpreadsheetImport: SpreadsheetImport:
cleanupImportFromPreviousDay: 5 cleanupImportFromPreviousDay: 5
numberOfRecordsToPersist: 100
swisscomGrb: swisscomGrb:
domain: WE\KIME\Domain\Model\User domain: WE\KIME\Domain\Model\User
Configuration: Configuration:
......
...@@ -26,7 +26,6 @@ class Version20161026173055 extends AbstractMigration ...@@ -26,7 +26,6 @@ class Version20161026173055 extends AbstractMigration
$this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on "mysql".'); $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on "mysql".');
$this->addSql('ALTER TABLE we_spreadsheetimport_domain_model_spreadsheetimport ADD arguments LONGTEXT NOT NULL'); $this->addSql('ALTER TABLE we_spreadsheetimport_domain_model_spreadsheetimport ADD arguments LONGTEXT NOT NULL');
$this->addSql('ALTER TABLE we_spreadsheetimport_domain_model_spreadsheetimport ADD CONSTRAINT FK_19518FA38C9F3610 FOREIGN KEY (file) REFERENCES typo3_flow_resource_resource (persistence_object_identifier)');
} }
/** /**
...@@ -37,7 +36,6 @@ class Version20161026173055 extends AbstractMigration ...@@ -37,7 +36,6 @@ class Version20161026173055 extends AbstractMigration
{ {
$this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on "mysql".'); $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on "mysql".');
$this->addSql('ALTER TABLE we_spreadsheetimport_domain_model_spreadsheetimport DROP FOREIGN KEY FK_19518FA38C9F3610');
$this->addSql('ALTER TABLE we_spreadsheetimport_domain_model_spreadsheetimport DROP arguments'); $this->addSql('ALTER TABLE we_spreadsheetimport_domain_model_spreadsheetimport DROP arguments');
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment