/** * @param integer $offset Start to include at number of entries from the start title * @param integer $limit Stop at number of entries after start of inclusion * * @return PropertyId[] */ protected function getResult($offset = 0, $limit = 0) { $propertyInfo = array_slice($this->getPropertyInfo(), $offset, $limit, true); $propertyIds = array(); foreach ($propertyInfo as $numericId => $info) { $propertyIds[] = PropertyId::newFromNumber($numericId); } $this->bufferingTermLookup->prefetchTerms($propertyIds); return $propertyIds; }
public function testGetLabels_prefetch() { $termIndex = $this->getRestrictedTermIndex(1, 1); $lookup = new BufferingTermLookup($termIndex, 10); // This should trigger a call to getTermsOfEntities $q116 = new ItemId('Q123'); $lookup->prefetchTerms(array($q116), array('label'), array('en', 'de')); // This should trigger no call to the TermIndex $expected = array('de' => 'Wien'); $this->assertEquals($expected, $lookup->getLabels($q116, array('de'))); // This should trigger a call to getTermsOfEntity $expected = array('de' => 'Wien', 'en' => 'Vienna', 'fr' => 'Vienne'); $this->assertEquals($expected, $lookup->getLabels($q116, array('de', 'en', 'fr'))); // This should trigger no more calls, since all languages are in the buffer now. $expected = array('de' => 'Wien', 'fr' => 'Vienne'); $this->assertEquals($expected, $lookup->getLabels($q116, array('de', 'fr'))); }
/** * @param EntityId[] $entityIds */ private function preFetchLabelsAndDescriptionsForDisplay(array $entityIds) { $this->bufferingTermLookup->prefetchTerms($entityIds, array(TermIndexEntry::TYPE_LABEL, TermIndexEntry::TYPE_DESCRIPTION), $this->addFallbackLanguageCodes(array($this->displayLanguageCode))); }