Completed
Push — master ( 56265b...886536 )
by Thomas
09:04
created

ActionSerializerGenerator::generate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 9
rs 9.6666
cc 1
eloc 6
nc 1
nop 1
1
<?php
2
namespace keeko\tools\generator\serializer;
3
4
use gossi\codegen\model\PhpClass;
5
use keeko\framework\schema\ActionSchema;
6
use keeko\tools\generator\serializer\AbstractSerializerGenerator;
7
use gossi\codegen\model\PhpMethod;
8
use gossi\codegen\model\PhpParameter;
9
10
class ActionSerializerGenerator extends AbstractSerializerGenerator {
11
	
12
	public function generate(ActionSchema $action) {
13
		$class = new PhpClass(str_replace(['Action', 'action'], ['Serializer', 'serializer'], $action->getClass()));
14
		$class->setParentClassName('AbstractSerializer');
15
		$class->addUseStatement('keeko\\framework\\model\\AbstractSerializer');
16
		
17
		$this->generateIdentifyingMethods($class);
18
		
19
		return $class;
20
	}
21
	
22
	protected function generateIdentifyingMethods(PhpClass $class) {
23
		if (!$class->hasMethod('getType')) {
24
			$class->setMethod(PhpMethod::create('getType')
25
				->addParameter(PhpParameter::create('model'))
26
				->setBody($this->twig->render('getType.twig', [
27
					'type' => '@TODO'
28
				]))
29
			);
30
		}
31
		
32
		if (!$class->hasMethod('getId')) {
33
			$class->setMethod(PhpMethod::create('getId')
34
				->addParameter(PhpParameter::create('model'))
35
				->setBody($this->twig->render('getId.twig'))
36
			);
37
		}
38
	}
39
	
40
}