Passed
Push — dm8 ( 3ab6b3 )
by Jeroen De
08:31
created

LegacyDeserializerFactory::newTermsDeserializer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Wikibase\InternalSerialization;
4
5
use Deserializers\Deserializer;
6
use Deserializers\DispatchableDeserializer;
7
use Wikibase\DataModel\Entity\EntityIdParser;
8
use Wikibase\InternalSerialization\Deserializers\LegacyEntityDeserializer;
9
use Wikibase\InternalSerialization\Deserializers\LegacyEntityIdDeserializer;
10
use Wikibase\InternalSerialization\Deserializers\LegacyFingerprintDeserializer;
11
use Wikibase\InternalSerialization\Deserializers\LegacyItemDeserializer;
12
use Wikibase\InternalSerialization\Deserializers\LegacyPropertyDeserializer;
13
use Wikibase\InternalSerialization\Deserializers\LegacySiteLinkListDeserializer;
14
use Wikibase\InternalSerialization\Deserializers\LegacySnakDeserializer;
15
use Wikibase\InternalSerialization\Deserializers\LegacySnakListDeserializer;
16
use Wikibase\InternalSerialization\Deserializers\LegacyStatementDeserializer;
17
18
/**
19
 * Factory for constructing deserializers that implement handling for the legacy format.
20
 *
21
 * @since 1.0
22
 *
23
 * @license GPL-2.0+
24
 * @author Jeroen De Dauw < [email protected] >
25
 */
26
class LegacyDeserializerFactory {
27
28
	/**
29
	 * @var Deserializer
30
	 */
31
	private $dataValueDeserializer;
32
33
	/**
34
	 * @var EntityIdParser
35
	 */
36
	private $idParser;
37
38 2
	public function __construct( Deserializer $dataValueDeserializer, EntityIdParser $idParser ) {
39 2
		$this->dataValueDeserializer = $dataValueDeserializer;
40 2
		$this->idParser = $idParser;
41 2
	}
42
43
	/**
44
	 * @return DispatchableDeserializer
45
	 */
46 1
	public function newEntityDeserializer() {
47 1
		return new LegacyEntityDeserializer(
48 1
			$this->newItemDeserializer(),
49 1
			$this->newPropertyDeserializer()
50
		);
51
	}
52
53
	/**
54
	 * @return Deserializer
55
	 */
56 1
	private function newItemDeserializer() {
57 1
		return new LegacyItemDeserializer(
58 1
			$this->newEntityIdDeserializer(),
59 1
			$this->newSiteLinkListDeserializer(),
60 1
			$this->newStatementDeserializer(),
61 1
			$this->newTermsDeserializer()
62
		);
63
	}
64
65
	/**
66
	 * @return Deserializer
67
	 */
68 1
	private function newPropertyDeserializer() {
69 1
		return new LegacyPropertyDeserializer(
70 1
			$this->newEntityIdDeserializer(),
71 1
			$this->newTermsDeserializer()
72
		);
73
	}
74
75
	/**
76
	 * @return Deserializer
77
	 */
78 1
	private function newEntityIdDeserializer() {
79 1
		return new LegacyEntityIdDeserializer( $this->idParser );
80
	}
81
82
	/**
83
	 * @return Deserializer
84
	 */
85 1
	private function newTermsDeserializer() {
86 1
		return new LegacyFingerprintDeserializer();
87
	}
88
89
	/**
90
	 * @return Deserializer
91
	 */
92 1
	private function newSiteLinkListDeserializer() {
93 1
		return new LegacySiteLinkListDeserializer();
94
	}
95
96
	/**
97
	 * @deprecated since 1.4 - use newStatementDeserializer instead
98
	 *
99
	 * @return Deserializer
100
	 */
101
	public function newClaimDeserializer() {
102
		return $this->newStatementDeserializer();
103
	}
104
105
	/**
106
	 * @return DispatchableDeserializer
107
	 */
108 1
	public function newStatementDeserializer() {
109 1
		return new LegacyStatementDeserializer(
110 1
			$this->newSnakDeserializer(),
111 1
			$this->newSnakListDeserializer()
112
		);
113
	}
114
115
	/**
116
	 * @return Deserializer
117
	 */
118 1
	public function newSnakListDeserializer() {
119 1
		return new LegacySnakListDeserializer( $this->newSnakDeserializer() );
120
	}
121
122
	/**
123
	 * @return Deserializer
124
	 */
125 2
	public function newSnakDeserializer() {
126 2
		return new LegacySnakDeserializer( $this->dataValueDeserializer );
127
	}
128
129
}
130