/** * @since 2.3 * * @param array $idList * * @return DIWikiPage[] */ public function getDataItemPoolHashListFor(array $idList) { $rows = $this->connection->select(\SMWSQLStore3::ID_TABLE, array('smw_title', 'smw_namespace', 'smw_iw', 'smw_subobject'), array('smw_id' => $idList), __METHOD__); $resultIterator = $this->iteratorFactory->newResultIterator($rows); $mappingIterator = $this->iteratorFactory->newMappingIterator($resultIterator, function ($row) { return HashBuilder::createHashIdFromSegments($row->smw_title, $row->smw_namespace, $row->smw_iw, $row->smw_subobject); }); return $mappingIterator; }
public function testCanConstructMappingIterator() { $instance = new IteratorFactory(); $iterator = $this->getMockBuilder('\\Iterator')->disableOriginalConstructor()->getMock(); $this->assertInstanceOf('\\SMW\\Iterators\\MappingIterator', $instance->newMappingIterator($iterator, function () { })); }
/** * Fetch all subobjects for a given subject using a lazy-mapping iterator * in order to only resolve one subobject per iteration step. * * @since 2.5 * * @param DIWikiPage $subject * * @return MappingIterator */ private function newMappingIterator(DIWikiPage $subject) { $callback = function ($row) use($subject) { // #1955 if ($subject->getNamespace() === SMW_NS_PROPERTY) { $property = new DIProperty($subject->getDBkey()); $subobject = $property->getCanonicalDiWikiPage($row->smw_subobject); } else { $subobject = new DIWikiPage($subject->getDBkey(), $subject->getNamespace(), $subject->getInterwiki(), $row->smw_subobject); } $subobject->setSortKey($row->smw_sortkey); $subobject->setId($row->smw_id); return $subobject; }; return $this->iteratorFactory->newMappingIterator($this->newResultIterator($subject), $callback); }