Completed
Push — master ( 159932...f1c264 )
by Thomas
08:09
created

AbstractActionGenerator::generateClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 1
eloc 8
nc 1
nop 1
1
<?php
2
namespace keeko\tools\generator\action;
3
4
use gossi\codegen\model\PhpClass;
5
use gossi\codegen\model\PhpMethod;
6
use gossi\codegen\model\PhpParameter;
7
use keeko\tools\generator\AbstractCodeGenerator;
8
use keeko\framework\schema\ActionSchema;
9
10
class AbstractActionGenerator extends AbstractCodeGenerator {
11
12
	protected function getTemplateFolder() {
13
		return 'action';
14
	}
15
	
16
	/**
17
	 * Generates the basic class
18
	 * 
19
	 * @param ActionSchema $action
20
	 * @return PhpClass
21
	 */
22
	protected function generateClass(ActionSchema $action) {
23
		$class = PhpClass::create($action->getClass());
24
		$class->setDescription($action->getTitle());
25
		$class->setLongDescription($action->getDescription() . "\n\n".
26
			'This code is automatically created. Modifications will probably be overwritten.');
27
		$this->codegenService->addAuthors($class);
28
		$this->ensureBasicSetup($class);
29
		
30
		return $class;
31
	}
32
	
33
	protected function generateRunMethod($body = '') {
34
		return PhpMethod::create('run')
35
			->setDescription('Automatically generated run method')
36
			->setType('Response')
37
			->addParameter(PhpParameter::create('request')->setType('Request'))
38
			->setBody($body);
39
	}
40
41
	protected function addConfigureParamsMethod(PhpClass $class, $body = '') {
42
		$class->addUseStatement('Symfony\\Component\\OptionsResolver\\OptionsResolver');
43
		$class->setMethod(PhpMethod::create('configureParams')
44
			->addParameter(PhpParameter::create('resolver')->setType('OptionsResolver'))
45
			->setBody($body)
46
		);
47
	}
48
	
49
	protected function ensureUseStatements(PhpClass $class) {
50
		$class->addUseStatement('keeko\\framework\\foundation\\AbstractAction');
51
		$class->addUseStatement('Symfony\\Component\\HttpFoundation\\Request');
52
		$class->addUseStatement('Symfony\\Component\\HttpFoundation\\Response');
53
	}
54
	
55
	protected function ensureBasicSetup(PhpClass $class) {
56
		$this->ensureUseStatements($class);
57
		$class->setParentClassName('AbstractAction');
58
	}
59
60
}
61