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

LegacyDeserializerFactory   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 104
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Test Coverage

Coverage 94.12%

Importance

Changes 0
Metric Value
wmc 11
lcom 1
cbo 9
dl 0
loc 104
ccs 32
cts 34
cp 0.9412
rs 10
c 0
b 0
f 0

11 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A newEntityDeserializer() 0 6 1
A newItemDeserializer() 0 8 1
A newPropertyDeserializer() 0 6 1
A newEntityIdDeserializer() 0 3 1
A newTermsDeserializer() 0 3 1
A newSiteLinkListDeserializer() 0 3 1
A newStatementDeserializer() 0 6 1
A newSnakListDeserializer() 0 3 1
A newSnakDeserializer() 0 3 1
A newClaimDeserializer() 0 3 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