/**
  * @dataProvider aspectKeyProvider
  */
 public function testSplitAspectKey($aspectKey, array $expectedParts)
 {
     $parts = EntityUsage::splitAspectKey($aspectKey);
     $this->assertEquals($expectedParts, $parts);
 }
 /**
  * @param Title[] $titles
  * @param EntityId $entityId
  * @param string[] $aspects
  *
  * @return PageEntityUsages[]
  */
 private function makeVirtualUsages(array $titles, EntityId $entityId, array $aspects)
 {
     $usagesForItem = array();
     foreach ($aspects as $aspect) {
         list($aspect, $modifier) = EntityUsage::splitAspectKey($aspect);
         $usagesForItem[] = new EntityUsage($entityId, $aspect, $modifier);
     }
     $usagesPerPage = array();
     foreach ($titles as $title) {
         $pageId = $title->getArticleID();
         if ($pageId === 0) {
             wfDebugLog('WikibaseChangeNotification', __METHOD__ . ': Article ID for ' . $title->getFullText() . ' is 0.');
             continue;
         }
         $usagesPerPage[$pageId] = new PageEntityUsages($pageId, $usagesForItem);
     }
     return $usagesPerPage;
 }
 /**
  * @param Traversable $rows
  *
  * @return PageEntityUsages[]
  */
 private function foldRowsIntoPageEntityUsages(Traversable $rows)
 {
     $usagesPerPage = array();
     foreach ($rows as $row) {
         $pageId = (int) $row->eu_page_id;
         if (isset($usagesPerPage[$pageId])) {
             $pageEntityUsages = $usagesPerPage[$pageId];
         } else {
             $pageEntityUsages = new PageEntityUsages($pageId);
         }
         $entityId = $this->idParser->parse($row->eu_entity_id);
         list($aspect, $modifier) = EntityUsage::splitAspectKey($row->eu_aspect);
         $usage = new EntityUsage($entityId, $aspect, $modifier);
         $pageEntityUsages->addUsages(array($usage));
         $usagesPerPage[$pageId] = $pageEntityUsages;
     }
     return $usagesPerPage;
 }
 /**
  * @param EntityId $entityId
  * @param string[] $aspects (may have modifiers applied)
  *
  * @return EntityUsage[]
  */
 private function buildEntityUsages(EntityId $entityId, array $aspects)
 {
     $usages = array();
     foreach ($aspects as $aspect) {
         list($aspect, $modifier) = EntityUsage::splitAspectKey($aspect);
         $entityUsage = new EntityUsage($entityId, $aspect, $modifier);
         $key = $entityUsage->getIdentityString();
         $usages[$key] = $entityUsage;
     }
     ksort($usages);
     return $usages;
 }