Some cleanup & refactor

This commit is contained in:
Jeremy Benoist 2016-09-05 07:50:10 +02:00
parent 02f6489572
commit 3849a9f323
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
6 changed files with 60 additions and 70 deletions

View file

@ -7,7 +7,7 @@ use Psr\Log\NullLogger;
use Doctrine\ORM\EntityManager;
use Wallabag\CoreBundle\Helper\ContentProxy;
use Wallabag\CoreBundle\Entity\Entry;
use Symfony\Component\Security\Core\User\UserInterface;
use Wallabag\UserBundle\Entity\User;
use OldSound\RabbitMqBundle\RabbitMq\Producer;
abstract class AbstractImport implements ImportInterface
@ -46,9 +46,9 @@ abstract class AbstractImport implements ImportInterface
* Set current user.
* Could the current *connected* user or one retrieve by the consumer.
*
* @param UserInterface $user
* @param User $user
*/
public function setUser(UserInterface $user)
public function setUser(User $user)
{
$this->user = $user;
}
@ -119,6 +119,32 @@ abstract class AbstractImport implements ImportInterface
$this->em->flush();
}
/**
* Parse entries and send them to the queue.
* It should just be a simple loop on all item, no call to the database should be done
* to speedup queuing.
*
* Faster parse entries for Producer.
* We don't care to make check at this time. They'll be done by the consumer.
*
* @param array $entries
*/
protected function parseEntriesForProducer(array $entries)
{
foreach ($entries as $importedEntry) {
// set userId for the producer (it won't know which user is connected)
$importedEntry['userId'] = $this->user->getId();
if ($this->markAsRead) {
$importedEntry = $this->setEntryAsRead($importedEntry);
}
++$this->importedEntries;
$this->producer->publish(json_encode($importedEntry));
}
}
/**
* Parse one entry.
*
@ -127,4 +153,14 @@ abstract class AbstractImport implements ImportInterface
* @return Entry
*/
abstract public function parseEntry(array $importedEntry);
/**
* Set current imported entry to archived / read.
* Implementation is different accross all imports.
*
* @param array $importedEntry
*
* @return array
*/
abstract protected function setEntryAsRead(array $importedEntry);
}

View file

@ -29,7 +29,7 @@ class PocketImport extends AbstractImport
}
/**
* Only used for test purpose
* Only used for test purpose.
*
* @return string
*/
@ -258,24 +258,12 @@ class PocketImport extends AbstractImport
}
/**
* Faster parse entries for Producer.
* We don't care to make check at this time. They'll be done by the consumer.
*
* @param array $entries
* {@inheritdoc}
*/
public function parseEntriesForProducer($entries)
protected function setEntryAsRead(array $importedEntry)
{
foreach ($entries as $importedEntry) {
// set userId for the producer (it won't know which user is connected)
$importedEntry['userId'] = $this->user->getId();
$importedEntry['status'] = 1;
if ($this->markAsRead) {
$importedEntry['status'] = 1;
}
++$this->importedEntries;
$this->producer->publish(json_encode($importedEntry));
}
return $importedEntry;
}
}

View file

@ -3,7 +3,6 @@
namespace Wallabag\ImportBundle\Import;
use Wallabag\CoreBundle\Entity\Entry;
use Wallabag\UserBundle\Entity\User;
class ReadabilityImport extends AbstractImport
{
@ -136,31 +135,12 @@ class ReadabilityImport extends AbstractImport
}
/**
* Faster parse entries for Producer.
* We don't care to make check at this time. They'll be done by the consumer.
*
* @param array $entries
* {@inheritdoc}
*/
protected function parseEntriesForProducer($entries)
protected function setEntryAsRead(array $importedEntry)
{
foreach ($entries as $importedEntry) {
// set userId for the producer (it won't know which user is connected)
$importedEntry['userId'] = $this->user->getId();
$importedEntry['archive'] = 1;
if ($this->markAsRead) {
$importedEntry['archive'] = 1;
}
++$this->importedEntries;
// flush every 20 entries
if (($i % 20) === 0) {
$this->em->flush();
}
++$i;
}
$this->em->flush();
$this->em->clear();
return $importedEntry;
}
}

View file

@ -3,11 +3,9 @@
namespace Wallabag\ImportBundle\Import;
use Wallabag\CoreBundle\Entity\Entry;
use Wallabag\UserBundle\Entity\User;
abstract class WallabagImport extends AbstractImport
{
protected $user;
protected $skippedEntries = 0;
protected $importedEntries = 0;
protected $filepath;

View file

@ -57,19 +57,13 @@ class WallabagV1Import extends WallabagImport
return $data;
}
protected function parseEntriesForProducer($entries)
/**
* {@inheritdoc}
*/
protected function setEntryAsRead(array $importedEntry)
{
foreach ($entries as $importedEntry) {
// set userId for the producer (it won't know which user is connected)
$importedEntry['userId'] = $this->user->getId();
$importedEntry['is_read'] = 1;
if ($this->markAsRead) {
$importedEntry['is_read'] = 1;
}
++$this->importedEntries;
$this->producer->publish(json_encode($importedEntry));
}
return $importedEntry;
}
}

View file

@ -40,19 +40,13 @@ class WallabagV2Import extends WallabagImport
] + $entry;
}
protected function parseEntriesForProducer($entries)
/**
* {@inheritdoc}
*/
protected function setEntryAsRead(array $importedEntry)
{
foreach ($entries as $importedEntry) {
// set userId for the producer (it won't know which user is connected)
$importedEntry['userId'] = $this->user->getId();
$importedEntry['is_archived'] = 1;
if ($this->markAsRead) {
$importedEntry['is_archived'] = 1;
}
++$this->importedEntries;
$this->producer->publish(json_encode($importedEntry));
}
return $importedEntry;
}
}