Skip to content

Commit 22d7358

Browse files
Generators adjustments and critical bugs fixing
1 parent 58f5762 commit 22d7358

14 files changed

+180
-323
lines changed

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ private EntityCreatorContextData getEntityCreatorContextData(
434434
dtoModelNamespace,
435435
dtoInterfaceNamespace,
436436
formViewNamespaceBuilder,
437-
NewActionFile.getNamespaceBuilder(moduleName, entityName),
437+
new NewActionFile(moduleName, entityName).getNamespaceBuilder(),
438438
getEntityProperties(),
439439
getButtons(),
440440
getFieldSets(),

src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityControllerFileGenerator.java

Lines changed: 26 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
16
package com.magento.idea.magento2plugin.actions.generation.generator;
27

38
import com.intellij.openapi.project.Project;
4-
import com.intellij.psi.PsiDirectory;
5-
import com.intellij.psi.PsiFile;
69
import com.magento.idea.magento2plugin.actions.generation.data.DeleteEntityControllerFileData;
7-
import com.magento.idea.magento2plugin.actions.generation.generator.util.DirectoryGenerator;
8-
import com.magento.idea.magento2plugin.actions.generation.generator.util.FileFromTemplateGenerator;
910
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassGeneratorUtil;
1011
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder;
11-
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
12+
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
1213
import com.magento.idea.magento2plugin.magento.files.actions.DeleteActionFile;
1314
import com.magento.idea.magento2plugin.magento.files.commands.DeleteEntityByIdCommandFile;
1415
import com.magento.idea.magento2plugin.magento.packages.HttpMethod;
@@ -18,54 +19,42 @@
1819
import java.util.Properties;
1920
import org.jetbrains.annotations.NotNull;
2021

21-
public class DeleteEntityControllerFileGenerator extends FileGenerator {
22+
public class DeleteEntityControllerFileGenerator extends PhpFileGenerator {
2223

2324
private final DeleteEntityControllerFileData data;
24-
private final FileFromTemplateGenerator fileFromTemplateGenerator;
25-
private final DirectoryGenerator directoryGenerator;
26-
private final ModuleIndex moduleIndex;
27-
private final DeleteActionFile file;
2825

2926
/**
3027
* Delete Entity Controller File Generator.
28+
*
3129
* @param data DeleteEntityControllerFileData
3230
* @param project Project
3331
*/
3432
public DeleteEntityControllerFileGenerator(
35-
final DeleteEntityControllerFileData data,
33+
final @NotNull DeleteEntityControllerFileData data,
3634
final @NotNull Project project
3735
) {
38-
super(project);
39-
this.data = data;
40-
fileFromTemplateGenerator = new FileFromTemplateGenerator(project);
41-
moduleIndex = new ModuleIndex(project);
42-
directoryGenerator = DirectoryGenerator.getInstance();
43-
file = new DeleteActionFile(data.getEntityName());
36+
this(data, project, true);
4437
}
4538

4639
/**
47-
* Generate Delete controller.
48-
*
49-
* @param actionName String
40+
* Delete Entity Controller File Generator.
5041
*
51-
* @return PsiFile
42+
* @param data DeleteEntityControllerFileData
43+
* @param project Project
44+
* @param checkFileAlreadyExists boolean
5245
*/
53-
@Override
54-
public PsiFile generate(final @NotNull String actionName) {
55-
final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName(
56-
data.getModuleName()
57-
);
58-
final PsiDirectory baseDirectory = directoryGenerator.findOrCreateSubdirectories(
59-
moduleBaseDir,
60-
file.getDirectory()
61-
);
46+
public DeleteEntityControllerFileGenerator(
47+
final @NotNull DeleteEntityControllerFileData data,
48+
final @NotNull Project project,
49+
final boolean checkFileAlreadyExists
50+
) {
51+
super(project, checkFileAlreadyExists);
52+
this.data = data;
53+
}
6254

63-
return fileFromTemplateGenerator.generate(
64-
file,
65-
getAttributes(),
66-
baseDirectory,
67-
actionName
68-
);
55+
@Override
56+
protected AbstractPhpFile initFile() {
57+
return new DeleteActionFile(data.getModuleName(), data.getEntityName());
6958
}
7059

7160
/**
@@ -78,8 +67,7 @@ protected void fillAttributes(final @NotNull Properties attributes) {
7867
final PhpClassTypesBuilder phpClassTypesBuilder = new PhpClassTypesBuilder();
7968

8069
phpClassTypesBuilder
81-
.appendProperty("NAMESPACE",
82-
file.getNamespaceBuilder(data.getModuleName()).getNamespace())
70+
.appendProperty("NAMESPACE", file.getNamespace())
8371
.appendProperty("ENTITY_NAME", data.getEntityName())
8472
.appendProperty("CLASS_NAME", DeleteActionFile.CLASS_NAME)
8573
.appendProperty("ADMIN_RESOURCE", data.getAcl())

src/com/magento/idea/magento2plugin/actions/generation/generator/NewActionEntityControllerFileGenerator.java

Lines changed: 40 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -6,104 +6,74 @@
66
package com.magento.idea.magento2plugin.actions.generation.generator;
77

88
import com.intellij.openapi.project.Project;
9-
import com.intellij.psi.PsiDirectory;
10-
import com.intellij.psi.PsiFile;
119
import com.magento.idea.magento2plugin.actions.generation.data.NewActionEntityControllerFileData;
12-
import com.magento.idea.magento2plugin.actions.generation.generator.util.DirectoryGenerator;
13-
import com.magento.idea.magento2plugin.actions.generation.generator.util.FileFromTemplateGenerator;
1410
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassGeneratorUtil;
15-
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
11+
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder;
12+
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
1613
import com.magento.idea.magento2plugin.magento.files.actions.NewActionFile;
1714
import com.magento.idea.magento2plugin.magento.packages.HttpMethod;
1815
import com.magento.idea.magento2plugin.magento.packages.code.BackendModuleType;
1916
import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType;
20-
import org.jetbrains.annotations.NotNull;
21-
22-
import java.util.ArrayList;
23-
import java.util.List;
2417
import java.util.Properties;
18+
import org.jetbrains.annotations.NotNull;
2519

26-
public class NewActionEntityControllerFileGenerator extends FileGenerator {
20+
public class NewActionEntityControllerFileGenerator extends PhpFileGenerator {
2721

28-
private final NewActionEntityControllerFileData fileData;
29-
private final FileFromTemplateGenerator fileFromTemplateGenerator;
30-
private final DirectoryGenerator directoryGenerator;
31-
private final ModuleIndex moduleIndex;
32-
private final List<String> uses;
22+
private final NewActionEntityControllerFileData data;
3323

3424
/**
3525
* NewAction Entity Controller File Generator.
36-
* @param fileData NewActionEntityControllerFileData
26+
*
27+
* @param data NewActionEntityControllerFileData
3728
* @param project Project
3829
*/
3930
public NewActionEntityControllerFileGenerator(
40-
final NewActionEntityControllerFileData fileData,
31+
final NewActionEntityControllerFileData data,
4132
final @NotNull Project project
4233
) {
43-
super(project);
44-
this.fileData = fileData;
45-
fileFromTemplateGenerator = new FileFromTemplateGenerator(project);
46-
moduleIndex = new ModuleIndex(project);
47-
directoryGenerator = DirectoryGenerator.getInstance();
48-
uses = new ArrayList<>();
34+
super(project, true);
35+
this.data = data;
4936
}
5037

5138
/**
52-
* Generate NewAction controller for entity.
53-
*
54-
* @param actionName String
39+
* NewAction Entity Controller File Generator.
5540
*
56-
* @return PsiFile
41+
* @param data NewActionEntityControllerFileData
42+
* @param project Project
43+
* @param checkFileAlreadyExists boolean
5744
*/
58-
@Override
59-
public PsiFile generate(final @NotNull String actionName) {
60-
final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName(
61-
fileData.getModuleName()
62-
);
63-
final PsiDirectory baseDirectory = directoryGenerator.findOrCreateSubdirectories(
64-
moduleBaseDir,
65-
NewActionFile.getDirectory(fileData.getEntityName())
66-
);
45+
public NewActionEntityControllerFileGenerator(
46+
final NewActionEntityControllerFileData data,
47+
final @NotNull Project project,
48+
final boolean checkFileAlreadyExists
49+
) {
50+
super(project, checkFileAlreadyExists);
51+
this.data = data;
52+
}
6753

68-
return fileFromTemplateGenerator.generate(
69-
NewActionFile.getInstance(),
70-
getAttributes(),
71-
baseDirectory,
72-
actionName
73-
);
54+
@Override
55+
protected AbstractPhpFile initFile() {
56+
return new NewActionFile(data.getModuleName(), data.getEntityName());
7457
}
7558

7659
@Override
7760
protected void fillAttributes(final @NotNull Properties attributes) {
78-
attributes.setProperty("NAMESPACE", fileData.getNamespace());
79-
attributes.setProperty("ENTITY_NAME", fileData.getEntityName());
80-
attributes.setProperty("CLASS_NAME", NewActionFile.CLASS_NAME);
81-
addProperty(attributes, "EXTENDS", BackendModuleType.EXTENDS.getType());
82-
addProperty(attributes, "IMPLEMENTS", HttpMethod.GET.getInterfaceFqn());
83-
attributes.setProperty("ADMIN_RESOURCE", fileData.getAcl());
84-
attributes.setProperty("MENU_IDENTIFIER", fileData.getMenu());
85-
addProperty(attributes, "RESULT_INTERFACE",
86-
FrameworkLibraryType.RESULT_INTERFACE.getType()
87-
);
88-
addProperty(attributes, "RESULT_FACTORY", FrameworkLibraryType.RESULT_FACTORY.getType());
89-
addProperty(attributes, "RESULT_PAGE", BackendModuleType.RESULT_PAGE.getType());
61+
final PhpClassTypesBuilder phpClassTypesBuilder = new PhpClassTypesBuilder();
9062

91-
attributes.setProperty("USES", PhpClassGeneratorUtil.formatUses(uses));
92-
}
63+
phpClassTypesBuilder
64+
.appendProperty("NAMESPACE", data.getNamespace())
65+
.appendProperty("ENTITY_NAME", data.getEntityName())
66+
.appendProperty("CLASS_NAME", file.getClassName())
67+
.appendProperty("ADMIN_RESOURCE", data.getAcl())
68+
.appendProperty("MENU_IDENTIFIER", data.getMenu())
69+
.append("EXTENDS", BackendModuleType.EXTENDS.getType())
70+
.append("IMPLEMENTS", HttpMethod.GET.getInterfaceFqn())
71+
.append("RESULT_INTERFACE", FrameworkLibraryType.RESULT_INTERFACE.getType())
72+
.append("RESULT_FACTORY", FrameworkLibraryType.RESULT_FACTORY.getType())
73+
.append("RESULT_PAGE", BackendModuleType.RESULT_PAGE.getType())
74+
.mergeProperties(attributes);
9375

94-
/**
95-
* Add type to properties.
96-
*
97-
* @param properties Properties
98-
* @param propertyName String
99-
* @param type String
100-
*/
101-
protected void addProperty(
102-
final @NotNull Properties properties,
103-
final String propertyName,
104-
final String type
105-
) {
106-
uses.add(type);
107-
properties.setProperty(propertyName, PhpClassGeneratorUtil.getNameFromFqn(type));
76+
attributes.setProperty("USES",
77+
PhpClassGeneratorUtil.formatUses(phpClassTypesBuilder.getUses()));
10878
}
10979
}

src/com/magento/idea/magento2plugin/actions/generation/generator/QueryGenerator.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public QueryGenerator(
5757
this.getFirstClassOfFile = GetFirstClassOfFile.getInstance();
5858
this.project = project;
5959
this.moduleName = moduleName;
60-
file = new UiComponentDataProviderFile(data.getName());
60+
file = new UiComponentDataProviderFile(moduleName, data.getName(), data.getPath());
6161
}
6262

6363
@Override
@@ -66,7 +66,7 @@ public PsiFile generate(final @NotNull String actionName) {
6666

6767
WriteCommandAction.runWriteCommandAction(project, () -> {
6868
PhpClass dataProvider = GetPhpClassByFQN.getInstance(project).execute(
69-
file.getNamespaceBuilder(moduleName, data.getPath()).getClassFqn()
69+
file.getClassFqn()
7070
);
7171

7272
if (dataProvider != null) {
@@ -121,7 +121,7 @@ private PhpClass createDataProviderClass(final @NotNull String actionName) {
121121
directoryGenerator.findOrCreateSubdirectories(parentDirectory, data.getPath());
122122

123123
final PsiFile dataProviderFile = fileFromTemplateGenerator.generate(
124-
new UiComponentDataProviderFile(data.getName()),
124+
new UiComponentDataProviderFile(moduleName, data.getName(), data.getPath()),
125125
getAttributes(),
126126
dataProviderDirectory,
127127
actionName
@@ -141,8 +141,7 @@ private PhpClass createDataProviderClass(final @NotNull String actionName) {
141141
*/
142142
@Override
143143
protected void fillAttributes(final @NotNull Properties attributes) {
144-
attributes.setProperty("NAMESPACE",
145-
file.getNamespaceBuilder(moduleName, data.getPath()).getNamespace());
144+
attributes.setProperty("NAMESPACE", file.getNamespace());
146145
attributes.setProperty("CLASS_NAME", data.getName());
147146
}
148147
}

0 commit comments

Comments
 (0)