Skip to content

Commit 9699581

Browse files
Refactored php file generators to extend PhpFileGenerator, fixed static test issues, fixed Edit entity controller generation code duplication
1 parent faa2ce6 commit 9699581

File tree

52 files changed

+341
-1396
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+341
-1396
lines changed

src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/FormViewControllerDtoConverter.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentFormLayoutDtoConverter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,14 @@
1616
public class UiComponentFormLayoutDtoConverter extends UiComponentFormFileData
1717
implements DataObjectConverter {
1818

19-
private final static String SUBMIT_ACTION_NAME = "Save";
19+
private static final String SUBMIT_ACTION_NAME = "Save";
2020

21+
/**
22+
* Ui Component form layout DTO converter.
23+
*
24+
* @param generationContextData EntityCreatorContextData
25+
* @param newEntityDialogData NewEntityDialogData
26+
*/
2127
public UiComponentFormLayoutDtoConverter(
2228
final @NotNull EntityCreatorContextData generationContextData,
2329
final @NotNull NewEntityDialogData newEntityDialogData

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,12 +219,8 @@ private void generateDataModelFile() {
219219
private void generatePreferenceForInterface() {
220220
new PreferenceDiXmlGenerator(new PreferenceDiXmFileData(
221221
getModuleName(),
222-
new DataModelInterfaceFile(
223-
getDtoInterfaceName()
224-
).getNamespaceBuilder(getModuleName()).getClassFqn(),
225-
new DataModelFile(
226-
getDtoModelName()
227-
).getNamespaceBuilder(getModuleName()).getClassFqn(),
222+
new DataModelInterfaceFile(getModuleName(), getDtoInterfaceName()).getClassFqn(),
223+
new DataModelFile(getModuleName(), getDtoModelName()).getClassFqn(),
228224
"base"
229225
), project).generate(OverrideClassByAPreferenceAction.ACTION_NAME);
230226
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
import com.magento.idea.magento2plugin.magento.packages.PropertiesTypes;
4646
import com.magento.idea.magento2plugin.magento.packages.database.TableEngines;
4747
import com.magento.idea.magento2plugin.magento.packages.database.TableResources;
48-
import com.magento.idea.magento2plugin.magento.packages.uiComponent.FormElementType;
48+
import com.magento.idea.magento2plugin.magento.packages.uicomponent.FormElementType;
4949
import com.magento.idea.magento2plugin.stubs.indexes.xml.MenuIndex;
5050
import com.magento.idea.magento2plugin.ui.FilteredComboBox;
5151
import com.magento.idea.magento2plugin.ui.table.TableGroupWrapper;
@@ -443,9 +443,9 @@ private EntityCreatorContextData getEntityCreatorContextData(
443443
final String actionsPathPrefix = dialogData.getRoute() + File.separator
444444
+ FirstLetterToLowercaseUtil.convert(entityName) + File.separator;
445445
final NamespaceBuilder dtoModelNamespace =
446-
new DataModelFile(dtoClassName).getNamespaceBuilder(moduleName);
446+
new DataModelFile(moduleName, dtoClassName).getNamespaceBuilder();
447447
final NamespaceBuilder dtoInterfaceNamespace =
448-
new DataModelInterfaceFile(dtoInterfaceClassName).getNamespaceBuilder(moduleName);
448+
new DataModelInterfaceFile(moduleName, dtoInterfaceClassName).getNamespaceBuilder();
449449

450450
final NamespaceBuilder formViewNamespaceBuilder =
451451
new NamespaceBuilder(
@@ -600,9 +600,9 @@ private List<UiComponentFormFieldData> getFields() {
600600
final String dataType = model.getValueAt(count, 1).toString();
601601

602602
final String label = Arrays.stream(name.split("_")).map(
603-
string -> string.substring(0, 1).toUpperCase(Locale.getDefault())
604-
+ string.substring(1)).collect(Collectors.joining(" ")
605-
);
603+
string -> string.substring(0, 1).toUpperCase(Locale.getDefault())
604+
+ string.substring(1)).collect(Collectors.joining(" ")
605+
);
606606
final String sortOrder = String.valueOf(count).concat("0");
607607
final String fieldset = "general";
608608

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.intellij.openapi.project.Project;
99
import com.intellij.openapi.ui.ComboBoxTableRenderer;
1010
import com.intellij.psi.PsiDirectory;
11-
import com.intellij.psi.PsiFile;
1211
import com.magento.idea.magento2plugin.actions.generation.NewUiComponentFormAction;
1312
import com.magento.idea.magento2plugin.actions.generation.data.AclXmlData;
1413
import com.magento.idea.magento2plugin.actions.generation.data.ControllerFileData;
@@ -47,7 +46,7 @@
4746
import com.magento.idea.magento2plugin.magento.packages.Areas;
4847
import com.magento.idea.magento2plugin.magento.packages.File;
4948
import com.magento.idea.magento2plugin.magento.packages.HttpMethod;
50-
import com.magento.idea.magento2plugin.magento.packages.uiComponent.FormElementType;
49+
import com.magento.idea.magento2plugin.magento.packages.uicomponent.FormElementType;
5150
import com.magento.idea.magento2plugin.ui.FilteredComboBox;
5251
import com.magento.idea.magento2plugin.ui.table.ComboBoxEditor;
5352
import com.magento.idea.magento2plugin.ui.table.DeleteRowButton;
@@ -72,7 +71,6 @@
7271
import javax.swing.KeyStroke;
7372
import javax.swing.table.DefaultTableModel;
7473
import javax.swing.table.TableColumn;
75-
import org.jetbrains.annotations.NotNull;
7674

7775
@SuppressWarnings({
7876
"PMD.TooManyFields",

src/com/magento/idea/magento2plugin/actions/generation/dialog/util/ClassPropertyFormatterUtil.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
import com.google.common.base.CaseFormat;
99
import com.magento.idea.magento2plugin.actions.generation.data.code.ClassPropertyData;
10-
import org.apache.commons.lang.StringUtils;
11-
import javax.swing.table.DefaultTableModel;
1210
import java.util.ArrayList;
1311
import java.util.List;
12+
import javax.swing.table.DefaultTableModel;
13+
import org.apache.commons.lang.StringUtils;
1414

1515
public final class ClassPropertyFormatterUtil {
1616

@@ -27,8 +27,8 @@ public static List<String> formatProperties(final DefaultTableModel table) {
2727
final List<String> properties = new ArrayList<>();
2828

2929
for (int index = 0; index < table.getRowCount(); index++) {
30-
String name = table.getValueAt(index, 0).toString();
31-
String type = table.getValueAt(index, 1).toString();
30+
final String name = table.getValueAt(index, 0).toString();
31+
final String type = table.getValueAt(index, 1).toString();
3232

3333
properties.add(ClassPropertyFormatterUtil.formatSingleProperty(name, type));
3434
}

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

Lines changed: 21 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,19 @@
55

66
package com.magento.idea.magento2plugin.actions.generation.generator;
77

8-
import com.intellij.openapi.command.WriteCommandAction;
98
import com.intellij.openapi.project.Project;
10-
import com.intellij.psi.PsiDirectory;
11-
import com.intellij.psi.PsiFile;
12-
import com.jetbrains.php.lang.psi.PhpFile;
13-
import com.jetbrains.php.lang.psi.elements.PhpClass;
149
import com.magento.idea.magento2plugin.actions.generation.data.DataModelData;
15-
import com.magento.idea.magento2plugin.actions.generation.generator.util.DirectoryGenerator;
16-
import com.magento.idea.magento2plugin.actions.generation.generator.util.FileFromTemplateGenerator;
1710
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassGeneratorUtil;
1811
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder;
19-
import com.magento.idea.magento2plugin.bundles.CommonBundle;
20-
import com.magento.idea.magento2plugin.bundles.ValidatorBundle;
21-
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
12+
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
2213
import com.magento.idea.magento2plugin.magento.files.DataModelFile;
2314
import com.magento.idea.magento2plugin.magento.files.DataModelInterfaceFile;
24-
import com.magento.idea.magento2plugin.util.GetFirstClassOfFile;
25-
import com.magento.idea.magento2plugin.util.GetPhpClassByFQN;
2615
import java.util.Properties;
27-
import javax.swing.JOptionPane;
2816
import org.jetbrains.annotations.NotNull;
2917

30-
public class DataModelGenerator extends FileGenerator {
18+
public class DataModelGenerator extends PhpFileGenerator {
3119

32-
private final Project project;
3320
private final DataModelData data;
34-
private final DirectoryGenerator directoryGenerator;
35-
private final FileFromTemplateGenerator fileFromTemplateGenerator;
36-
private final GetFirstClassOfFile getFirstClassOfFile;
37-
private final ValidatorBundle validatorBundle;
38-
private final CommonBundle commonBundle;
39-
private final DataModelFile file;
4021

4122
/**
4223
* Data model generator constructor.
@@ -48,83 +29,28 @@ public DataModelGenerator(
4829
final @NotNull Project project,
4930
final @NotNull DataModelData data
5031
) {
51-
super(project);
52-
this.project = project;
53-
this.data = data;
54-
this.directoryGenerator = DirectoryGenerator.getInstance();
55-
this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project);
56-
this.getFirstClassOfFile = GetFirstClassOfFile.getInstance();
57-
this.validatorBundle = new ValidatorBundle();
58-
this.commonBundle = new CommonBundle();
59-
file = new DataModelFile(data.getName());
60-
}
61-
62-
@Override
63-
public PsiFile generate(final @NotNull String actionName) {
64-
final PsiFile[] files = new PsiFile[1];
65-
66-
WriteCommandAction.runWriteCommandAction(project, () -> {
67-
PhpClass dataModel = GetPhpClassByFQN.getInstance(project).execute(
68-
file.getNamespaceBuilder(data.getModuleName()).getClassFqn()
69-
);
70-
71-
if (dataModel == null) {
72-
dataModel = createModel(actionName);
73-
74-
if (dataModel == null) {
75-
final String errorMessage = this.validatorBundle.message(
76-
"validator.file.cantBeCreated",
77-
"Data Model"
78-
);
79-
JOptionPane.showMessageDialog(
80-
null,
81-
errorMessage,
82-
commonBundle.message("common.error"),
83-
JOptionPane.ERROR_MESSAGE
84-
);
85-
} else {
86-
files[0] = dataModel.getContainingFile();
87-
}
88-
} else {
89-
final String errorMessage = this.validatorBundle.message(
90-
"validator.file.alreadyExists",
91-
"Data Model"
92-
);
93-
JOptionPane.showMessageDialog(
94-
null,
95-
errorMessage,
96-
commonBundle.message("common.error"),
97-
JOptionPane.ERROR_MESSAGE
98-
);
99-
}
100-
});
101-
102-
return files[0];
32+
this(project, data, true);
10333
}
10434

10535
/**
106-
* Create model class.
107-
*
108-
* @param actionName String
36+
* Data model generator constructor.
10937
*
110-
* @return PhpClass
38+
* @param project Project
39+
* @param data DataModelData
40+
* @param checkFileAlreadyExists boolean
11141
*/
112-
private PhpClass createModel(final @NotNull String actionName) {
113-
final PsiDirectory parentDirectory = new ModuleIndex(project)
114-
.getModuleDirectoryByModuleName(data.getModuleName());
115-
final PsiDirectory dataModelDirectory = directoryGenerator.findOrCreateSubdirectories(
116-
parentDirectory,
117-
DataModelFile.DIRECTORY
118-
);
119-
120-
final PsiFile dataModelFile = fileFromTemplateGenerator.generate(
121-
file,
122-
getAttributes(),
123-
dataModelDirectory,
124-
actionName
125-
);
42+
public DataModelGenerator(
43+
final @NotNull Project project,
44+
final @NotNull DataModelData data,
45+
final boolean checkFileAlreadyExists
46+
) {
47+
super(project, checkFileAlreadyExists);
48+
this.data = data;
49+
}
12650

127-
return dataModelFile == null ? null : getFirstClassOfFile.execute((PhpFile) dataModelFile);
51+
@Override
52+
protected AbstractPhpFile initFile() {
53+
return new DataModelFile(data.getModuleName(), data.getName());
12854
}
12955

13056
/**
@@ -137,10 +63,7 @@ protected void fillAttributes(final @NotNull Properties attributes) {
13763
final PhpClassTypesBuilder phpClassTypesBuilder = new PhpClassTypesBuilder();
13864

13965
phpClassTypesBuilder
140-
.appendProperty(
141-
"NAMESPACE",
142-
file.getNamespaceBuilder(data.getModuleName()).getNamespace()
143-
)
66+
.appendProperty("NAMESPACE", file.getNamespace())
14467
.appendProperty("NAME", data.getName())
14568
.appendProperty("PROPERTIES", data.getProperties())
14669
.appendProperty("HASINTERFACE", Boolean.toString(data.hasInterface()))
@@ -150,8 +73,9 @@ protected void fillAttributes(final @NotNull Properties attributes) {
15073
phpClassTypesBuilder.append(
15174
"IMPLEMENTS",
15275
new DataModelInterfaceFile(
76+
data.getModuleName(),
15377
data.getInterfaceName()
154-
).getNamespaceBuilder(data.getModuleName()).getClassFqn());
78+
).getClassFqn());
15579
}
15680

15781
phpClassTypesBuilder.mergeProperties(attributes);

0 commit comments

Comments
 (0)