DeserializerFactory   B
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 16

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 16
dl 0
loc 52
c 0
b 0
f 0
ccs 31
cts 31
cp 1
rs 8.4614

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A buildNodeDeserializer() 0 15 1
A buildResourceNodeDeserializer() 0 14 1
A newNodeDeserializer() 0 3 1
1
<?php
2
3
namespace PPP\DataModel;
4
5
use Deserializers\Deserializer;
6
use Deserializers\DispatchingDeserializer;
7
use PPP\DataModel\Deserializers\BooleanResourceNodeDeserializer;
8
use PPP\DataModel\Deserializers\FirstNodeDeserializer;
9
use PPP\DataModel\Deserializers\IntersectionNodeDeserializer;
10
use PPP\DataModel\Deserializers\JsonLdResourceNodeDeserializer;
11
use PPP\DataModel\Deserializers\LastNodeDeserializer;
12
use PPP\DataModel\Deserializers\MissingNodeDeserializer;
13
use PPP\DataModel\Deserializers\ResourceAsResourceListNodeDeserializer;
14
use PPP\DataModel\Deserializers\ResourceListNodeDeserializer;
15
use PPP\DataModel\Deserializers\SentenceNodeDeserializer;
16
use PPP\DataModel\Deserializers\SortNodeDeserializer;
17
use PPP\DataModel\Deserializers\StringResourceNodeDeserializer;
18
use PPP\DataModel\Deserializers\TimeResourceNodeDeserializer;
19
use PPP\DataModel\Deserializers\TripleNodeDeserializer;
20
use PPP\DataModel\Deserializers\UnionNodeDeserializer;
21
use PPP\DataModel\Deserializers\UnknownResourceNodeDeserializer;
22
23
/**
24
 * @licence AGPLv3+
25
 * @author Thomas Pellissier Tanon
26
 */
27
class DeserializerFactory {
28
29
	/**
30
	 * @var Deserializer
31
	 */
32
	private $nodeDeserializer = null;
33
34
	/**
35
	 * @param Deserializer[] $customResourceNodesDeserializers
36
	 */
37 1
	public function __construct(array $customResourceNodesDeserializers = array()) {
38 1
		$this->nodeDeserializer = $this->buildNodeDeserializer($customResourceNodesDeserializers);
39 1
	}
40
41 1
	private function buildNodeDeserializer(array $customResourceNodesDeserializers) {
42 1
		$resourceNodeDeserializer = $this->buildResourceNodeDeserializer($customResourceNodesDeserializers);
43 1
		return new DispatchingDeserializer(array(
44 1
			new MissingNodeDeserializer(),
45 1
			new TripleNodeDeserializer($this),
46 1
			new UnionNodeDeserializer($this),
47 1
			new IntersectionNodeDeserializer($this),
48 1
			new FirstNodeDeserializer($this),
49 1
			new LastNodeDeserializer($this),
50 1
			new SentenceNodeDeserializer(),
51 1
			new SortNodeDeserializer($this, $resourceNodeDeserializer),
52 1
			new ResourceListNodeDeserializer($resourceNodeDeserializer),
53 1
			new ResourceAsResourceListNodeDeserializer($resourceNodeDeserializer)
54 1
		));
55
	}
56
57 1
	private function buildResourceNodeDeserializer(array $customResourceNodesDeserializers) {
58 1
		return new DispatchingDeserializer(
59 1
			array_merge(
60 1
				$customResourceNodesDeserializers,
61
				array(
62 1
					new BooleanResourceNodeDeserializer(),
63 1
					new StringResourceNodeDeserializer(),
64 1
					new TimeResourceNodeDeserializer(),
65 1
					new JsonLdResourceNodeDeserializer(),
66 1
					new UnknownResourceNodeDeserializer()
67 1
				)
68 1
			)
69 1
		);
70
	}
71
72
	/**
73
	 * @return Deserializer
74
	 */
75 1
	public function newNodeDeserializer() {
76 1
		return $this->nodeDeserializer;
77
	}
78
}
79