]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Some cleanup & refactor
authorJeremy Benoist <jeremy.benoist@gmail.com>
Mon, 5 Sep 2016 05:50:10 +0000 (07:50 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Sun, 11 Sep 2016 19:58:55 +0000 (21:58 +0200)
src/Wallabag/ImportBundle/Import/AbstractImport.php
src/Wallabag/ImportBundle/Import/PocketImport.php
src/Wallabag/ImportBundle/Import/ReadabilityImport.php
src/Wallabag/ImportBundle/Import/WallabagImport.php
src/Wallabag/ImportBundle/Import/WallabagV1Import.php
src/Wallabag/ImportBundle/Import/WallabagV2Import.php

index 5b9d65d7255d8eac6a3599c138b02c8161131735..b085dc3a65729ce107c9d3f66ea9afaf12d72fc6 100644 (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);
 }
index 06a318136d8bc5695eaa535f1b8acb6fbf9fb0d4..5850debade8e0d17e111b3bb15b2be5a17040de0 100644 (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();
-
-            if ($this->markAsRead) {
-                $importedEntry['status'] = 1;
-            }
+        $importedEntry['status'] = 1;
 
-            ++$this->importedEntries;
-
-            $this->producer->publish(json_encode($importedEntry));
-        }
+        return $importedEntry;
     }
 }
index 18a6631a02dbfb993f66abfde522831f8aec2b02..64ef62bfb77ed79953a4448d51a9510f0812dfd7 100644 (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();
-
-            if ($this->markAsRead) {
-                $importedEntry['archive'] = 1;
-            }
-
-            ++$this->importedEntries;
-
-            // flush every 20 entries
-            if (($i % 20) === 0) {
-                $this->em->flush();
-            }
-            ++$i;
-        }
+        $importedEntry['archive'] = 1;
 
-        $this->em->flush();
-        $this->em->clear();
+        return $importedEntry;
     }
 }
index 6ad14e8cfbc5a70ed07354942a974a628cc1f658..8e18e0ef498a1bff16e430b6380fde3dd4d78c08 100644 (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;
index 8673465219a95035549c3b485521852507548290..292b72a70650b9f51e42d0dd1951825f664e8494 100644 (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;
     }
 }
index faf4236fce3feee1a51bcc4b2ed65a39e51fb22b..37c8ca147940e044a6462e59b27722cf398bc4c9 100644 (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();
-
-            if ($this->markAsRead) {
-                $importedEntry['is_archived'] = 1;
-            }
-
-            ++$this->importedEntries;
+        $importedEntry['is_archived'] = 1;
 
-            $this->producer->publish(json_encode($importedEntry));
-        }
+        return $importedEntry;
     }
 }