buildResourceNodeDeserializer()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 14
c 0
b 0
f 0
ccs 12
cts 12
cp 1
rs 9.4285
nc 1
cc 1
eloc 10
nop 1
crap 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