Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring code generation #65

Merged
merged 2 commits into from
Mar 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
import com.intellij.psi.PsiFile;
import com.jetbrains.php.lang.psi.elements.Method;
import com.jetbrains.php.lang.psi.elements.PhpClass;
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginMethodData;
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginMethodsGenerator;
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
import com.magento.idea.magento2plugin.actions.generation.generator.code.PluginMethodsGenerator;
import com.magento.idea.magento2plugin.magento.files.Plugin;
import org.jetbrains.annotations.NotNull;

public class PluginGenerateAfterMethodAction extends CodeInsightAction {
private final PluginGeneratePluginMethodHandlerBase myHandler = new PluginGeneratePluginMethodHandlerBase(Plugin.PluginType.after) {
protected MagentoPluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
return (new MagentoPluginMethodsGenerator(currentClass, method, targetClassKey)
private final PluginGenerateMethodHandlerBase myHandler = new PluginGenerateMethodHandlerBase(Plugin.PluginType.after) {
protected PluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
return (new PluginMethodsGenerator(currentClass, method, targetClassKey)
.createPluginMethods(Plugin.PluginType.after));
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
import com.intellij.psi.PsiFile;
import com.jetbrains.php.lang.psi.elements.Method;
import com.jetbrains.php.lang.psi.elements.PhpClass;
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginMethodData;
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginMethodsGenerator;
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
import com.magento.idea.magento2plugin.actions.generation.generator.code.PluginMethodsGenerator;
import com.magento.idea.magento2plugin.magento.files.Plugin;
import org.jetbrains.annotations.NotNull;

public class PluginGenerateAroundMethodAction extends CodeInsightAction {
private final PluginGeneratePluginMethodHandlerBase myHandler = new PluginGeneratePluginMethodHandlerBase(Plugin.PluginType.around) {
protected MagentoPluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
return (new MagentoPluginMethodsGenerator(currentClass, method, targetClassKey)
private final PluginGenerateMethodHandlerBase myHandler = new PluginGenerateMethodHandlerBase(Plugin.PluginType.around) {
protected PluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
return (new PluginMethodsGenerator(currentClass, method, targetClassKey)
.createPluginMethods(Plugin.PluginType.around));
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@
import com.intellij.psi.PsiFile;
import com.jetbrains.php.lang.psi.elements.Method;
import com.jetbrains.php.lang.psi.elements.PhpClass;
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginMethodData;
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginMethodsGenerator;
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
import com.magento.idea.magento2plugin.actions.generation.generator.code.PluginMethodsGenerator;
import com.magento.idea.magento2plugin.magento.files.Plugin;
import org.jetbrains.annotations.NotNull;
import com.intellij.openapi.util.Key;

public class PluginGenerateBeforeMethodAction extends CodeInsightAction {
private final PluginGeneratePluginMethodHandlerBase myHandler = new PluginGeneratePluginMethodHandlerBase(Plugin.PluginType.before) {
protected MagentoPluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
return (new MagentoPluginMethodsGenerator(currentClass, method, targetClassKey)
private final PluginGenerateMethodHandlerBase myHandler = new PluginGenerateMethodHandlerBase(Plugin.PluginType.before) {
protected PluginMethodData[] createPluginMethods(PhpClass currentClass, Method method, Key<Object> targetClassKey) {
return (new PluginMethodsGenerator(currentClass, method, targetClassKey)
.createPluginMethods(Plugin.PluginType.before));
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
import com.jetbrains.php.lang.psi.elements.*;
import java.util.*;
import com.magento.idea.magento2plugin.actions.generation.ImportReferences.PhpClassReferenceResolver;
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginMethodData;
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginMethodsGenerator;
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
import com.magento.idea.magento2plugin.actions.generation.generator.code.PluginMethodsGenerator;
import com.magento.idea.magento2plugin.actions.generation.util.CodeStyleSettings;
import com.magento.idea.magento2plugin.actions.generation.util.CollectInsertedMethods;
import com.magento.idea.magento2plugin.actions.generation.util.FillTextBufferWithPluginMethods;
Expand All @@ -41,12 +41,12 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public abstract class PluginGeneratePluginMethodHandlerBase implements LanguageCodeInsightActionHandler {
public abstract class PluginGenerateMethodHandlerBase implements LanguageCodeInsightActionHandler {
private CollectInsertedMethods collectInsertedMethods;
public String type;
public FillTextBufferWithPluginMethods fillTextBuffer;

public PluginGeneratePluginMethodHandlerBase(Plugin.PluginType type) {
public PluginGenerateMethodHandlerBase(Plugin.PluginType type) {
this.type = type.toString();
this.fillTextBuffer = FillTextBufferWithPluginMethods.getInstance();
this.collectInsertedMethods = CollectInsertedMethods.getInstance();
Expand All @@ -69,7 +69,7 @@ public boolean isValidFor(Editor editor, PsiFile file) {
public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile pluginFile) {
PhpFile pluginPhpFile = (PhpFile)pluginFile;
PhpClass pluginClass = PhpCodeEditUtil.findClassAtCaret(editor, pluginPhpFile);
Key<Object> targetClassKey = Key.create(MagentoPluginMethodsGenerator.originalTargetKey);
Key<Object> targetClassKey = Key.create(PluginMethodsGenerator.originalTargetKey);
if (pluginClass == null) {
return;
}
Expand Down Expand Up @@ -97,7 +97,7 @@ public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull Ps

for (PhpNamedElementNode member : members) {
PsiElement method = member.getPsiElement();
MagentoPluginMethodData[] pluginMethods = this.createPluginMethods(pluginClass, (Method) method, targetClassKey);
PluginMethodData[] pluginMethods = this.createPluginMethods(pluginClass, (Method) method, targetClassKey);
fillTextBuffer.execute(targetClassKey, insertedMethodsNames, resolver, textBuf, pluginMethods);
}

Expand All @@ -121,7 +121,7 @@ private void insertPluginMethodsToFile(@NotNull Project project, @NotNull Editor
}
}

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

protected String getErrorMessage() {
return "No methods to generate";
Expand All @@ -135,7 +135,7 @@ public boolean startInWriteAction() {
protected PhpNamedElementNode[] chooseMembers(PhpNamedElementNode[] members, boolean allowEmptySelection, Project project) {
PhpNamedElementNode[] nodes = fixOrderToBeAsOriginalFiles(members).toArray(new PhpNamedElementNode[members.length]);
if (!ApplicationManager.getApplication().isHeadlessEnvironment()) {
PluginGeneratePluginMethodHandlerBase.MyMemberChooser chooser = new PluginGeneratePluginMethodHandlerBase.MyMemberChooser(nodes, allowEmptySelection, project);
PluginGenerateMethodHandlerBase.MyMemberChooser chooser = new PluginGenerateMethodHandlerBase.MyMemberChooser(nodes, allowEmptySelection, project);
chooser.setTitle("Choose Methods");
chooser.setCopyJavadocVisible(false);
chooser.show();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
package com.magento.idea.magento2plugin.actions.generation.data;

import com.intellij.psi.PsiDirectory;

public class ModuleComposerJsonData {
private final String packageName;
private final String moduleName;
private PsiDirectory baseDir;
private final String moduleDescription;
private final String composerPackageName;
private final String moduleVersion;

public ModuleComposerJsonData(
String packageName,
String moduleName,
PsiDirectory baseDir,
String moduleDescription,
String composerPackageName,
String moduleVersion
) {
this.packageName = packageName;
this.moduleName = moduleName;
this.baseDir = baseDir;
this.moduleDescription = moduleDescription;
this.composerPackageName = composerPackageName;
this.moduleVersion = moduleVersion;
}

public String getPackageName() {
return this.packageName;
}

public String getModuleName() {
return this.moduleName;
}

public PsiDirectory getBaseDir() {
return this.baseDir;
}

public String getModuleDescription() {
return this.moduleDescription;
}

public String getComposerPackageName() {
return this.composerPackageName;
}

public String getModuleVersion() {
return this.moduleVersion;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
package com.magento.idea.magento2plugin.actions.generation.data;

import com.intellij.psi.PsiDirectory;

public class ModuleRegistrationPhpData {
private final String packageName;
private final String moduleName;
private PsiDirectory baseDir;

public ModuleRegistrationPhpData(
String packageName,
String moduleName,
PsiDirectory baseDir
) {
this.packageName = packageName;
this.moduleName = moduleName;
this.baseDir = baseDir;
}

public String getPackageName() {
return this.packageName;
}

public String getModuleName() {
return this.moduleName;
}

public PsiDirectory getBaseDir() {
return this.baseDir;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
package com.magento.idea.magento2plugin.actions.generation.data;

import com.intellij.psi.PsiDirectory;

public class ModuleXmlData {
private final String packageName;
private final String moduleName;
private PsiDirectory baseDir;

public ModuleXmlData(
String packageName,
String moduleName,
PsiDirectory baseDir
) {
this.packageName = packageName;
this.moduleName = moduleName;
this.baseDir = baseDir;
}

public String getPackageName() {
return this.packageName;
}

public String getModuleName() {
return this.moduleName;
}

public PsiDirectory getBaseDir() {
return this.baseDir;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@

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

public class MagentoPluginDiXmlData {
public class PluginDiXmlData {
private String area;
private String pluginModule;
private PhpClass targetClass;
private final String sortOrder;
private final String pluginName;
private String pluginFqn;

public MagentoPluginDiXmlData(
public PluginDiXmlData(
String area,
String pluginModule,
PhpClass targetClass,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import com.jetbrains.php.lang.psi.elements.Method;
import com.jetbrains.php.lang.psi.elements.PhpClass;

public class MagentoPluginFileData {
public class PluginFileData {
private String pluginDirectory;
private String pluginClassName;
private String pluginType;
Expand All @@ -17,7 +17,7 @@ public class MagentoPluginFileData {
private String pluginFqn;
private String namespace;

public MagentoPluginFileData(
public PluginFileData(
String pluginDirectory,
String pluginClassName,
String pluginType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
package com.magento.idea.magento2plugin.actions.generation.data;
package com.magento.idea.magento2plugin.actions.generation.data.code;

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

public class MagentoPluginMethodData {
public class PluginMethodData {
private final PhpDocComment docComment;
private final Method method;
private final Method targetMethod;

public MagentoPluginMethodData(Method targetMethod, PhpDocComment docComment, Method method) {
public PluginMethodData(Method targetMethod, PhpDocComment docComment, Method method) {
super();
this.docComment = docComment;
this.method = method;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
import com.intellij.openapi.project.Project;
import com.jetbrains.php.lang.psi.elements.Method;
import com.jetbrains.php.lang.psi.elements.PhpClass;
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginDiXmlData;
import com.magento.idea.magento2plugin.actions.generation.data.MagentoPluginFileData;
import com.magento.idea.magento2plugin.actions.generation.CreateAPluginAction;
import com.magento.idea.magento2plugin.actions.generation.data.PluginDiXmlData;
import com.magento.idea.magento2plugin.actions.generation.data.PluginFileData;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.CreateAPluginDialogValidator;
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginClassGenerator;
import com.magento.idea.magento2plugin.actions.generation.generator.MagentoPluginDiXmlGenerator;
import com.magento.idea.magento2plugin.actions.generation.generator.PluginClassGenerator;
import com.magento.idea.magento2plugin.actions.generation.generator.PluginDiXmlGenerator;
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
import com.magento.idea.magento2plugin.magento.files.Plugin;
import com.magento.idea.magento2plugin.magento.packages.Package;
Expand Down Expand Up @@ -108,7 +109,7 @@ private void onOK() {
if (!validator.validate(project)) {
return;
}
new MagentoPluginClassGenerator(new MagentoPluginFileData(
new PluginClassGenerator(new PluginFileData(
getPluginDirectory(),
getPluginClassName(),
getPluginType(),
Expand All @@ -117,16 +118,16 @@ private void onOK() {
targetMethod,
getPluginClassFqn(),
getNamespace()
), project).generate();
), project).generate(CreateAPluginAction.ACTION_NAME, true);

new MagentoPluginDiXmlGenerator(new MagentoPluginDiXmlData(
new PluginDiXmlGenerator(new PluginDiXmlData(
getPluginArea(),
getPluginModule(),
targetClass,
getPluginSortOrder(),
getPluginName(),
getPluginClassFqn()
), project).generate();
), project).generate(CreateAPluginAction.ACTION_NAME);

this.setVisible(false);
}
Expand Down
Loading