isValidDeserialization()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 6
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
ccs 0
cts 5
cp 0
rs 9.2
cc 4
eloc 5
nc 4
nop 1
crap 20
1
<?php
2
3
namespace PPP\Module\DataModel\Deserializers;
4
5
use Deserializers\Deserializer;
6
use Deserializers\Exceptions\DeserializationException;
7
use PPP\Module\DataModel\ModuleRequest;
8
9
/**
10
 * @licence MIT
11
 * @author Thomas Pellissier Tanon
12
 */
13
class ModuleRequestDeserializer implements Deserializer {
14
15
	/**
16
	 * @var Deserializer
17
	 */
18
	private $nodeDeserializer;
19
20
	public function __construct(Deserializer $nodeDeserializer) {
21
		$this->nodeDeserializer = $nodeDeserializer;
22
	}
23
	
24
	/**
25
	 * @see Deserializer::serialize
26
	 */
27
	public function deserialize($serialization) {
28
		if(!$this->isValidDeserialization($serialization)) {
29
			throw new DeserializationException('The serialization is invalid!');
30
		}
31
32
		return $this->getDeserialized($serialization);
33
	}
34
35
	private function getDeserialized($serialization) {
36
		return new ModuleRequest(
37
			$serialization['language'],
38
			$this->nodeDeserializer->deserialize($serialization['tree']),
39
			$serialization['id'],
40
			array_key_exists('measures', $serialization) ? $serialization['measures'] : array(),
41
			array_key_exists('trace', $serialization) ? $serialization['trace'] : array()
42
		);
43
	}
44
45
	private function isValidDeserialization($serialization) {
46
		return is_array($serialization) &&
47
			array_key_exists('language', $serialization) &&
48
			array_key_exists('tree', $serialization) &&
49
			array_key_exists('id', $serialization);
50
	}
51
}
52