server/src/app/Repositories/RdfDocumentRepository.php
changeset 125 e550b10fe3ca
parent 122 b37fde30dd4a
child 168 17f10b56c079
--- a/server/src/app/Repositories/RdfDocumentRepository.php	Fri Feb 12 23:46:15 2016 +0100
+++ b/server/src/app/Repositories/RdfDocumentRepository.php	Fri Feb 19 21:18:12 2016 +0100
@@ -7,6 +7,7 @@
 use CorpusParole\Models\Document;
 use CorpusParole\Libraries\CorpusParoleException;
 use CorpusParole\Libraries\Sparql\SparqlClient;
+use CorpusParole\Services\LexvoResolverInterface;
 
 use EasyRdf\Graph;
 
@@ -20,9 +21,11 @@
 class RdfDocumentRepository implements DocumentRepository {
 
     private $sparqlClient;
+    private $lexvoResolver;
 
-    public function __construct(SparqlClient $sparqlClient) {
+    public function __construct(SparqlClient $sparqlClient, LexvoResolverInterface $lexvoResolver) {
         $this->sparqlClient = $sparqlClient;
+        $this->lexvoResolver = $lexvoResolver;
     }
 
     public function getSparqlClient() {
@@ -168,5 +171,33 @@
         ]);
     }
 
+    /**
+     * Resolve lexvo id for all documents in the list
+     * this allow to optimise the call of lexvo repository
+     * @param $docList Array: a list (Array) of document to resolve
+     */
+    public function resolveLexvo(Array $docList) {
+
+        $languageIds = [];
+        #get the list pf language needing resolving
+        foreach ($docList as $doc) {
+            if($doc->getLanguageValue() && is_null($doc->getLanguageResolved())) {
+                $languageIds[$doc->getLanguageValue()] = true;
+            }
+        }
+
+        # call LexvoResolver
+        $langNames = $this->lexvoResolver->getNames(array_keys($languageIds));
+
+        foreach ($docList as $doc) {
+            if($doc->getLanguageValue() && is_null($doc->getLanguageResolved())) {
+                $doc->setLanguageResolved($langNames[$doc->getLanguageValue()]);
+            }
+        }
+
+        return $docList;
+    }
+
+
 
 }