Completed
Push — master ( f1c264...f58245 )
by Thomas
04:22
created

ModelSerializerGenerator   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
c 1
b 0
f 0
lcom 1
cbo 3
dl 0
loc 33
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A generate() 0 8 1
A ensureBasicSetup() 0 4 1
A ensureUseStatements() 0 5 1
A getClassName() 0 4 1
A ensureDomainTrait() 0 5 1
1
<?php
2
namespace keeko\tools\generator\serializer;
3
4
use gossi\codegen\model\PhpClass;
5
use Propel\Generator\Model\Table;
6
7
class ModelSerializerGenerator extends AbstractSerializerGenerator {
8
	
9
	public function generate(Table $model) {
10
		$class = $this->generateClass($this->getClassName($model));
11
		$class = $this->loadClass($class);
12
		$this->ensureBasicSetup($class);
13
		$this->ensureDomainTrait($class, $model);
14
		
15
		return $class;
16
	}
17
	
18
	protected function ensureBasicSetup(PhpClass $class) {
19
		parent::ensureBasicSetup($class);
20
		$class->setParentClassName('AbstractModelSerializer');
21
	}
22
	
23
	protected function ensureUseStatements(PhpClass $class) {
24
		parent::ensureUseStatements($class);
25
		$class->removeUseStatement('keeko\\framework\\model\\AbstractSerializer');
26
		$class->addUseStatement('keeko\\framework\\model\\AbstractModelSerializer');
27
	}
28
	
29
	protected function getClassName(Table $model) {
30
		return str_replace('model', 'serializer', $model->getNamespace()) . 
31
			'\\' . $model->getPhpName() . 'Serializer';
32
	}
33
34
	protected function ensureDomainTrait(PhpClass $class, Table $model) {
35
		$class->addUseStatement(str_replace('model', 'serializer\\base', $model->getNamespace()) . 
36
			'\\' . $model->getPhpName() . 'SerializerTrait');
37
		$class->addTrait($model->getPhpName() . 'SerializerTrait');
38
	}
39
}