diff --git a/CHANGELOG.md b/CHANGELOG.md index b837843b8..51c0aa245 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). ## 3.1.3 +### Changed + +- Require restart on plugin update due to using native libraries + ## 3.1.2 ### Fixed diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index 5a124e02a..2f45d2a0f 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -4,7 +4,7 @@ * See COPYING.txt for license details. */ --> - + com.magento.idea.magento2plugin Magento PhpStorm 3.1.3 diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAPluginDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAPluginDialog.java index 944a3216e..da3e82bf8 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAPluginDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAPluginDialog.java @@ -232,7 +232,7 @@ public static void open( } private void createUIComponents() { - final List allModulesList = ModuleIndex.getInstance(project) + final List allModulesList = new ModuleIndex(project) .getEditableModuleNames(); this.pluginModule = new FilteredComboBox(allModulesList); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java index 6d6d2e4f6..519a78c77 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java @@ -192,7 +192,7 @@ public String getObserverModule() { } private void createUIComponents() { //NOPMD - final List allModulesList = ModuleIndex.getInstance(project) + final List allModulesList = new ModuleIndex(project) .getEditableModuleNames(); this.observerModule = new FilteredComboBox(allModulesList); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java index 99cf87247..af65268ff 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java @@ -123,7 +123,7 @@ public NewModuleDialog( this.project = project; this.initialBaseDir = initialBaseDir; this.camelCaseToHyphen = CamelCaseToHyphen.getInstance(); - this.moduleIndex = ModuleIndex.getInstance(project); + this.moduleIndex = new ModuleIndex(project); detectPackageName(initialBaseDir); setContentPane(contentPane); setModal(true); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideClassByAPreferenceDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideClassByAPreferenceDialog.java index 41b13c09b..4c0f7371d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideClassByAPreferenceDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideClassByAPreferenceDialog.java @@ -235,7 +235,7 @@ public static void open(final @NotNull Project project, final PhpClass targetCla } private void createUIComponents() { - final List allModulesList = ModuleIndex.getInstance(project) + final List allModulesList = new ModuleIndex(project) .getEditableModuleNames(); this.preferenceModule = new FilteredComboBox(allModulesList); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideInThemeDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideInThemeDialog.java index e6b540d5b..a5e854c87 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideInThemeDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/OverrideInThemeDialog.java @@ -131,7 +131,7 @@ public static void open(final @NotNull Project project, final PsiFile psiFile) { } private void fillThemeOptions() { - final List themeNames = ModuleIndex.getInstance(project).getEditableThemeNames(); + final List themeNames = new ModuleIndex(project).getEditableThemeNames(); for (final String themeName: themeNames) { theme.addItem(themeName); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/CLICommandClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/CLICommandClassGenerator.java index aea7d454f..7e00fe79a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/CLICommandClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/CLICommandClassGenerator.java @@ -48,7 +48,7 @@ public CLICommandClassGenerator( this.phpClassData = phpClassData; this.dirGenerator = DirectoryGenerator.getInstance(); - this.fileGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileGenerator = new FileFromTemplateGenerator(project); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); } @@ -83,7 +83,7 @@ private PhpFile createCLICommandClass(final String actionName) { private PsiDirectory getParentDirectory() { final String moduleName = this.phpClassData.getModuleName(); final String[] subDirectories = this.phpClassData.getParentDirectory().split("/"); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); for (final String subDirectory : subDirectories) { parentDirectory = dirGenerator.findOrCreateSubdirectory(parentDirectory, subDirectory); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/CronjobClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/CronjobClassGenerator.java index 5d05e808f..49010dd5e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/CronjobClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/CronjobClassGenerator.java @@ -2,6 +2,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; @@ -14,87 +15,98 @@ import com.magento.idea.magento2plugin.bundles.ValidatorBundle; import com.magento.idea.magento2plugin.indexes.ModuleIndex; import com.magento.idea.magento2plugin.magento.files.CronjobTemplate; -import org.jetbrains.annotations.NotNull; import java.util.Properties; +import org.jetbrains.annotations.NotNull; public class CronjobClassGenerator extends FileGenerator { - private CronjobClassData cronjobClassData; - private Project project; - private ValidatorBundle validatorBundle; + private final CronjobClassData cronjobClassData; + private final Project project; + private final ValidatorBundle validatorBundle; private final DirectoryGenerator directoryGenerator; private final FileFromTemplateGenerator fileFromTemplateGenerator; /** - * @param project - * @param cronjobClassData + * Construct generator. + * + * @param project Project + * @param cronjobClassData CronjobClassData */ - public CronjobClassGenerator(Project project, @NotNull CronjobClassData cronjobClassData) { + public CronjobClassGenerator( + final Project project, + final @NotNull CronjobClassData cronjobClassData + ) { super(project); this.project = project; this.cronjobClassData = cronjobClassData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.validatorBundle = new ValidatorBundle(); } /** + * Generate file from code template. * - * @param actionName + * @param actionName String * * @return void */ - public PsiFile generate(String actionName) { - PhpFile cronjobFile = createCronjobClass(actionName); + @Override + public PsiFile generate(final String actionName) { + final PhpFile cronjobFile = createCronjobClass(actionName); if (cronjobFile == null) { - String errorMessage = validatorBundle.message( - "validator.file.cantBeCreated", - "Cronjob Class" + final String errorMessage = validatorBundle.message( + "validator.file.cantBeCreated", + "Cronjob Class" ); - throw new RuntimeException(errorMessage); + throw new RuntimeException(errorMessage);//NOPMD } return cronjobFile; } /** + * Fill template attributes. * - * @param attributes + * @param attributes Properties */ - protected void fillAttributes(Properties attributes) { - String cronjobClassName = this.cronjobClassData.getClassName(); - String cronjobNamespace = this.cronjobClassData.getNamespace(); + @Override + protected void fillAttributes(final Properties attributes) { + final String cronjobClassName = this.cronjobClassData.getClassName(); + final String cronjobNamespace = this.cronjobClassData.getNamespace(); attributes.setProperty("NAME", cronjobClassName); attributes.setProperty("NAMESPACE", cronjobNamespace); } /** - * Generate Cronjob Class according to data model + * Generate Cronjob Class according to data model. * - * @param actionName + * @param actionName String * * @return PhpFile */ - private PhpFile createCronjobClass(String actionName) { - String cronjobClassName = this.cronjobClassData.getClassName(); - String moduleName = this.cronjobClassData.getModuleName(); - String[] cronjobSubDirectories = this.cronjobClassData.getDirectory().split("/"); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project).getModuleDirectoryByModuleName(moduleName); - - for (String cronjobSubDirectory: cronjobSubDirectories) { - parentDirectory = directoryGenerator.findOrCreateSubdirectory(parentDirectory, cronjobSubDirectory); + private PhpFile createCronjobClass(final String actionName) { + final String cronjobClassName = this.cronjobClassData.getClassName(); + final String moduleName = this.cronjobClassData.getModuleName(); + final String[] cronjobSubDirectories = this.cronjobClassData.getDirectory().split("/"); + PsiDirectory parentDirectory = new ModuleIndex(project) + .getModuleDirectoryByModuleName(moduleName); + + for (final String cronjobSubDirectory: cronjobSubDirectories) { + parentDirectory = directoryGenerator + .findOrCreateSubdirectory(parentDirectory, cronjobSubDirectory); } - Properties attributes = getAttributes(); + final Properties attributes = getAttributes(); - PsiFile blockFile = fileFromTemplateGenerator.generate( - new CronjobTemplate(cronjobClassName), - attributes, - parentDirectory, - actionName + final PsiFile blockFile = fileFromTemplateGenerator.generate( + new CronjobTemplate(cronjobClassName), + attributes, + parentDirectory, + actionName ); if (blockFile == null) { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelGenerator.java index 1fe146725..87c3dccde 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelGenerator.java @@ -44,7 +44,7 @@ public DataModelGenerator(final Project project, final DataModelData modelData) this.project = project; this.modelData = modelData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); @@ -122,7 +122,7 @@ private List getUses() { } private PhpClass createModel(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(modelData.getModuleName()); final PsiFile interfaceFile; final Properties attributes = getAttributes(); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGenerator.java index 65865d23f..e9829199b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGenerator.java @@ -44,7 +44,7 @@ public DataModelInterfaceGenerator( this.project = project; this.interfaceData = interfaceData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); @@ -101,7 +101,7 @@ protected void fillAttributes(final Properties attributes) { } private PhpClass createInterface(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(interfaceData.getModuleName()); final PsiFile interfaceFile; final Properties attributes = getAttributes(); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java index 02d5cf79f..52eb307dc 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/MessageQueueClassGenerator.java @@ -50,7 +50,7 @@ public MessageQueueClassGenerator( this.messageQueueClassDataName = messageQueueClassData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); @@ -112,7 +112,7 @@ protected void fillAttributes(final Properties attributes) { } private PhpClass createHandlerClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(this.moduleName); final PsiFile handlerFile; final String[] handlerDirectories = messageQueueClassDataName.getPath().split( diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleBlockClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleBlockClassGenerator.java index a52207bc4..d6b7e31e8 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleBlockClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleBlockClassGenerator.java @@ -45,7 +45,7 @@ public ModuleBlockClassGenerator( ) { super(project); this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.blockFileData = blockFileData; this.project = project; this.validatorBundle = new ValidatorBundle(); @@ -104,7 +104,7 @@ private String getBlockFqn() { } private PhpFile createBlockClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getBlockModule()); final String[] blockDirectories = blockFileData.getBlockDirectory().split(File.separator); for (final String blockDirectory: blockDirectories) { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleCollectionGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleCollectionGenerator.java index a9cdac186..6b9c1770e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleCollectionGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleCollectionGenerator.java @@ -51,7 +51,7 @@ public ModuleCollectionGenerator( this.project = project; this.collectionData = collectionData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); @@ -123,7 +123,7 @@ private String getCollectionModelFqn() { } private PhpClass createClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getModuleName()); final PsiFile modelFile; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java index 1b6daac7d..736287dc4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java @@ -44,10 +44,10 @@ public ModuleComposerJsonGenerator( ) { super(project); this.moduleComposerJsonData = moduleComposerJsonData; - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.directoryGenerator = DirectoryGenerator.getInstance(); this.camelCaseToHyphen = CamelCaseToHyphen.getInstance(); - this.moduleIndex = ModuleIndex.getInstance(project); + this.moduleIndex = new ModuleIndex(project); } @Override diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java index ff7ab2d44..dcb2ebeec 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java @@ -57,7 +57,7 @@ public ModuleControllerClassGenerator( this.project = project; this.controllerFileData = controllerFileData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); @@ -144,7 +144,7 @@ private String getControllerFqn() { } private PhpClass createControllerClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getControllerModule()); final PsiFile controllerFile; final String[] controllerDirectories = controllerFileData.getActionDirectory().split( diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java index 6592c984a..beb89cef1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java @@ -2,6 +2,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.command.WriteCommandAction; @@ -21,30 +22,39 @@ import com.magento.idea.magento2plugin.actions.generation.generator.util.FileFromTemplateGenerator; import com.magento.idea.magento2plugin.actions.generation.util.CodeStyleSettings; import com.magento.idea.magento2plugin.bundles.CommonBundle; +import com.magento.idea.magento2plugin.bundles.ValidatorBundle; import com.magento.idea.magento2plugin.indexes.ModuleIndex; import com.magento.idea.magento2plugin.magento.files.GraphQlResolverPhp; +import com.magento.idea.magento2plugin.magento.packages.File; import com.magento.idea.magento2plugin.magento.packages.MagentoPhpClass; import com.magento.idea.magento2plugin.util.GetFirstClassOfFile; import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; -import com.magento.idea.magento2plugin.bundles.ValidatorBundle; -import org.jetbrains.annotations.NotNull; -import javax.swing.*; -import com.magento.idea.magento2plugin.magento.packages.File; import java.util.Properties; +import javax.swing.JOptionPane; +import org.jetbrains.annotations.NotNull; public class ModuleGraphQlResolverClassGenerator extends FileGenerator { - private GraphQlResolverFileData graphQlResolverFileData; - private Project project; - private ValidatorBundle validatorBundle; - private CommonBundle commonBundle; + private final GraphQlResolverFileData graphQlResolverFileData; + private final Project project; + private final ValidatorBundle validatorBundle; + private final CommonBundle commonBundle; private final DirectoryGenerator directoryGenerator; private final FileFromTemplateGenerator fileFromTemplateGenerator; private final GetFirstClassOfFile getFirstClassOfFile; - public ModuleGraphQlResolverClassGenerator(@NotNull GraphQlResolverFileData graphQlResolverFileData, Project project) { + /** + * Construct generator. + * + * @param graphQlResolverFileData GraphQlResolverFileData + * @param project Project + */ + public ModuleGraphQlResolverClassGenerator( + final @NotNull GraphQlResolverFileData graphQlResolverFileData, + final Project project + ) { super(project); this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.graphQlResolverFileData = graphQlResolverFileData; this.project = project; @@ -53,17 +63,21 @@ public ModuleGraphQlResolverClassGenerator(@NotNull GraphQlResolverFileData grap } @Override - public PsiFile generate(String actionName) { + public PsiFile generate(final String actionName) { final PsiFile[] graphQlFile = {null}; WriteCommandAction.runWriteCommandAction(project, () -> { - PhpClass graphQlResolverClass = GetPhpClassByFQN.getInstance(project).execute(graphQlResolverFileData.getGraphQlResolverClassFqn()); + PhpClass graphQlResolverClass = GetPhpClassByFQN.getInstance(project) + .execute(graphQlResolverFileData.getGraphQlResolverClassFqn()); if (graphQlResolverClass == null) { graphQlResolverClass = createGraphQlResolverClass(actionName); } if (graphQlResolverClass == null) { - String errorMessage = validatorBundle.message("validator.file.cantBeCreated", "GraphQL Resolver Class"); + final String errorMessage = validatorBundle.message( + "validator.file.cantBeCreated", + "GraphQL Resolver Class" + ); JOptionPane.showMessageDialog( null, errorMessage, @@ -74,19 +88,21 @@ public PsiFile generate(String actionName) { return; } - Properties attributes = new Properties(); - String methodTemplate = PhpCodeUtil.getCodeTemplate( + final Properties attributes = new Properties(); + final String methodTemplate = PhpCodeUtil.getCodeTemplate( GraphQlResolverPhp.GRAPHQL_RESOLVER_TEMPLATE_NAME, attributes, project); graphQlFile[0] = graphQlResolverClass.getContainingFile(); - CodeStyleSettings codeStyleSettings = new CodeStyleSettings((PhpFile) graphQlFile[0]); + final CodeStyleSettings codeStyleSettings = new CodeStyleSettings( + (PhpFile) graphQlFile[0] + ); codeStyleSettings.adjustBeforeWrite(); - PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(project); - Document document = psiDocumentManager.getDocument(graphQlFile[0]); - int insertPos = getInsertPos(graphQlResolverClass); + final PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(project); + final Document document = psiDocumentManager.getDocument(graphQlFile[0]); + final int insertPos = getInsertPos(graphQlResolverClass); document.insertString(insertPos, methodTemplate); - int endPos = insertPos + methodTemplate.length() + 1; + final int endPos = insertPos + methodTemplate.length() + 1; CodeStyleManager.getInstance(project).reformatText(graphQlFile[0], insertPos, endPos); psiDocumentManager.commitDocument(document); codeStyleSettings.restore(); @@ -94,10 +110,13 @@ public PsiFile generate(String actionName) { return graphQlFile[0]; } - private int getInsertPos(PhpClass graphQlResolverClass) { + private int getInsertPos(final PhpClass graphQlResolverClass) { int insertPos = -1; - LeafPsiElement[] leafElements = PsiTreeUtil.getChildrenOfType(graphQlResolverClass, LeafPsiElement.class); - for (LeafPsiElement leafPsiElement: leafElements) { + final LeafPsiElement[] leafElements = PsiTreeUtil.getChildrenOfType( + graphQlResolverClass, + LeafPsiElement.class + ); + for (final LeafPsiElement leafPsiElement: leafElements) { if (!leafPsiElement.getText().equals(MagentoPhpClass.CLOSING_TAG)) { continue; } @@ -106,17 +125,23 @@ private int getInsertPos(PhpClass graphQlResolverClass) { return insertPos; } - private PhpClass createGraphQlResolverClass(String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + private PhpClass createGraphQlResolverClass(final String actionName) { + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(graphQlResolverFileData.getGraphQlResolverModule()); - String[] graphQlResolverDirectories = graphQlResolverFileData.getGraphQlResolverDirectory().split(File.separator); - for (String graphQlResolverDirectory: graphQlResolverDirectories) { - parentDirectory = directoryGenerator.findOrCreateSubdirectory(parentDirectory, graphQlResolverDirectory); + final String[] graphQlResolverDirectories = graphQlResolverFileData + .getGraphQlResolverDirectory().split(File.separator); + for (final String graphQlResolverDirectory: graphQlResolverDirectories) { + parentDirectory = directoryGenerator.findOrCreateSubdirectory( + parentDirectory, + graphQlResolverDirectory + ); } - Properties attributes = getAttributes(); - PsiFile graphQlResolverFile = fileFromTemplateGenerator.generate( - GraphQlResolverPhp.getInstance(graphQlResolverFileData.getGraphQlResolverClassName()), + final Properties attributes = getAttributes(); + final PsiFile graphQlResolverFile = fileFromTemplateGenerator.generate( + GraphQlResolverPhp.getInstance( + graphQlResolverFileData.getGraphQlResolverClassName() + ), attributes, parentDirectory, actionName @@ -127,8 +152,10 @@ private PhpClass createGraphQlResolverClass(String actionName) { return getFirstClassOfFile.execute((PhpFile) graphQlResolverFile); } - protected void fillAttributes(Properties attributes) { - String graphQlResolverClassName = graphQlResolverFileData.getGraphQlResolverClassName(); + @Override + protected void fillAttributes(final Properties attributes) { + final String graphQlResolverClassName + = graphQlResolverFileData.getGraphQlResolverClassName(); attributes.setProperty("NAME", graphQlResolverClassName); attributes.setProperty("NAMESPACE", graphQlResolverFileData.getNamespace()); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleModelGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleModelGenerator.java index fc9b0960d..6a7332fd4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleModelGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleModelGenerator.java @@ -50,7 +50,7 @@ public ModuleModelGenerator( this.project = project; this.modelData = modelData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); @@ -122,7 +122,7 @@ private String getModelFqn() { } private PhpClass createModelClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getModuleName()); final PsiFile modelFile; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleRegistrationPhpGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleRegistrationPhpGenerator.java index 011093080..4cb029902 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleRegistrationPhpGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleRegistrationPhpGenerator.java @@ -2,6 +2,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; @@ -11,8 +12,8 @@ import com.magento.idea.magento2plugin.actions.generation.generator.util.DirectoryGenerator; import com.magento.idea.magento2plugin.actions.generation.generator.util.FileFromTemplateGenerator; import com.magento.idea.magento2plugin.magento.files.RegistrationPhp; -import org.jetbrains.annotations.NotNull; import java.util.Properties; +import org.jetbrains.annotations.NotNull; public class ModuleRegistrationPhpGenerator extends FileGenerator { @@ -20,22 +21,54 @@ public class ModuleRegistrationPhpGenerator extends FileGenerator { private final FileFromTemplateGenerator fileFromTemplateGenerator; private final DirectoryGenerator directoryGenerator; - public ModuleRegistrationPhpGenerator(@NotNull ModuleRegistrationPhpData moduleRegistrationPhpData, Project project) { + /** + * Construct generator. + * + * @param moduleRegistrationPhpData ModuleRegistrationPhpData + * @param project Project + */ + public ModuleRegistrationPhpGenerator( + final @NotNull ModuleRegistrationPhpData moduleRegistrationPhpData, + final Project project + ) { super(project); this.moduleRegistrationPhpData = moduleRegistrationPhpData; - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.directoryGenerator = DirectoryGenerator.getInstance(); } - public PsiFile generate(String actionName) { + /** + * Generate file. + * + * @param actionName String + * @return PsiFile + */ + @Override + public PsiFile generate(final String actionName) { if (moduleRegistrationPhpData.getCreateModuleDirs()) { - ModuleDirectoriesData moduleDirectoriesData = directoryGenerator.createOrFindModuleDirectories(moduleRegistrationPhpData.getPackageName(), moduleRegistrationPhpData.getModuleName(), moduleRegistrationPhpData.getBaseDir()); - return fileFromTemplateGenerator.generate(RegistrationPhp.getInstance(), getAttributes(), moduleDirectoriesData.getModuleDirectory(), actionName); + final ModuleDirectoriesData moduleDirectoriesData = directoryGenerator + .createOrFindModuleDirectories( + moduleRegistrationPhpData.getPackageName(), + moduleRegistrationPhpData.getModuleName(), + moduleRegistrationPhpData.getBaseDir() + ); + return fileFromTemplateGenerator.generate( + RegistrationPhp.getInstance(), + getAttributes(), + moduleDirectoriesData.getModuleDirectory(), + actionName + ); } - return fileFromTemplateGenerator.generate(RegistrationPhp.getInstance(), getAttributes(), moduleRegistrationPhpData.getBaseDir(), actionName); + return fileFromTemplateGenerator.generate( + RegistrationPhp.getInstance(), + getAttributes(), + moduleRegistrationPhpData.getBaseDir(), + actionName + ); } - protected void fillAttributes(Properties attributes) { + @Override + protected void fillAttributes(final Properties attributes) { attributes.setProperty("PACKAGE", moduleRegistrationPhpData.getPackageName()); attributes.setProperty("MODULE_NAME", moduleRegistrationPhpData.getModuleName()); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleResourceModelGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleResourceModelGenerator.java index e1a7542ae..fb892539f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleResourceModelGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleResourceModelGenerator.java @@ -51,7 +51,7 @@ public ModuleResourceModelGenerator( this.project = project; this.resourceModelData = resourceModelData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); @@ -123,7 +123,7 @@ private String getResourceModelFqn() { } private PhpClass createClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getModuleName()); final PsiFile modelFile; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleViewModelClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleViewModelClassGenerator.java index 05847e1f9..a83ba7724 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleViewModelClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleViewModelClassGenerator.java @@ -45,7 +45,7 @@ public ModuleViewModelClassGenerator( super(project); this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.viewModelFileData = viewModelFileData; this.project = project; this.validatorBundle = new ValidatorBundle(); @@ -104,7 +104,7 @@ private String getViewModelFqn() { } private PhpFile createViewModelClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getViewModelModule()); final String[] viewModelDirectories = viewModelFileData.getViewModelDirectory() .split(File.separator); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleXmlGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleXmlGenerator.java index d072796b3..106b7a23e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleXmlGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleXmlGenerator.java @@ -35,7 +35,7 @@ public ModuleXmlGenerator( ) { super(project); this.moduleXmlData = moduleXmlData; - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.directoryGenerator = DirectoryGenerator.getInstance(); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/ObserverClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/ObserverClassGenerator.java index d6abbe72e..da453a7a7 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ObserverClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ObserverClassGenerator.java @@ -56,7 +56,7 @@ public ObserverClassGenerator( this.project = project; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); @@ -131,7 +131,7 @@ private int getInsertPos(final PhpClass observerClass) { } private PhpClass createObserverClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(observerFileData.getObserverModule()); final String[] observerDirectories = observerFileData.getObserverDirectory() .split(File.separator); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/OverrideInThemeGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/OverrideInThemeGenerator.java index a8b6c8506..4be05b573 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/OverrideInThemeGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/OverrideInThemeGenerator.java @@ -67,7 +67,7 @@ public void execute(final PsiFile baseFile, final String themeName, final boolea return; } - final ModuleIndex moduleIndex = ModuleIndex.getInstance(project); + final ModuleIndex moduleIndex = new ModuleIndex(project); PsiDirectory directory = moduleIndex.getModuleDirectoryByModuleName(themeName); directory = getTargetDirectory(directory, pathComponents); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java index eb262867c..cb80c4fdd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/PluginClassGenerator.java @@ -72,7 +72,7 @@ public PluginClassGenerator( ) { super(project); this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.fillTextBuffer = FillTextBufferWithPluginMethods.getInstance(); this.collectInsertedMethods = CollectInsertedMethods.getInstance(); @@ -203,7 +203,7 @@ private boolean checkIfMethodExist( } private PhpClass createPluginClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getPluginModule()); final String[] pluginDirectories = pluginFileData.getPluginDirectory() .split(File.separator); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/PreferenceClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/PreferenceClassGenerator.java index d675dc85b..9e8c2f0c6 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/PreferenceClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/PreferenceClassGenerator.java @@ -42,7 +42,7 @@ public PreferenceClassGenerator( ) { super(project); this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); this.preferenceFileData = preferenceFileData; this.project = project; @@ -80,7 +80,7 @@ public PsiFile generate(final String actionName) { } private PhpClass createPluginClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(getPreferenceModule()); final String[] pluginDirectories = preferenceFileData.getPreferenceDirectory() .split(File.separator); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentDataProviderGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentDataProviderGenerator.java index 6cdd90f5c..e7f46016c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentDataProviderGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentDataProviderGenerator.java @@ -52,7 +52,7 @@ public UiComponentDataProviderGenerator( this.uiComponentGridDataProviderData = uiComponentGridDataProviderData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); this.validatorBundle = new ValidatorBundle(); this.commonBundle = new CommonBundle(); this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); @@ -114,7 +114,7 @@ protected void fillAttributes(final Properties attributes) { } private PhpClass createDataProviderClass(final String actionName) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(this.moduleName); final PsiFile dataProviderFile; final String[] dataProviderDirectories = uiComponentGridDataProviderData.getPath().split( diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonPhpClassGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonPhpClassGenerator.java index a87f842b1..9fbc04109 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonPhpClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonPhpClassGenerator.java @@ -69,10 +69,10 @@ protected PhpClass createButton( ) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); final String moduleName = buttonData.getButtonModule(); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); final String[] directories = buttonData.getButtonDirectory().split(File.separator); for (final String pluginDirectory: directories) { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java index 473e7e833..03c104c83 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormGenerator.java @@ -80,10 +80,10 @@ protected PsiFile createForm( ) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); final String moduleName = uiFormFileData.getModuleName(); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleViewDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java index 6a996edc6..5fb9b2bb9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java @@ -39,8 +39,8 @@ public UiComponentGridXmlGenerator( this.uiComponentGridData = uiComponentGridData; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.moduleIndex = ModuleIndex.getInstance(project); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.moduleIndex = new ModuleIndex(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); } @Override diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java index ed47a784d..a7aad6da3 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FileFromTemplateGenerator.java @@ -2,6 +2,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.actions.generation.generator.util; import com.intellij.ide.fileTemplates.DefaultTemplatePropertiesProvider; @@ -21,38 +22,42 @@ import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.util.IncorrectOperationException; import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import com.magento.idea.magento2plugin.magento.packages.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Properties; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class FileFromTemplateGenerator { - private static FileFromTemplateGenerator INSTANCE = null; - private Project project; + private final Project project; - public static FileFromTemplateGenerator getInstance(Project project) { - if (null == INSTANCE) { - INSTANCE = new FileFromTemplateGenerator(); - } - INSTANCE.project = project; - return INSTANCE; + public FileFromTemplateGenerator(final Project project) { + this.project = project; } + /** + * Generate file. + * + * @param moduleFile ModuleFileInterface + * @param attributes Properties + * @param baseDir PsiDirectory + * @param actionName String + * @return PsiFile + */ @Nullable public PsiFile generate( - @NotNull ModuleFileInterface moduleFile, - @NotNull Properties attributes, - @NotNull PsiDirectory baseDir, - @NotNull String actionName) - { - Ref fileRef = new Ref<>(null); - Ref exceptionRef = new Ref<>(null); - String filePath = baseDir.getText().concat("/").concat(moduleFile.getFileName()); + final @NotNull ModuleFileInterface moduleFile, + final @NotNull Properties attributes, + final @NotNull PsiDirectory baseDir, + final @NotNull String actionName + ) { + final Ref fileRef = new Ref<>(null); + final Ref exceptionRef = new Ref<>(null); + final String filePath = baseDir.getText().concat("/").concat(moduleFile.getFileName()); CommandProcessor.getInstance().executeCommand(project, () -> { - Runnable run = () -> { + final Runnable run = () -> { try { PsiFile file = createFile(moduleFile, filePath, baseDir, attributes); if (file != null) { @@ -65,24 +70,24 @@ public PsiFile generate( ApplicationManager.getApplication().runWriteAction(run); }, actionName, null); - if (!exceptionRef.isNull()) { - Messages.showErrorDialog(exceptionRef.get(), actionName); - return null; - } else { + if (exceptionRef.isNull()) { return fileRef.get(); } + + Messages.showErrorDialog(exceptionRef.get(), actionName); + return null; } @Nullable private PsiFile createFile( - @NotNull ModuleFileInterface moduleFile, - @NotNull String filePath, - @NotNull PsiDirectory baseDir, - @NotNull Properties attributes - ) throws IOException, IncorrectOperationException { - List path = StringUtil.split(filePath.replace(File.separator, "/"), "/"); - String fileName = path.get(path.size() - 1); - PsiFile fileTemplate = createFileFromTemplate( + final @NotNull ModuleFileInterface moduleFile, + final @NotNull String filePath, + final @NotNull PsiDirectory baseDir, + final @NotNull Properties attributes + ) throws IOException { + final List path = StringUtil.split(filePath.replace(File.separator, "/"), "/"); + final String fileName = path.get(path.size() - 1); + final PsiFile fileTemplate = createFileFromTemplate( getTemplateManager(), baseDir, moduleFile.getTemplate(), attributes, fileName, moduleFile.getLanguage()); if (fileTemplate == null) { @@ -99,13 +104,25 @@ private PsiFile createFile( } } + /** + * Create file from code template. + * + * @param templateManager FileTemplateManager + * @param directory PsiDirectory + * @param templateName String + * @param properties Properties + * @param fileName String + * @param language Language + * @return PsiFile + * @throws IOException exception + */ public PsiFile createFileFromTemplate( - @NotNull FileTemplateManager templateManager, - @NotNull PsiDirectory directory, - @NotNull String templateName, - @NotNull Properties properties, - @NotNull String fileName, - @NotNull Language language + final @NotNull FileTemplateManager templateManager, + final @NotNull PsiDirectory directory, + final @NotNull String templateName, + final @NotNull Properties properties, + final @NotNull String fileName, + final @NotNull Language language ) throws IOException { FileTemplate fileTemplate; try { @@ -115,8 +132,14 @@ public PsiFile createFileFromTemplate( } fillDefaultProperties(templateManager, properties, directory); - String fileTemplateText = fileTemplate.getText(properties); - PsiFile file = PsiFileFactory.getInstance(project).createFileFromText(fileName, language, fileTemplateText, true, false); + final String fileTemplateText = fileTemplate.getText(properties); + final PsiFile file = PsiFileFactory.getInstance(project).createFileFromText( + fileName, + language, + fileTemplateText, + true, + false + ); if (fileTemplate.isReformatCode()) { CodeStyleManager.getInstance(project).reformat(file); } @@ -124,19 +147,34 @@ public PsiFile createFileFromTemplate( return file; } - public void fillDefaultProperties(@NotNull FileTemplateManager templateManager, @NotNull Properties props, @NotNull PsiDirectory directory) { - Properties hardCodedProperties = templateManager.getDefaultProperties(); + /** + * Fill template properties. + * + * @param templateManager FileTemplateManager + * @param props Properties + * @param directory PsiDirectory + */ + public void fillDefaultProperties( + final @NotNull FileTemplateManager templateManager, + final @NotNull Properties props, + final @NotNull PsiDirectory directory + ) { + final Properties hardCodedProperties = templateManager.getDefaultProperties(); Iterator iterator = hardCodedProperties.keySet().iterator(); - while(iterator.hasNext()) { - Object propertyKey = iterator.next(); - props.setProperty((String)propertyKey, hardCodedProperties.getProperty((String)propertyKey)); + while (iterator.hasNext()) { + final Object propertyKey = iterator.next(); + props.setProperty( + (String)propertyKey, + hardCodedProperties.getProperty((String)propertyKey) + ); } iterator = DefaultTemplatePropertiesProvider.EP_NAME.getExtensionList().iterator(); - while(iterator.hasNext()) { - DefaultTemplatePropertiesProvider provider = (DefaultTemplatePropertiesProvider)iterator.next(); + while (iterator.hasNext()) { + final DefaultTemplatePropertiesProvider provider + = (DefaultTemplatePropertiesProvider)iterator.next(); provider.fillProperties(directory, props); } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateAclXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateAclXml.java index e74410ff5..5a76a27f4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateAclXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateAclXml.java @@ -33,9 +33,9 @@ public FindOrCreateAclXml(final Project project) { public PsiFile execute(final String actionName, final String moduleName) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); parentDirectory = directoryGenerator .findOrCreateSubdirectory(parentDirectory, Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCronGroupXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCronGroupXml.java index 23b07b1b5..40f1bf0ac 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCronGroupXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCronGroupXml.java @@ -31,8 +31,8 @@ public class FindOrCreateCronGroupXml { public FindOrCreateCronGroupXml(final Project project) { this.project = project; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); - this.moduleIndex = ModuleIndex.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); + this.moduleIndex = new ModuleIndex(project); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCrontabXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCrontabXml.java index ac3afa699..6a0e4800d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCrontabXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCrontabXml.java @@ -31,8 +31,8 @@ public FindOrCreateCrontabXml(final Project project) { this.project = project; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); - this.moduleIndex = ModuleIndex.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); + this.moduleIndex = new ModuleIndex(project); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaWhitelistJson.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaWhitelistJson.java index 4e443f3e8..01c5258a2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaWhitelistJson.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaWhitelistJson.java @@ -39,7 +39,7 @@ public FindOrCreateDbSchemaWhitelistJson(final @NotNull Project project) { public PsiFile execute(final @NotNull String actionName, final @NotNull String moduleName) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); final ModuleDbSchemaWhitelistJson moduleDbSchemaWhitelistJson = ModuleDbSchemaWhitelistJson.getInstance(); @@ -52,7 +52,7 @@ public PsiFile execute(final @NotNull String actionName, final @NotNull String m ); if (dbSchemaWhitelistJson == null) { - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); parentDirectory = directoryGenerator .findOrCreateSubdirectory(parentDirectory, Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaXmlUtil.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaXmlUtil.java index 189f2eaf5..2d70471ac 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaXmlUtil.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDbSchemaXmlUtil.java @@ -33,9 +33,9 @@ public FindOrCreateDbSchemaXmlUtil(final Project project) { public PsiFile execute(final String actionName, final String moduleName) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); parentDirectory = directoryGenerator .findOrCreateSubdirectory(parentDirectory, Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDiXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDiXml.java index 7ea4fab42..854b59358 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDiXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateDiXml.java @@ -34,9 +34,9 @@ public FindOrCreateDiXml(final Project project) { public PsiFile execute(final String actionName, final String moduleName, final String area) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEventsXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEventsXml.java index c760a1f42..23d44f2b1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEventsXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateEventsXml.java @@ -38,8 +38,8 @@ public PsiFile execute( ) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + new FileFromTemplateGenerator(project); + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateLayoutXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateLayoutXml.java index 89be79cb8..e77bebfdd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateLayoutXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateLayoutXml.java @@ -45,9 +45,9 @@ public PsiFile execute( ) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleViewDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateMenuXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateMenuXml.java index 0fbf0da7b..d699ce927 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateMenuXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateMenuXml.java @@ -33,9 +33,9 @@ public FindOrCreateMenuXml(final Project project) { public PsiFile execute(final String actionName, final String moduleName) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java index 0f9e47d5c..72a2d0781 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java @@ -29,8 +29,8 @@ public FindOrCreateQueueXml(final Project project) { this.project = project; this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); - this.moduleIndex = ModuleIndex.getInstance(project); + this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); + this.moduleIndex = new ModuleIndex(project); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateRoutesXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateRoutesXml.java index beae9b6fd..385aef23a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateRoutesXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateRoutesXml.java @@ -34,9 +34,9 @@ public FindOrCreateRoutesXml(final Project project) { public PsiFile execute(final String actionName, final String moduleName, final String area) { final DirectoryGenerator directoryGenerator = DirectoryGenerator.getInstance(); final FileFromTemplateGenerator fileFromTemplateGenerator = - FileFromTemplateGenerator.getInstance(project); + new FileFromTemplateGenerator(project); - PsiDirectory parentDirectory = ModuleIndex.getInstance(project) + PsiDirectory parentDirectory = new ModuleIndex(project) .getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); fileDirectories.add(Package.moduleBaseAreaDir); diff --git a/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java b/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java index c0c5c4157..c3facb976 100644 --- a/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java +++ b/src/com/magento/idea/magento2plugin/indexes/ModuleIndex.java @@ -26,26 +26,15 @@ public final class ModuleIndex { - private static ModuleIndex instance; - - private Project project; - - private ModuleIndex() { - } + private final Project project; /** * Constructor. * * @param project Project - * @return ModuleIndex */ - public static ModuleIndex getInstance(final Project project) { - if (null == instance) { //NOPMD - instance = new ModuleIndex(); - } - instance.project = project; - - return instance; + public ModuleIndex(final Project project) { + this.project = project; } public List getEditableModuleNames() {