diff -r 93234b0b12f3 -r e550b10fe3ca server/src/app/Repositories/RdfDocumentRepository.php --- 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; + } + + }