Completed
Push — master ( 2bdad3...069cad )
by Mikaël
44:23 queued 21:55
created

GeneratorFiles::generateTutorialFile()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 6
cts 6
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 5
nc 2
nop 0
crap 3
1
<?php
2
3
namespace WsdlToPhp\PackageGenerator\Generator;
4
5
use WsdlToPhp\PackageGenerator\Model\Struct as StructModel;
6
use WsdlToPhp\PackageGenerator\Model\EmptyModel;
7
use WsdlToPhp\PackageGenerator\File\Struct as StructFile;
8
use WsdlToPhp\PackageGenerator\File\StructArray as StructArrayFile;
9
use WsdlToPhp\PackageGenerator\File\StructEnum as StructEnumFile;
10
use WsdlToPhp\PackageGenerator\File\Service as ServiceFile;
11
use WsdlToPhp\PackageGenerator\File\Tutorial as TutorialFile;
12
use WsdlToPhp\PackageGenerator\File\ClassMap as ClassMapFile;
13
use WsdlToPhp\PackageGenerator\File\Composer as ComposerFile;
14
15
class GeneratorFiles extends AbstractGeneratorAware
16
{
17
    /**
18
     * Use classmap file object
19
     * @var ClassMapFile
20
     */
21
    private $classmapFile;
22
    /**
23
     * @return ClassMapFile
24
     */
25 65
    public function getClassmapFile()
26
    {
27 65
        if (!isset($this->classmapFile)) {
28 65
            $classMapModel = new EmptyModel($this->generator, 'ClassMap');
29 65
            $classMap = new ClassMapFile($this->generator, $classMapModel->getPackagedName());
30 65
            $classMap->setModel($classMapModel);
31 65
            $this->classmapFile = $classMap;
32 39
        }
33 65
        return $this->classmapFile;
34
    }
35
    /**
36
     * @return GeneratorFiles
37
     */
38 30
    public function doGenerate()
39
    {
40 30
        return $this->generateStructsClasses()
41 30
            ->generateServicesClasses()
42 30
            ->generateClassMap()
43 30
            ->generateTutorialFile()
44 30
            ->generateComposerFile();
45
    }
46
    /**
47
     * Generates structs classes based on structs collected
48
     * @return GeneratorFiles
49
     */
50 30
    protected function generateStructsClasses()
51
    {
52 30
        foreach ($this->getGenerator()->getStructs() as $struct) {
53 30
            if (!$struct->isStruct()) {
54 20
                continue;
55
            }
56 30
            $this->getStructFile($struct)->setModel($struct)->write();
57 18
        }
58 30
        return $this;
59
    }
60
    /**
61
     * @param StructModel $struct
62
     * @return StructEnumFile|StructArrayFile|StructFile
63
     */
64 30
    protected function getStructFile(StructModel $struct)
65
    {
66 30
        if ($struct->isRestriction()) {
67 30
            $file = new StructEnumFile($this->generator, $struct->getPackagedName());
68 30
        } elseif ($struct->isArray()) {
69 15
            $file = new StructArrayFile($this->generator, $struct->getPackagedName());
70 9
        } else {
71 30
            $file = new StructFile($this->generator, $struct->getPackagedName());
72
        }
73 30
        return $file;
74
    }
75
    /**
76
     * Generates methods by class
77
     * @return GeneratorFiles
78
     */
79 30
    protected function generateServicesClasses()
80
    {
81 30
        foreach ($this->getGenerator()->getServices(true) as $service) {
82 30
            $file = new ServiceFile($this->generator, $service->getPackagedName());
83 30
            $file->setModel($service)->write();
84 18
        }
85 30
        return $this;
86
    }
87
    /**
88
     * Generates classMap class
89
     * @return GeneratorFiles
90
     */
91 30
    protected function generateClassMap()
92
    {
93 30
        $this->getClassmapFile()->write();
94 30
        return $this;
95
    }
96
    /**
97
     * Generates tutorial file
98
     * @return GeneratorFiles
99
     */
100 30
    protected function generateTutorialFile()
101
    {
102 30
        if ($this->generator->getOptionGenerateTutorialFile() === true && $this->getClassmapFile() instanceof ClassMapFile) {
103 30
            $tutorialFile = new TutorialFile($this->generator, 'tutorial');
104 30
            $tutorialFile->write();
105 18
        }
106 30
        return $this;
107
    }
108
    /**
109
     * @throws \InvalidArgumentException
110
     * @return GeneratorFiles
111
     */
112 30
    protected function generateComposerFile()
113
    {
114 30
        if ($this->generator->getOptionStandalone() === true) {
115 25
            $composerFile = new ComposerFile($this->generator, 'composer');
116 25
            $composerFile->write();
117 15
        }
118 30
        return $this;
119
    }
120
}
121