Completed
Push — inject-entity-deserializer ( 77729f )
by Bene
04:12
created

LegacyDeserializerFactory::newClaimDeserializer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

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