EntitySerializationFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 5
Bugs 0 Features 1
Metric Value
wmc 3
c 5
b 0
f 1
lcom 0
cbo 7
dl 0
loc 34
ccs 19
cts 19
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A newEntityDeserializer() 0 4 1
A newEntitySerializer() 0 7 1
A newDataValueDeserializer() 0 12 1
1
<?php
2
3
namespace Wikibase\EntityStore\Internal;
4
5
use DataValues\Deserializers\DataValueDeserializer;
6
use DataValues\Serializers\DataValueSerializer;
7
use Deserializers\Deserializer;
8
use Serializers\DispatchingSerializer;
9
use Serializers\Serializer;
10
use Wikibase\DataModel\DeserializerFactory;
11
use Wikibase\DataModel\Entity\BasicEntityIdParser;
12
use Wikibase\DataModel\SerializerFactory;
13
use Wikibase\EntityStore\DataModel\Serializers\SerializedEntitySerializer;
14
15
/**
16
 * Internal class
17
 *
18
 * @licence GPLv2+
19
 * @author Thomas Pellissier Tanon
20
 */
21
class EntitySerializationFactory {
22
23
	/**
24
	 * @return Serializer
25
	 */
26 2
	public function newEntitySerializer() {
27 2
		$factory = new SerializerFactory( new DataValueSerializer() );
28 2
		return new DispatchingSerializer( [
29 2
			new SerializedEntitySerializer(),
30 2
			$factory->newEntitySerializer(),
31 2
		] );
32
	}
33
34
	/**
35
	 * @return Deserializer
36
	 */
37 3
	public function newEntityDeserializer() {
38 3
		$factory = new DeserializerFactory( $this->newDataValueDeserializer(), new BasicEntityIdParser() );
39 3
		return $factory->newEntityDeserializer();
40
	}
41
42 3
	private function newDataValueDeserializer() {
43 3
		return new DataValueDeserializer( [
44 3
			'number' => 'DataValues\NumberValue',
45 3
			'string' => 'DataValues\StringValue',
46 3
			'globecoordinate' => 'DataValues\GlobeCoordinateValue',
47 3
			'monolingualtext' => 'DataValues\MonolingualTextValue',
48 3
			'multilingualtext' => 'DataValues\MultilingualTextValue',
49 3
			'quantity' => 'DataValues\QuantityValue',
50 3
			'time' => 'DataValues\TimeValue',
51
			'wikibase-entityid' => 'Wikibase\DataModel\Entity\EntityIdValue'
52 3
		] );
53
	}
54
}
55