Skip to content

Commit 96c2b1e

Browse files
author
Vitaliy
authored
Merge pull request #65 from magento/refactoring-code-generation
Refactoring code generation
2 parents 1279155 + be63bdf commit 96c2b1e

21 files changed

+422
-131
lines changed

src/com/magento/idea/magento2plugin/actions/generation/PluginGenerateAfterMethodAction.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
import com.intellij.psi.PsiFile;
1313
import com.jetbrains.php.lang.psi.elements.Method;
1414
import com.jetbrains.php.lang.psi.elements.PhpClass;
15-
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginMethodData;
16-
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginMethodsGenerator;
15+
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
16+
import com.magento.idea.magento2plugin.actions.generation.generator.code.PluginMethodsGenerator;
1717
import com.magento.idea.magento2plugin.magento.files.Plugin;
1818
import org.jetbrains.annotations.NotNull;
1919

2020
public class PluginGenerateAfterMethodAction extends CodeInsightAction {
21-
private final PluginGeneratePluginMethodHandlerBase myHandler = new PluginGeneratePluginMethodHandlerBase(Plugin.PluginType.after) {
22-
protected MagentoPluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
23-
return (new MagentoPluginMethodsGenerator(currentClass, method, targetClassKey)
21+
private final PluginGenerateMethodHandlerBase myHandler = new PluginGenerateMethodHandlerBase(Plugin.PluginType.after) {
22+
protected PluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
23+
return (new PluginMethodsGenerator(currentClass, method, targetClassKey)
2424
.createPluginMethods(Plugin.PluginType.after));
2525
}
2626
};

src/com/magento/idea/magento2plugin/actions/generation/PluginGenerateAroundMethodAction.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
import com.intellij.psi.PsiFile;
1313
import com.jetbrains.php.lang.psi.elements.Method;
1414
import com.jetbrains.php.lang.psi.elements.PhpClass;
15-
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginMethodData;
16-
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginMethodsGenerator;
15+
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
16+
import com.magento.idea.magento2plugin.actions.generation.generator.code.PluginMethodsGenerator;
1717
import com.magento.idea.magento2plugin.magento.files.Plugin;
1818
import org.jetbrains.annotations.NotNull;
1919

2020
public class PluginGenerateAroundMethodAction extends CodeInsightAction {
21-
private final PluginGeneratePluginMethodHandlerBase myHandler = new PluginGeneratePluginMethodHandlerBase(Plugin.PluginType.around) {
22-
protected MagentoPluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
23-
return (new MagentoPluginMethodsGenerator(currentClass, method, targetClassKey)
21+
private final PluginGenerateMethodHandlerBase myHandler = new PluginGenerateMethodHandlerBase(Plugin.PluginType.around) {
22+
protected PluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
23+
return (new PluginMethodsGenerator(currentClass, method, targetClassKey)
2424
.createPluginMethods(Plugin.PluginType.around));
2525
}
2626
};

src/com/magento/idea/magento2plugin/actions/generation/PluginGenerateBeforeMethodAction.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
import com.intellij.psi.PsiFile;
1212
import com.jetbrains.php.lang.psi.elements.Method;
1313
import com.jetbrains.php.lang.psi.elements.PhpClass;
14-
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginMethodData;
15-
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginMethodsGenerator;
14+
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
15+
import com.magento.idea.magento2plugin.actions.generation.generator.code.PluginMethodsGenerator;
1616
import com.magento.idea.magento2plugin.magento.files.Plugin;
1717
import org.jetbrains.annotations.NotNull;
1818
import com.intellij.openapi.util.Key;
1919

2020
public class PluginGenerateBeforeMethodAction extends CodeInsightAction {
21-
private final PluginGeneratePluginMethodHandlerBase myHandler = new PluginGeneratePluginMethodHandlerBase(Plugin.PluginType.before) {
22-
protected MagentoPluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
23-
return (new MagentoPluginMethodsGenerator(currentClass, method, targetClassKey)
21+
private final PluginGenerateMethodHandlerBase myHandler = new PluginGenerateMethodHandlerBase(Plugin.PluginType.before) {
22+
protected PluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
23+
return (new PluginMethodsGenerator(currentClass, method, targetClassKey)
2424
.createPluginMethods(Plugin.PluginType.before));
2525
}
2626
};

src/com/magento/idea/magento2plugin/actions/generation/PluginGeneratePluginMethodHandlerBase.java src/com/magento/idea/magento2plugin/actions/generation/PluginGenerateMethodHandlerBase.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
import com.jetbrains.php.lang.psi.elements.*;
2929
import java.util.*;
3030
import com.magento.idea.magento2plugin.actions.generation.ImportReferences.PhpClassReferenceResolver;
31-
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginMethodData;
32-
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginMethodsGenerator;
31+
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
32+
import com.magento.idea.magento2plugin.actions.generation.generator.code.PluginMethodsGenerator;
3333
import com.magento.idea.magento2plugin.actions.generation.util.CodeStyleSettings;
3434
import com.magento.idea.magento2plugin.actions.generation.util.CollectInsertedMethods;
3535
import com.magento.idea.magento2plugin.actions.generation.util.FillTextBufferWithPluginMethods;
@@ -41,12 +41,12 @@
4141
import org.jetbrains.annotations.NotNull;
4242
import org.jetbrains.annotations.Nullable;
4343

44-
public abstract class PluginGeneratePluginMethodHandlerBase implements LanguageCodeInsightActionHandler {
44+
public abstract class PluginGenerateMethodHandlerBase implements LanguageCodeInsightActionHandler {
4545
private CollectInsertedMethods collectInsertedMethods;
4646
public String type;
4747
public FillTextBufferWithPluginMethods fillTextBuffer;
4848

49-
public PluginGeneratePluginMethodHandlerBase(Plugin.PluginType type) {
49+
public PluginGenerateMethodHandlerBase(Plugin.PluginType type) {
5050
this.type = type.toString();
5151
this.fillTextBuffer = FillTextBufferWithPluginMethods.getInstance();
5252
this.collectInsertedMethods = CollectInsertedMethods.getInstance();
@@ -69,7 +69,7 @@ public boolean isValidFor(Editor editor, PsiFile file) {
6969
public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile pluginFile) {
7070
PhpFile pluginPhpFile = (PhpFile)pluginFile;
7171
PhpClass pluginClass = PhpCodeEditUtil.findClassAtCaret(editor, pluginPhpFile);
72-
Key<Object> targetClassKey = Key.create(MagentoPluginMethodsGenerator.originalTargetKey);
72+
Key<Object> targetClassKey = Key.create(PluginMethodsGenerator.originalTargetKey);
7373
if (pluginClass == null) {
7474
return;
7575
}
@@ -97,7 +97,7 @@ public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull Ps
9797

9898
for (PhpNamedElementNode member : members) {
9999
PsiElement method = member.getPsiElement();
100-
MagentoPluginMethodData[] pluginMethods = this.createPluginMethods(pluginClass, (Method) method, targetClassKey);
100+
PluginMethodData[] pluginMethods = this.createPluginMethods(pluginClass, (Method) method, targetClassKey);
101101
fillTextBuffer.execute(targetClassKey, insertedMethodsNames, resolver, textBuf, pluginMethods);
102102
}
103103

@@ -121,7 +121,7 @@ private void insertPluginMethodsToFile(@NotNull Project project, @NotNull Editor
121121
}
122122
}
123123

124-
protected abstract MagentoPluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey);
124+
protected abstract PluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey);
125125

126126
protected String getErrorMessage() {
127127
return "No methods to generate";
@@ -135,7 +135,7 @@ public boolean startInWriteAction() {
135135
protected PhpNamedElementNode[] chooseMembers(PhpNamedElementNode[] members, boolean allowEmptySelection, Project project) {
136136
PhpNamedElementNode[] nodes = fixOrderToBeAsOriginalFiles(members).toArray(new PhpNamedElementNode[members.length]);
137137
if (!ApplicationManager.getApplication().isHeadlessEnvironment()) {
138-
PluginGeneratePluginMethodHandlerBase.MyMemberChooser chooser = new PluginGeneratePluginMethodHandlerBase.MyMemberChooser(nodes, allowEmptySelection, project);
138+
PluginGenerateMethodHandlerBase.MyMemberChooser chooser = new PluginGenerateMethodHandlerBase.MyMemberChooser(nodes, allowEmptySelection, project);
139139
chooser.setTitle("Choose Methods");
140140
chooser.setCopyJavadocVisible(false);
141141
chooser.show();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
package com.magento.idea.magento2plugin.actions.generation.data;
6+
7+
import com.intellij.psi.PsiDirectory;
8+
9+
public class ModuleComposerJsonData {
10+
private final String packageName;
11+
private final String moduleName;
12+
private PsiDirectory baseDir;
13+
private final String moduleDescription;
14+
private final String composerPackageName;
15+
private final String moduleVersion;
16+
17+
public ModuleComposerJsonData(
18+
String packageName,
19+
String moduleName,
20+
PsiDirectory baseDir,
21+
String moduleDescription,
22+
String composerPackageName,
23+
String moduleVersion
24+
) {
25+
this.packageName = packageName;
26+
this.moduleName = moduleName;
27+
this.baseDir = baseDir;
28+
this.moduleDescription = moduleDescription;
29+
this.composerPackageName = composerPackageName;
30+
this.moduleVersion = moduleVersion;
31+
}
32+
33+
public String getPackageName() {
34+
return this.packageName;
35+
}
36+
37+
public String getModuleName() {
38+
return this.moduleName;
39+
}
40+
41+
public PsiDirectory getBaseDir() {
42+
return this.baseDir;
43+
}
44+
45+
public String getModuleDescription() {
46+
return this.moduleDescription;
47+
}
48+
49+
public String getComposerPackageName() {
50+
return this.composerPackageName;
51+
}
52+
53+
public String getModuleVersion() {
54+
return this.moduleVersion;
55+
}
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
package com.magento.idea.magento2plugin.actions.generation.data;
6+
7+
import com.intellij.psi.PsiDirectory;
8+
9+
public class ModuleRegistrationPhpData {
10+
private final String packageName;
11+
private final String moduleName;
12+
private PsiDirectory baseDir;
13+
14+
public ModuleRegistrationPhpData(
15+
String packageName,
16+
String moduleName,
17+
PsiDirectory baseDir
18+
) {
19+
this.packageName = packageName;
20+
this.moduleName = moduleName;
21+
this.baseDir = baseDir;
22+
}
23+
24+
public String getPackageName() {
25+
return this.packageName;
26+
}
27+
28+
public String getModuleName() {
29+
return this.moduleName;
30+
}
31+
32+
public PsiDirectory getBaseDir() {
33+
return this.baseDir;
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
package com.magento.idea.magento2plugin.actions.generation.data;
6+
7+
import com.intellij.psi.PsiDirectory;
8+
9+
public class ModuleXmlData {
10+
private final String packageName;
11+
private final String moduleName;
12+
private PsiDirectory baseDir;
13+
14+
public ModuleXmlData(
15+
String packageName,
16+
String moduleName,
17+
PsiDirectory baseDir
18+
) {
19+
this.packageName = packageName;
20+
this.moduleName = moduleName;
21+
this.baseDir = baseDir;
22+
}
23+
24+
public String getPackageName() {
25+
return this.packageName;
26+
}
27+
28+
public String getModuleName() {
29+
return this.moduleName;
30+
}
31+
32+
public PsiDirectory getBaseDir() {
33+
return this.baseDir;
34+
}
35+
}

src/com/magento/idea/magento2plugin/actions/generation/data/MagentoPluginDiXmlData.java src/com/magento/idea/magento2plugin/actions/generation/data/PluginDiXmlData.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66

77
import com.jetbrains.php.lang.psi.elements.PhpClass;
88

9-
public class MagentoPluginDiXmlData {
9+
public class PluginDiXmlData {
1010
private String area;
1111
private String pluginModule;
1212
private PhpClass targetClass;
1313
private final String sortOrder;
1414
private final String pluginName;
1515
private String pluginFqn;
1616

17-
public MagentoPluginDiXmlData(
17+
public PluginDiXmlData(
1818
String area,
1919
String pluginModule,
2020
PhpClass targetClass,

src/com/magento/idea/magento2plugin/actions/generation/data/MagentoPluginFileData.java src/com/magento/idea/magento2plugin/actions/generation/data/PluginFileData.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import com.jetbrains.php.lang.psi.elements.Method;
88
import com.jetbrains.php.lang.psi.elements.PhpClass;
99

10-
public class MagentoPluginFileData {
10+
public class PluginFileData {
1111
private String pluginDirectory;
1212
private String pluginClassName;
1313
private String pluginType;
@@ -17,7 +17,7 @@ public class MagentoPluginFileData {
1717
private String pluginFqn;
1818
private String namespace;
1919

20-
public MagentoPluginFileData(
20+
public PluginFileData(
2121
String pluginDirectory,
2222
String pluginClassName,
2323
String pluginType,

src/com/magento/idea/magento2plugin/actions/generation/data/MagentoPluginMethodData.java src/com/magento/idea/magento2plugin/actions/generation/data/code/PluginMethodData.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5-
package com.magento.idea.magento2plugin.actions.generation.data;
5+
package com.magento.idea.magento2plugin.actions.generation.data.code;
66

77
import com.jetbrains.php.lang.documentation.phpdoc.psi.PhpDocComment;
88
import com.jetbrains.php.lang.psi.elements.Method;
99

10-
public class MagentoPluginMethodData {
10+
public class PluginMethodData {
1111
private final PhpDocComment docComment;
1212
private final Method method;
1313
private final Method targetMethod;
1414

15-
public MagentoPluginMethodData(Method targetMethod, PhpDocComment docComment, Method method) {
15+
public PluginMethodData(Method targetMethod, PhpDocComment docComment, Method method) {
1616
super();
1717
this.docComment = docComment;
1818
this.method = method;

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

+9-8
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
import com.intellij.openapi.project.Project;
88
import com.jetbrains.php.lang.psi.elements.Method;
99
import com.jetbrains.php.lang.psi.elements.PhpClass;
10-
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginDiXmlData;
11-
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginFileData;
10+
import com.magento.idea.magento2plugin.actions.generation.CreateAPluginAction;
11+
import com.magento.idea.magento2plugin.actions.generation.data.PluginDiXmlData;
12+
import com.magento.idea.magento2plugin.actions.generation.data.PluginFileData;
1213
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.CreateAPluginDialogValidator;
13-
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginClassGenerator;
14-
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginDiXmlGenerator;
14+
import com.magento.idea.magento2plugin.actions.generation.generator.PluginClassGenerator;
15+
import com.magento.idea.magento2plugin.actions.generation.generator.PluginDiXmlGenerator;
1516
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
1617
import com.magento.idea.magento2plugin.magento.files.Plugin;
1718
import com.magento.idea.magento2plugin.magento.packages.Package;
@@ -108,7 +109,7 @@ private void onOK() {
108109
if (!validator.validate(project)) {
109110
return;
110111
}
111-
new MagentoPluginClassGenerator(new MagentoPluginFileData(
112+
new PluginClassGenerator(new PluginFileData(
112113
getPluginDirectory(),
113114
getPluginClassName(),
114115
getPluginType(),
@@ -117,16 +118,16 @@ private void onOK() {
117118
targetMethod,
118119
getPluginClassFqn(),
119120
getNamespace()
120-
), project).generate();
121+
), project).generate(CreateAPluginAction.ACTION_NAME, true);
121122

122-
new MagentoPluginDiXmlGenerator(new MagentoPluginDiXmlData(
123+
new PluginDiXmlGenerator(new PluginDiXmlData(
123124
getPluginArea(),
124125
getPluginModule(),
125126
targetClass,
126127
getPluginSortOrder(),
127128
getPluginName(),
128129
getPluginClassFqn()
129-
), project).generate();
130+
), project).generate(CreateAPluginAction.ACTION_NAME);
130131

131132
this.setVisible(false);
132133
}

0 commit comments

Comments
 (0)