Commit c1d31909 authored by Chhengleap Soem's avatar Chhengleap Soem
Browse files

Merge branch 'KIME-3603' into 'master'

[TASK] Correct importing queue order

refs KIME-3603

See merge request !3
parents c6ecbfd1 d11970b3
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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);
+17 −1
Original line number Original line Diff line number Diff line
@@ -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 {
	/**
	/**
	 * @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
+14 −0
Original line number Original line Diff line number Diff line
@@ -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 {
					$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 {
				$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;
				}
			}
			}
		}
		}


+1 −0
Original line number Original line Diff line number Diff line
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:
+0 −2
Original line number Original line Diff line number Diff line
@@ -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
    {
    {
        $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');
    }
    }
}
}