Completed
Push — master ( 2a3272...f39d74 )
by Thomas
08:55
created

WikibaseNodeSimplifierFactory   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Test Coverage

Coverage 57.14%

Importance

Changes 16
Bugs 0 Features 2
Metric Value
wmc 7
c 16
b 0
f 2
lcom 1
cbo 9
dl 0
loc 57
ccs 20
cts 35
cp 0.5714
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 1
A newSentenceNodeSimplifier() 0 3 1
A newMeaninglessPredicateTripleNodeSimplifier() 0 8 1
A newMissingObjectTripleNodeSimplifier() 0 6 1
A newMissingSubjectTripleNodeSimplifier() 0 7 1
A newIntersectionWithFilterNodeSimplifier() 0 7 1
A newResourceListNodeParser() 0 4 1
1
<?php
2
3
namespace PPP\Wikidata\TreeSimplifier;
4
5
use DateTime;
6
use PPP\Module\TreeSimplifier\NodeSimplifierFactory;
7
use PPP\Wikidata\ValueParsers\ResourceListNodeParser;
8
use PPP\Wikidata\ValueParsers\WikibaseValueParserFactory;
9
use Wikibase\EntityStore\EntityStore;
10
11
/**
12
 * Build a SentenceTreeSimplifier
13
 *
14
 * @licence GPLv2+
15
 * @author Thomas Pellissier Tanon
16
 *
17
 * @todo tests
18
 */
19
class WikibaseNodeSimplifierFactory extends NodeSimplifierFactory {
20
21
	/**
22
	 * @param EntityStore $entityStore
23
	 * @param string $languageCode
24
	 */
25 1
	public function __construct(EntityStore $entityStore, $languageCode) {
26
		parent::__construct(array(
27 1
			$this->newSentenceNodeSimplifier($entityStore, $languageCode),
28 1
			$this->newMeaninglessPredicateTripleNodeSimplifier($entityStore, $languageCode),
29 1
			$this->newMissingObjectTripleNodeSimplifier($entityStore, $languageCode),
30 1
			$this->newMissingSubjectTripleNodeSimplifier($entityStore, $languageCode),
31 1
			$this->newIntersectionWithFilterNodeSimplifier($entityStore, $languageCode)
32
		));
33
	}
34
35 1
	private function newSentenceNodeSimplifier(EntityStore $entityStore, $languageCode) {
36
		return new SentenceNodeSimplifier($this->newResourceListNodeParser($entityStore, $languageCode));
37 1
	}
38
39 1
	private function newMeaninglessPredicateTripleNodeSimplifier(EntityStore $entityStore, $languageCode) {
40
		date_default_timezone_set('UTC');
41
		return new SpecificTripleNodeSimplifier(
42 1
			$this->newResourceListNodeParser($entityStore, $languageCode),
43
			new ResourceListForEntityProperty($entityStore),
44
			new DateTime()
45
		);
46 1
	}
47
48 1
	private function newMissingObjectTripleNodeSimplifier(EntityStore $entityStore, $languageCode) {
49
		return new MissingObjectTripleNodeSimplifier(
50 1
			$this->newResourceListNodeParser($entityStore, $languageCode),
51
			new ResourceListForEntityProperty($entityStore)
52
		);
53 1
	}
54
55 1
	private function newMissingSubjectTripleNodeSimplifier(EntityStore $entityStore, $languageCode) {
56
		return new MissingSubjectTripleNodeSimplifier(
57
			$this,
58
			$entityStore,
59 1
			$this->newResourceListNodeParser($entityStore, $languageCode)
60
		);
61 1
	}
62
63 1
	private function newIntersectionWithFilterNodeSimplifier(EntityStore $entityStore, $languageCode) {
64
		return new IntersectionWithFilterNodeSimplifier(
65
			$this,
66
			$entityStore,
67 1
			$this->newResourceListNodeParser($entityStore, $languageCode)
68
		);
69 1
	}
70
71
	private function newResourceListNodeParser(EntityStore $entityStore, $languageCode) {
72
		$parserFactory = new WikibaseValueParserFactory($languageCode, $entityStore);
73
		return new ResourceListNodeParser($parserFactory->newWikibaseValueParser());
74
	}
75
}
76