SimpleItemBuilder   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 12
lcom 1
cbo 5
dl 0
loc 74
ccs 42
cts 42
cp 1
rs 10
c 0
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A buildFromItem() 0 14 1
A addIdLinks() 0 5 1
A addIdLinkForLanguage() 0 7 2
A addLabel() 0 5 2
A addDescription() 0 5 2
A addAliases() 0 5 2
A addStatements() 0 3 1
1
<?php
2
3
namespace Queryr\Resources\Builders;
4
5
use Queryr\Resources\SimpleItem;
6
use Wikibase\DataModel\Entity\Item;
7
8
/**
9
 * @licence GNU GPL v2+
10
 * @author Jeroen De Dauw < [email protected] >
11
 */
12
class SimpleItemBuilder {
13
14
	const MAIN_LANGUAGE = 'en';
15
16
	private $languageCode;
17
	private $statementsBuilder;
18
19
	/**
20
	 * @var Item
21
	 */
22
	private $item;
23
24
	/**
25
	 * @var SimpleItem
26
	 */
27
	private $simpleItem;
28
29 3
	public function __construct( $languageCode, SimpleStatementsBuilder $statementsBuilder ) {
30 3
		$this->languageCode = $languageCode;
31 3
		$this->statementsBuilder = $statementsBuilder;
32 3
	}
33
34 3
	public function buildFromItem( Item $item ) {
35 3
		$this->item = $item;
36 3
		$this->simpleItem = new SimpleItem();
37
38 3
		$this->addIdLinks();
39
40 3
		$this->addLabel();
41 3
		$this->addDescription();
42 3
		$this->addAliases();
43
44 3
		$this->addStatements();
45
46 3
		return $this->simpleItem;
47
	}
48
49 3
	private function addIdLinks() {
50 3
		$this->simpleItem->ids['wikidata'] = $this->item->getId()->getSerialization();
51 3
		$this->addIdLinkForLanguage( self::MAIN_LANGUAGE );
52 3
		$this->addIdLinkForLanguage( $this->languageCode );
53 3
	}
54
55 3
	private function addIdLinkForLanguage( $languageCode ) {
56 3
		$links = $this->item->getSiteLinkList();
57
58 3
		if ( $links->hasLinkWithSiteId( $languageCode . 'wiki' ) ) {
59 3
			$this->simpleItem->ids[$languageCode . '_wikipedia'] = $links->getBySiteId( $languageCode . 'wiki' )->getPageName();
60 3
		}
61 3
	}
62
63 3
	private function addLabel() {
64 3
		if ( $this->item->getFingerprint()->getLabels()->hasTermForLanguage( $this->languageCode ) ) {
65 3
			$this->simpleItem->label = $this->item->getFingerprint()->getLabel( $this->languageCode )->getText();
66 3
		}
67 3
	}
68
69 3
	private function addDescription() {
70 3
		if ( $this->item->getFingerprint()->getDescriptions()->hasTermForLanguage( $this->languageCode ) ) {
71 1
			$this->simpleItem->description = $this->item->getFingerprint()->getDescription( $this->languageCode )->getText();
72 1
		}
73 3
	}
74
75 3
	private function addAliases() {
76 3
		if ( $this->item->getFingerprint()->getAliasGroups()->hasGroupForLanguage( $this->languageCode ) ) {
77 2
			$this->simpleItem->aliases = $this->item->getFingerprint()->getAliasGroup( $this->languageCode )->getAliases();
78 2
		}
79 3
	}
80
81 3
	private function addStatements() {
82 3
		$this->simpleItem->statements = $this->statementsBuilder->buildFromStatements( $this->item->getStatements() );
83 3
	}
84
85
}
86