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

newMissingObjectTripleNodeSimplifier()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1.064

Importance

Changes 5
Bugs 0 Features 0
Metric Value
c 5
b 0
f 0
dl 0
loc 6
ccs 3
cts 5
cp 0.6
rs 9.4285
cc 1
eloc 4
nc 1
nop 2
crap 1.064
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