ModuleRequestDeserializer   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 3
Bugs 0 Features 2
Metric Value
wmc 10
c 3
b 0
f 2
lcom 1
cbo 3
dl 0
loc 39
ccs 0
cts 20
cp 0
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A isValidDeserialization() 0 6 4
A deserialize() 0 7 2
A getDeserialized() 0 9 3
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