|
2 | 2 | * Copyright © Magento, Inc. All rights reserved.
|
3 | 3 | * See COPYING.txt for license details.
|
4 | 4 | */
|
| 5 | + |
5 | 6 | package com.magento.idea.magento2plugin.actions.generation.generator;
|
6 | 7 |
|
7 | 8 | import com.intellij.openapi.project.Project;
|
|
14 | 15 | import com.magento.idea.magento2plugin.bundles.ValidatorBundle;
|
15 | 16 | import com.magento.idea.magento2plugin.indexes.ModuleIndex;
|
16 | 17 | import com.magento.idea.magento2plugin.magento.files.CronjobTemplate;
|
17 |
| -import org.jetbrains.annotations.NotNull; |
18 | 18 | import java.util.Properties;
|
| 19 | +import org.jetbrains.annotations.NotNull; |
19 | 20 |
|
20 | 21 | public class CronjobClassGenerator extends FileGenerator {
|
21 |
| - private CronjobClassData cronjobClassData; |
22 |
| - private Project project; |
23 |
| - private ValidatorBundle validatorBundle; |
| 22 | + private final CronjobClassData cronjobClassData; |
| 23 | + private final Project project; |
| 24 | + private final ValidatorBundle validatorBundle; |
24 | 25 | private final DirectoryGenerator directoryGenerator;
|
25 | 26 | private final FileFromTemplateGenerator fileFromTemplateGenerator;
|
26 | 27 |
|
27 | 28 | /**
|
28 |
| - * @param project |
29 |
| - * @param cronjobClassData |
| 29 | + * Construct generator. |
| 30 | + * |
| 31 | + * @param project Project |
| 32 | + * @param cronjobClassData CronjobClassData |
30 | 33 | */
|
31 |
| - public CronjobClassGenerator(Project project, @NotNull CronjobClassData cronjobClassData) { |
| 34 | + public CronjobClassGenerator( |
| 35 | + final Project project, |
| 36 | + final @NotNull CronjobClassData cronjobClassData |
| 37 | + ) { |
32 | 38 | super(project);
|
33 | 39 | this.project = project;
|
34 | 40 | this.cronjobClassData = cronjobClassData;
|
35 | 41 |
|
36 | 42 | this.directoryGenerator = DirectoryGenerator.getInstance();
|
37 |
| - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); |
| 43 | + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); |
38 | 44 | this.validatorBundle = new ValidatorBundle();
|
39 | 45 | }
|
40 | 46 |
|
41 | 47 | /**
|
| 48 | + * Generate file from code template. |
42 | 49 | *
|
43 |
| - * @param actionName |
| 50 | + * @param actionName String |
44 | 51 | *
|
45 | 52 | * @return void
|
46 | 53 | */
|
47 |
| - public PsiFile generate(String actionName) { |
48 |
| - PhpFile cronjobFile = createCronjobClass(actionName); |
| 54 | + @Override |
| 55 | + public PsiFile generate(final String actionName) { |
| 56 | + final PhpFile cronjobFile = createCronjobClass(actionName); |
49 | 57 |
|
50 | 58 | if (cronjobFile == null) {
|
51 |
| - String errorMessage = validatorBundle.message( |
52 |
| - "validator.file.cantBeCreated", |
53 |
| - "Cronjob Class" |
| 59 | + final String errorMessage = validatorBundle.message( |
| 60 | + "validator.file.cantBeCreated", |
| 61 | + "Cronjob Class" |
54 | 62 | );
|
55 | 63 |
|
56 |
| - throw new RuntimeException(errorMessage); |
| 64 | + throw new RuntimeException(errorMessage);//NOPMD |
57 | 65 | }
|
58 | 66 |
|
59 | 67 | return cronjobFile;
|
60 | 68 | }
|
61 | 69 |
|
62 | 70 | /**
|
| 71 | + * Fill template attributes. |
63 | 72 | *
|
64 |
| - * @param attributes |
| 73 | + * @param attributes Properties |
65 | 74 | */
|
66 |
| - protected void fillAttributes(Properties attributes) { |
67 |
| - String cronjobClassName = this.cronjobClassData.getClassName(); |
68 |
| - String cronjobNamespace = this.cronjobClassData.getNamespace(); |
| 75 | + @Override |
| 76 | + protected void fillAttributes(final Properties attributes) { |
| 77 | + final String cronjobClassName = this.cronjobClassData.getClassName(); |
| 78 | + final String cronjobNamespace = this.cronjobClassData.getNamespace(); |
69 | 79 |
|
70 | 80 | attributes.setProperty("NAME", cronjobClassName);
|
71 | 81 | attributes.setProperty("NAMESPACE", cronjobNamespace);
|
72 | 82 | }
|
73 | 83 |
|
74 | 84 | /**
|
75 |
| - * Generate Cronjob Class according to data model |
| 85 | + * Generate Cronjob Class according to data model. |
76 | 86 | *
|
77 |
| - * @param actionName |
| 87 | + * @param actionName String |
78 | 88 | *
|
79 | 89 | * @return PhpFile
|
80 | 90 | */
|
81 |
| - private PhpFile createCronjobClass(String actionName) { |
82 |
| - String cronjobClassName = this.cronjobClassData.getClassName(); |
83 |
| - String moduleName = this.cronjobClassData.getModuleName(); |
84 |
| - String[] cronjobSubDirectories = this.cronjobClassData.getDirectory().split("/"); |
85 |
| - PsiDirectory parentDirectory = ModuleIndex.getInstance(project).getModuleDirectoryByModuleName(moduleName); |
86 |
| - |
87 |
| - for (String cronjobSubDirectory: cronjobSubDirectories) { |
88 |
| - parentDirectory = directoryGenerator.findOrCreateSubdirectory(parentDirectory, cronjobSubDirectory); |
| 91 | + private PhpFile createCronjobClass(final String actionName) { |
| 92 | + final String cronjobClassName = this.cronjobClassData.getClassName(); |
| 93 | + final String moduleName = this.cronjobClassData.getModuleName(); |
| 94 | + final String[] cronjobSubDirectories = this.cronjobClassData.getDirectory().split("/"); |
| 95 | + PsiDirectory parentDirectory = new ModuleIndex(project) |
| 96 | + .getModuleDirectoryByModuleName(moduleName); |
| 97 | + |
| 98 | + for (final String cronjobSubDirectory: cronjobSubDirectories) { |
| 99 | + parentDirectory = directoryGenerator |
| 100 | + .findOrCreateSubdirectory(parentDirectory, cronjobSubDirectory); |
89 | 101 | }
|
90 | 102 |
|
91 |
| - Properties attributes = getAttributes(); |
| 103 | + final Properties attributes = getAttributes(); |
92 | 104 |
|
93 |
| - PsiFile blockFile = fileFromTemplateGenerator.generate( |
94 |
| - new CronjobTemplate(cronjobClassName), |
95 |
| - attributes, |
96 |
| - parentDirectory, |
97 |
| - actionName |
| 105 | + final PsiFile blockFile = fileFromTemplateGenerator.generate( |
| 106 | + new CronjobTemplate(cronjobClassName), |
| 107 | + attributes, |
| 108 | + parentDirectory, |
| 109 | + actionName |
98 | 110 | );
|
99 | 111 |
|
100 | 112 | if (blockFile == null) {
|
|
0 commit comments