From 96995813265769c61290922e789579593a2b050f Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Sun, 4 Apr 2021 17:54:49 +0300 Subject: [PATCH 1/2] Refactored php file generators to extend PhpFileGenerator, fixed static test issues, fixed Edit entity controller generation code duplication --- .../FormViewControllerDtoConverter.java | 45 ------- .../UiComponentFormLayoutDtoConverter.java | 8 +- .../generation/dialog/NewDataModelDialog.java | 8 +- .../generation/dialog/NewEntityDialog.java | 12 +- .../dialog/NewUiComponentFormDialog.java | 4 +- .../util/ClassPropertyFormatterUtil.java | 8 +- .../generator/DataModelGenerator.java | 118 ++++-------------- .../DataModelInterfaceGenerator.java | 113 +++-------------- .../DeleteEntityByIdCommandGenerator.java | 58 +-------- .../DeleteEntityControllerFileGenerator.java | 3 +- .../generator/EditEntityActionGenerator.java | 58 +-------- .../generator/EntityDataMapperGenerator.java | 66 ++-------- .../FormGenericButtonBlockGenerator.java | 59 +-------- .../generator/GetListQueryModelGenerator.java | 64 ++-------- .../GridActionColumnFileGenerator.java | 109 ++++------------ .../generator/IndexActionGenerator.java | 61 +-------- .../ModuleControllerClassGenerator.java | 7 +- .../generator/SaveEntityCommandGenerator.java | 11 +- .../SaveEntityControllerFileGenerator.java | 69 ++-------- .../UiComponentDataProviderGenerator.java | 4 +- .../UiComponentGridXmlGenerator.java | 2 +- .../FormViewControllerGeneratorHandler.java | 53 -------- .../GridLayoutXmlGeneratorHandler.java | 8 +- .../NewEntityGeneratorsProviderUtil.java | 11 +- .../magento/files/ControllerBackendPhp.java | 60 ++------- .../magento/files/ControllerFrontendPhp.java | 60 ++------- .../magento/files/DataModelFile.java | 47 +++---- .../magento/files/DataModelInterfaceFile.java | 42 +++---- .../magento/files/EntityDataMapperFile.java | 88 ++----------- .../files/FormGenericButtonBlockFile.java | 38 ++---- .../magento/files/GridActionColumnFile.java | 31 +++-- .../files/UiComponentDataProviderFile.java | 13 -- .../files/actions/DeleteActionFile.java | 13 -- .../magento/files/actions/EditActionFile.java | 64 ++-------- .../files/actions/IndexActionFile.java | 50 ++------ .../magento/files/actions/NewActionFile.java | 13 -- .../magento/files/actions/SaveActionFile.java | 55 ++------ .../commands/DeleteEntityByIdCommandFile.java | 85 +++---------- .../files/queries/GetListQueryFile.java | 53 ++------ .../packages/UiFormButtonTypeSettings.java | 18 +-- .../FormElementType.java | 4 +- .../DataModelInterfaceGeneratorTest.java | 4 +- .../DeleteEntityCommandGeneratorTest.java | 2 +- .../EditEntityActionGeneratorTest.java | 2 +- .../EntityDataMapperClassGeneratorTest.java | 3 +- .../FormGenericButtonBlockGeneratorTest.java | 2 +- .../GridActionColumnFileGeneratorTest.java | 3 +- .../IndexControllerGeneratorTest.java | 2 +- .../generator/QueryModelGeneratorTest.java | 2 +- .../SaveEntityActionGeneratorTest.java | 10 +- ...omponentGridDataProviderGeneratorTest.java | 2 +- .../pool/NewEntityGeneratorPoolTest.java | 12 +- 52 files changed, 341 insertions(+), 1396 deletions(-) delete mode 100644 src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/FormViewControllerDtoConverter.java delete mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/pool/handler/FormViewControllerGeneratorHandler.java rename src/com/magento/idea/magento2plugin/magento/packages/{uiComponent => uicomponent}/FormElementType.java (97%) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/FormViewControllerDtoConverter.java b/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/FormViewControllerDtoConverter.java deleted file mode 100644 index 7e884b97e..000000000 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/FormViewControllerDtoConverter.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -package com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog; - -import com.magento.idea.magento2plugin.actions.generation.data.ControllerFileData; -import com.magento.idea.magento2plugin.actions.generation.data.converter.DataObjectConverter; -import com.magento.idea.magento2plugin.actions.generation.data.dialog.EntityCreatorContextData; -import com.magento.idea.magento2plugin.actions.generation.data.dialog.NewEntityDialogData; -import com.magento.idea.magento2plugin.magento.files.ControllerBackendPhp; -import com.magento.idea.magento2plugin.magento.packages.Areas; -import com.magento.idea.magento2plugin.magento.packages.File; -import com.magento.idea.magento2plugin.magento.packages.HttpMethod; -import org.jetbrains.annotations.NotNull; - -public class FormViewControllerDtoConverter extends ControllerFileData - implements DataObjectConverter { - - private static final String VIEW_ACTION_NAME = "Edit"; - - /** - * Form view controller converter. - * - * @param generationContextData EntityCreatorContextData - * @param newEntityDialogData NewEntityDialogData - */ - public FormViewControllerDtoConverter( - final @NotNull EntityCreatorContextData generationContextData, - final @NotNull NewEntityDialogData newEntityDialogData - ) { - super( - ControllerBackendPhp.DEFAULT_DIR + File.separator + - newEntityDialogData.getEntityName(), - VIEW_ACTION_NAME, - generationContextData.getModuleName(), - Areas.adminhtml.toString(), - HttpMethod.GET.toString(), - newEntityDialogData.getAclId(), - true, - generationContextData.getFormViewNamespaceBuilder().getNamespace() - ); - } -} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentFormLayoutDtoConverter.java b/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentFormLayoutDtoConverter.java index 9cc0e3e6a..0313f8990 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentFormLayoutDtoConverter.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentFormLayoutDtoConverter.java @@ -16,8 +16,14 @@ public class UiComponentFormLayoutDtoConverter extends UiComponentFormFileData implements DataObjectConverter { - private final static String SUBMIT_ACTION_NAME = "Save"; + private static final String SUBMIT_ACTION_NAME = "Save"; + /** + * Ui Component form layout DTO converter. + * + * @param generationContextData EntityCreatorContextData + * @param newEntityDialogData NewEntityDialogData + */ public UiComponentFormLayoutDtoConverter( final @NotNull EntityCreatorContextData generationContextData, final @NotNull NewEntityDialogData newEntityDialogData diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java index f8fbe1af5..40d85a588 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewDataModelDialog.java @@ -219,12 +219,8 @@ private void generateDataModelFile() { private void generatePreferenceForInterface() { new PreferenceDiXmlGenerator(new PreferenceDiXmFileData( getModuleName(), - new DataModelInterfaceFile( - getDtoInterfaceName() - ).getNamespaceBuilder(getModuleName()).getClassFqn(), - new DataModelFile( - getDtoModelName() - ).getNamespaceBuilder(getModuleName()).getClassFqn(), + new DataModelInterfaceFile(getModuleName(), getDtoInterfaceName()).getClassFqn(), + new DataModelFile(getModuleName(), getDtoModelName()).getClassFqn(), "base" ), project).generate(OverrideClassByAPreferenceAction.ACTION_NAME); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java index 2658a72c1..a7238553d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java @@ -45,7 +45,7 @@ import com.magento.idea.magento2plugin.magento.packages.PropertiesTypes; import com.magento.idea.magento2plugin.magento.packages.database.TableEngines; import com.magento.idea.magento2plugin.magento.packages.database.TableResources; -import com.magento.idea.magento2plugin.magento.packages.uiComponent.FormElementType; +import com.magento.idea.magento2plugin.magento.packages.uicomponent.FormElementType; import com.magento.idea.magento2plugin.stubs.indexes.xml.MenuIndex; import com.magento.idea.magento2plugin.ui.FilteredComboBox; import com.magento.idea.magento2plugin.ui.table.TableGroupWrapper; @@ -443,9 +443,9 @@ private EntityCreatorContextData getEntityCreatorContextData( final String actionsPathPrefix = dialogData.getRoute() + File.separator + FirstLetterToLowercaseUtil.convert(entityName) + File.separator; final NamespaceBuilder dtoModelNamespace = - new DataModelFile(dtoClassName).getNamespaceBuilder(moduleName); + new DataModelFile(moduleName, dtoClassName).getNamespaceBuilder(); final NamespaceBuilder dtoInterfaceNamespace = - new DataModelInterfaceFile(dtoInterfaceClassName).getNamespaceBuilder(moduleName); + new DataModelInterfaceFile(moduleName, dtoInterfaceClassName).getNamespaceBuilder(); final NamespaceBuilder formViewNamespaceBuilder = new NamespaceBuilder( @@ -600,9 +600,9 @@ private List getFields() { final String dataType = model.getValueAt(count, 1).toString(); final String label = Arrays.stream(name.split("_")).map( - string -> string.substring(0, 1).toUpperCase(Locale.getDefault()) - + string.substring(1)).collect(Collectors.joining(" ") - ); + string -> string.substring(0, 1).toUpperCase(Locale.getDefault()) + + string.substring(1)).collect(Collectors.joining(" ") + ); final String sortOrder = String.valueOf(count).concat("0"); final String fieldset = "general"; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java index a203e21d7..b1a4f0617 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentFormDialog.java @@ -8,7 +8,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComboBoxTableRenderer; import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; import com.magento.idea.magento2plugin.actions.generation.NewUiComponentFormAction; import com.magento.idea.magento2plugin.actions.generation.data.AclXmlData; import com.magento.idea.magento2plugin.actions.generation.data.ControllerFileData; @@ -47,7 +46,7 @@ import com.magento.idea.magento2plugin.magento.packages.Areas; import com.magento.idea.magento2plugin.magento.packages.File; import com.magento.idea.magento2plugin.magento.packages.HttpMethod; -import com.magento.idea.magento2plugin.magento.packages.uiComponent.FormElementType; +import com.magento.idea.magento2plugin.magento.packages.uicomponent.FormElementType; import com.magento.idea.magento2plugin.ui.FilteredComboBox; import com.magento.idea.magento2plugin.ui.table.ComboBoxEditor; import com.magento.idea.magento2plugin.ui.table.DeleteRowButton; @@ -72,7 +71,6 @@ import javax.swing.KeyStroke; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; -import org.jetbrains.annotations.NotNull; @SuppressWarnings({ "PMD.TooManyFields", diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/util/ClassPropertyFormatterUtil.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/util/ClassPropertyFormatterUtil.java index ebff9a7e1..3c1a4363e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/util/ClassPropertyFormatterUtil.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/util/ClassPropertyFormatterUtil.java @@ -7,10 +7,10 @@ import com.google.common.base.CaseFormat; import com.magento.idea.magento2plugin.actions.generation.data.code.ClassPropertyData; -import org.apache.commons.lang.StringUtils; -import javax.swing.table.DefaultTableModel; import java.util.ArrayList; import java.util.List; +import javax.swing.table.DefaultTableModel; +import org.apache.commons.lang.StringUtils; public final class ClassPropertyFormatterUtil { @@ -27,8 +27,8 @@ public static List formatProperties(final DefaultTableModel table) { final List properties = new ArrayList<>(); for (int index = 0; index < table.getRowCount(); index++) { - String name = table.getValueAt(index, 0).toString(); - String type = table.getValueAt(index, 1).toString(); + final String name = table.getValueAt(index, 0).toString(); + final String type = table.getValueAt(index, 1).toString(); properties.add(ClassPropertyFormatterUtil.formatSingleProperty(name, type)); } 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 446e68091..331ae6cb6 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelGenerator.java @@ -5,38 +5,19 @@ package com.magento.idea.magento2plugin.actions.generation.generator; -import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.PhpFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.DataModelData; -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.actions.generation.generator.util.PhpClassGeneratorUtil; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; -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.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.DataModelFile; import com.magento.idea.magento2plugin.magento.files.DataModelInterfaceFile; -import com.magento.idea.magento2plugin.util.GetFirstClassOfFile; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Properties; -import javax.swing.JOptionPane; import org.jetbrains.annotations.NotNull; -public class DataModelGenerator extends FileGenerator { +public class DataModelGenerator extends PhpFileGenerator { - private final Project project; private final DataModelData data; - private final DirectoryGenerator directoryGenerator; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final GetFirstClassOfFile getFirstClassOfFile; - private final ValidatorBundle validatorBundle; - private final CommonBundle commonBundle; - private final DataModelFile file; /** * Data model generator constructor. @@ -48,83 +29,28 @@ public DataModelGenerator( final @NotNull Project project, final @NotNull DataModelData data ) { - super(project); - this.project = project; - this.data = data; - this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); - this.validatorBundle = new ValidatorBundle(); - this.commonBundle = new CommonBundle(); - file = new DataModelFile(data.getName()); - } - - @Override - public PsiFile generate(final @NotNull String actionName) { - final PsiFile[] files = new PsiFile[1]; - - WriteCommandAction.runWriteCommandAction(project, () -> { - PhpClass dataModel = GetPhpClassByFQN.getInstance(project).execute( - file.getNamespaceBuilder(data.getModuleName()).getClassFqn() - ); - - if (dataModel == null) { - dataModel = createModel(actionName); - - if (dataModel == null) { - final String errorMessage = this.validatorBundle.message( - "validator.file.cantBeCreated", - "Data Model" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - commonBundle.message("common.error"), - JOptionPane.ERROR_MESSAGE - ); - } else { - files[0] = dataModel.getContainingFile(); - } - } else { - final String errorMessage = this.validatorBundle.message( - "validator.file.alreadyExists", - "Data Model" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - commonBundle.message("common.error"), - JOptionPane.ERROR_MESSAGE - ); - } - }); - - return files[0]; + this(project, data, true); } /** - * Create model class. - * - * @param actionName String + * Data model generator constructor. * - * @return PhpClass + * @param project Project + * @param data DataModelData + * @param checkFileAlreadyExists boolean */ - private PhpClass createModel(final @NotNull String actionName) { - final PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(data.getModuleName()); - final PsiDirectory dataModelDirectory = directoryGenerator.findOrCreateSubdirectories( - parentDirectory, - DataModelFile.DIRECTORY - ); - - final PsiFile dataModelFile = fileFromTemplateGenerator.generate( - file, - getAttributes(), - dataModelDirectory, - actionName - ); + public DataModelGenerator( + final @NotNull Project project, + final @NotNull DataModelData data, + final boolean checkFileAlreadyExists + ) { + super(project, checkFileAlreadyExists); + this.data = data; + } - return dataModelFile == null ? null : getFirstClassOfFile.execute((PhpFile) dataModelFile); + @Override + protected AbstractPhpFile initFile() { + return new DataModelFile(data.getModuleName(), data.getName()); } /** @@ -137,10 +63,7 @@ protected void fillAttributes(final @NotNull Properties attributes) { final PhpClassTypesBuilder phpClassTypesBuilder = new PhpClassTypesBuilder(); phpClassTypesBuilder - .appendProperty( - "NAMESPACE", - file.getNamespaceBuilder(data.getModuleName()).getNamespace() - ) + .appendProperty("NAMESPACE", file.getNamespace()) .appendProperty("NAME", data.getName()) .appendProperty("PROPERTIES", data.getProperties()) .appendProperty("HASINTERFACE", Boolean.toString(data.hasInterface())) @@ -150,8 +73,9 @@ protected void fillAttributes(final @NotNull Properties attributes) { phpClassTypesBuilder.append( "IMPLEMENTS", new DataModelInterfaceFile( + data.getModuleName(), data.getInterfaceName() - ).getNamespaceBuilder(data.getModuleName()).getClassFqn()); + ).getClassFqn()); } phpClassTypesBuilder.mergeProperties(attributes); 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 39df57d5a..547b24408 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGenerator.java @@ -5,35 +5,16 @@ package com.magento.idea.magento2plugin.actions.generation.generator; -import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.PhpFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.DataModelInterfaceData; -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.bundles.CommonBundle; -import com.magento.idea.magento2plugin.bundles.ValidatorBundle; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.DataModelInterfaceFile; -import com.magento.idea.magento2plugin.util.GetFirstClassOfFile; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Properties; -import javax.swing.JOptionPane; import org.jetbrains.annotations.NotNull; -public class DataModelInterfaceGenerator extends FileGenerator { +public class DataModelInterfaceGenerator extends PhpFileGenerator { - private final Project project; private final DataModelInterfaceData data; - private final DirectoryGenerator directoryGenerator; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final GetFirstClassOfFile getFirstClassOfFile; - private final ValidatorBundle validatorBundle; - private final CommonBundle commonBundle; - private final DataModelInterfaceFile file; /** * DTO interface generator constructor. @@ -45,83 +26,28 @@ public DataModelInterfaceGenerator( final @NotNull DataModelInterfaceData data, final @NotNull Project project ) { - super(project); - this.project = project; - this.data = data; - this.directoryGenerator = DirectoryGenerator.getInstance(); - this.fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - this.getFirstClassOfFile = GetFirstClassOfFile.getInstance(); - this.validatorBundle = new ValidatorBundle(); - this.commonBundle = new CommonBundle(); - file = new DataModelInterfaceFile(data.getName()); - } - - @Override - public PsiFile generate(final String actionName) { - final PsiFile[] files = new PsiFile[1]; - - WriteCommandAction.runWriteCommandAction(project, () -> { - PhpClass modelInterface = GetPhpClassByFQN.getInstance(project).execute( - file.getNamespaceBuilder(data.getModuleName()).getClassFqn() - ); - - if (modelInterface == null) { - modelInterface = createInterface(actionName); - - if (modelInterface == null) { - final String errorMessage = this.validatorBundle.message( - "validator.file.cantBeCreated", - "Data Model Interface" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - commonBundle.message("common.error"), - JOptionPane.ERROR_MESSAGE - ); - } else { - files[0] = modelInterface.getContainingFile(); - } - } else { - final String errorMessage = this.validatorBundle.message( - "validator.file.alreadyExists", - "Data Model Interface" - ); - JOptionPane.showMessageDialog( - null, - errorMessage, - commonBundle.message("common.error"), - JOptionPane.ERROR_MESSAGE - ); - } - }); - - return files[0]; + this(data, project, true); } /** - * Create DTO interface file. - * - * @param actionName String + * DTO interface generator constructor. * - * @return PhpClass + * @param data DataModelInterfaceData + * @param project Project + * @param checkFileAlreadyExists boolean */ - private PhpClass createInterface(final @NotNull String actionName) { - final PsiDirectory parentDirectory = new ModuleIndex(project) - .getModuleDirectoryByModuleName(data.getModuleName()); - final PsiDirectory dtoInterfaceDirectory = directoryGenerator - .findOrCreateSubdirectories(parentDirectory, DataModelInterfaceFile.DIRECTORY); - - final PsiFile dtoInterfaceFile = fileFromTemplateGenerator.generate( - file, - getAttributes(), - dtoInterfaceDirectory, - actionName - ); + public DataModelInterfaceGenerator( + final @NotNull DataModelInterfaceData data, + final @NotNull Project project, + final boolean checkFileAlreadyExists + ) { + super(project, checkFileAlreadyExists); + this.data = data; + } - return dtoInterfaceFile == null ? null : getFirstClassOfFile.execute( - (PhpFile) dtoInterfaceFile - ); + @Override + protected AbstractPhpFile initFile() { + return new DataModelInterfaceFile(data.getModuleName(), data.getName()); } /** @@ -132,8 +58,7 @@ private PhpClass createInterface(final @NotNull String actionName) { @Override protected void fillAttributes(final @NotNull Properties attributes) { attributes.setProperty("NAME", data.getName()); - attributes.setProperty("NAMESPACE", - file.getNamespaceBuilder(data.getModuleName()).getNamespace()); + attributes.setProperty("NAMESPACE", file.getNamespace()); attributes.setProperty("PROPERTIES", data.getProperties()); } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityByIdCommandGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityByIdCommandGenerator.java index b27e13447..bb9b80a9d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityByIdCommandGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityByIdCommandGenerator.java @@ -6,33 +6,21 @@ package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.DeleteEntityByIdCommandData; -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.actions.generation.generator.util.PhpClassGeneratorUtil; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.ModelFile; import com.magento.idea.magento2plugin.magento.files.ResourceModelFile; import com.magento.idea.magento2plugin.magento.files.commands.DeleteEntityByIdCommandFile; import com.magento.idea.magento2plugin.magento.packages.code.ExceptionType; import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Properties; import org.jetbrains.annotations.NotNull; -public class DeleteEntityByIdCommandGenerator extends FileGenerator { +public class DeleteEntityByIdCommandGenerator extends PhpFileGenerator { - private final Project project; private final DeleteEntityByIdCommandData data; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final DirectoryGenerator directoryGenerator; - private final ModuleIndex moduleIndex; - private final boolean checkFileAlreadyExists; - private final DeleteEntityByIdCommandFile file; /** * Delete entity command generator constructor. @@ -59,47 +47,13 @@ public DeleteEntityByIdCommandGenerator( final @NotNull Project project, final boolean checkFileAlreadyExists ) { - super(project); + super(project, checkFileAlreadyExists); this.data = data; - this.project = project; - this.checkFileAlreadyExists = checkFileAlreadyExists; - fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - directoryGenerator = DirectoryGenerator.getInstance(); - moduleIndex = new ModuleIndex(project); - file = new DeleteEntityByIdCommandFile(data.getEntityName()); } - /** - * Generate delete command for entity. - * - * @param actionName String - * - * @return PsiFile - */ @Override - public PsiFile generate(final @NotNull String actionName) { - final PhpClass deleteEntityCommandClass = GetPhpClassByFQN.getInstance(project).execute( - file.getClassFqn(data.getModuleName()) - ); - - if (this.checkFileAlreadyExists && deleteEntityCommandClass != null) { - return deleteEntityCommandClass.getContainingFile(); - } - - final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName( - data.getModuleName() - ); - final PsiDirectory deleteCommandFileBaseDir = directoryGenerator.findOrCreateSubdirectories( - moduleBaseDir, - DeleteEntityByIdCommandFile.getDirectory(data.getEntityName()) - ); - - return fileFromTemplateGenerator.generate( - file, - getAttributes(), - deleteCommandFileBaseDir, - actionName - ); + protected AbstractPhpFile initFile() { + return new DeleteEntityByIdCommandFile(data.getModuleName(), data.getEntityName()); } /** @@ -118,7 +72,7 @@ protected void fillAttributes(final @NotNull Properties attributes) { phpClassTypesBuilder .appendProperty("ENTITY_NAME", data.getEntityName()) - .appendProperty("NAMESPACE", file.getNamespace(data.getModuleName())) + .appendProperty("NAMESPACE", file.getNamespace()) .appendProperty("CLASS_NAME", DeleteEntityByIdCommandFile.CLASS_NAME) .appendProperty("ENTITY_ID", data.getEntityId()) .append("Exception", "Exception") diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityControllerFileGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityControllerFileGenerator.java index d7412404d..0832fc370 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityControllerFileGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityControllerFileGenerator.java @@ -74,8 +74,9 @@ protected void fillAttributes(final @NotNull Properties attributes) { .appendProperty("ENTITY_ID", data.getEntityId()) .append("DELETE_COMMAND", new DeleteEntityByIdCommandFile( + data.getModuleName(), data.getEntityName() - ).getClassFqn(data.getModuleName()) + ).getClassFqn() ) .append("CONTEXT", BackendModuleType.CONTEXT.getType()) .append("RESULT_FACTORY", FrameworkLibraryType.RESULT_FACTORY.getType()) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/EditEntityActionGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/EditEntityActionGenerator.java index f3aa85d2b..c6c5d4b78 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/EditEntityActionGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/EditEntityActionGenerator.java @@ -6,32 +6,20 @@ package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.EditEntityActionData; -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.actions.generation.generator.util.PhpClassGeneratorUtil; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.actions.EditActionFile; import com.magento.idea.magento2plugin.magento.packages.HttpMethod; import com.magento.idea.magento2plugin.magento.packages.code.BackendModuleType; import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Properties; import org.jetbrains.annotations.NotNull; -public class EditEntityActionGenerator extends FileGenerator { +public class EditEntityActionGenerator extends PhpFileGenerator { - private final Project project; private final EditEntityActionData data; - private final boolean checkFileAlreadyExists; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final DirectoryGenerator directoryGenerator; - private final ModuleIndex moduleIndex; - private final EditActionFile file; /** * Edit entity action/controller file generator constructor. @@ -58,46 +46,13 @@ public EditEntityActionGenerator( final @NotNull Project project, final boolean checkFileAlreadyExists ) { - super(project); + super(project, checkFileAlreadyExists); this.data = data; - this.project = project; - this.checkFileAlreadyExists = checkFileAlreadyExists; - fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - moduleIndex = new ModuleIndex(project); - directoryGenerator = DirectoryGenerator.getInstance(); - file = new EditActionFile(data.getEntityName()); } - /** - * Generate edit action controller for entity. - * - * @param actionName String - * - * @return PsiFile - */ @Override - public PsiFile generate(final @NotNull String actionName) { - final PhpClass editActionClass = GetPhpClassByFQN.getInstance(project).execute( - file.getNamespaceBuilder(data.getModuleName()).getClassFqn() - ); - - if (this.checkFileAlreadyExists && editActionClass != null) { - return editActionClass.getContainingFile(); - } - - final PsiDirectory editActionBaseDir = directoryGenerator.findOrCreateSubdirectories( - moduleIndex.getModuleDirectoryByModuleName( - data.getModuleName() - ), - file.getDirectory() - ); - - return fileFromTemplateGenerator.generate( - file, - getAttributes(), - editActionBaseDir, - actionName - ); + protected AbstractPhpFile initFile() { + return new EditActionFile(data.getModuleName(), data.getEntityName()); } /** @@ -110,8 +65,7 @@ protected void fillAttributes(final @NotNull Properties attributes) { final PhpClassTypesBuilder phpClassTypesBuilder = new PhpClassTypesBuilder(); phpClassTypesBuilder - .appendProperty("NAMESPACE", - file.getNamespaceBuilder(data.getModuleName()).getNamespace()) + .appendProperty("NAMESPACE", file.getNamespace()) .appendProperty("ENTITY_NAME", data.getEntityName()) .appendProperty("CLASS_NAME", file.getClassName()) .appendProperty("ADMIN_RESOURCE", data.getAcl()) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/EntityDataMapperGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/EntityDataMapperGenerator.java index 9f253259d..2149af4f4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/EntityDataMapperGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/EntityDataMapperGenerator.java @@ -6,33 +6,21 @@ package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.EntityDataMapperData; -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.actions.generation.generator.util.PhpClassGeneratorUtil; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.DataModelFile; import com.magento.idea.magento2plugin.magento.files.DataModelInterfaceFile; import com.magento.idea.magento2plugin.magento.files.EntityDataMapperFile; import com.magento.idea.magento2plugin.magento.files.ModelFile; import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Properties; import org.jetbrains.annotations.NotNull; -public class EntityDataMapperGenerator extends FileGenerator { +public class EntityDataMapperGenerator extends PhpFileGenerator { private final EntityDataMapperData data; - private final Project project; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final DirectoryGenerator directoryGenerator; - private final ModuleIndex moduleIndex; - private final EntityDataMapperFile file; - private final boolean checkFileAlreadyExists; /** * Entity data mapper generator constructor. @@ -59,46 +47,13 @@ public EntityDataMapperGenerator( final @NotNull Project project, final boolean checkFileAlreadyExists ) { - super(project); + super(project, checkFileAlreadyExists); this.data = data; - this.project = project; - this.checkFileAlreadyExists = checkFileAlreadyExists; - file = new EntityDataMapperFile(data.getEntityName()); - fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - directoryGenerator = DirectoryGenerator.getInstance(); - moduleIndex = new ModuleIndex(project); } - /** - * Generate entity data mapper class. - * - * @param actionName String - * - * @return PsiFile - */ @Override - public PsiFile generate(final @NotNull String actionName) { - final PhpClass entityDataMapperClass = GetPhpClassByFQN.getInstance(project).execute( - file.getClassFqn(data.getModuleName()) - ); - if (this.checkFileAlreadyExists && entityDataMapperClass != null) { - return entityDataMapperClass.getContainingFile(); - } - - final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName( - data.getModuleName() - ); - final PsiDirectory entityDataMapperDir = directoryGenerator.findOrCreateSubdirectory( - moduleBaseDir, - file.getDirectory() - ); - - return fileFromTemplateGenerator.generate( - file, - getAttributes(), - entityDataMapperDir, - actionName - ); + protected AbstractPhpFile initFile() { + return new EntityDataMapperFile(data.getModuleName(), data.getEntityName()); } /** @@ -111,19 +66,19 @@ protected void fillAttributes(final @NotNull Properties attributes) { final PhpClassTypesBuilder phpClassTypesBuilder = new PhpClassTypesBuilder(); final ModelFile modelFile = new ModelFile(data.getModuleName(), data.getModelName()); - final DataModelFile dtoFile = new DataModelFile(data.getDtoName()); + final DataModelFile dtoFile = new DataModelFile(data.getDtoName(), data.getModuleName()); final DataModelInterfaceFile dtoInterfaceFile = - new DataModelInterfaceFile(data.getDtoInterfaceName()); + new DataModelInterfaceFile(data.getModuleName(), data.getDtoInterfaceName()); String dtoType; if (data.isDtoWithInterface()) { - dtoType = dtoInterfaceFile.getNamespaceBuilder(data.getModuleName()).getClassFqn(); + dtoType = dtoInterfaceFile.getClassFqn(); } else { - dtoType = dtoFile.getNamespaceBuilder(data.getModuleName()).getClassFqn(); + dtoType = dtoFile.getClassFqn(); } phpClassTypesBuilder - .appendProperty("NAMESPACE", file.getNamespace(data.getModuleName())) + .appendProperty("NAMESPACE", file.getNamespace()) .appendProperty("ENTITY_NAME", data.getEntityName()) .appendProperty("CLASS_NAME", file.getClassName()) .append("DATA_OBJECT", FrameworkLibraryType.DATA_OBJECT.getType()) @@ -133,7 +88,6 @@ protected void fillAttributes(final @NotNull Properties attributes) { .append("ABSTRACT_COLLECTION", FrameworkLibraryType.ABSTRACT_COLLECTION.getType()) .mergeProperties(attributes); - attributes.setProperty( "USES", PhpClassGeneratorUtil.formatUses(phpClassTypesBuilder.getUses()) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java index d9f1fb566..66b725d86 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java @@ -6,33 +6,21 @@ package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.FormGenericButtonBlockData; -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.actions.generation.generator.util.PhpClassGeneratorUtil; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.FormGenericButtonBlockFile; import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Arrays; import java.util.Locale; import java.util.Properties; import java.util.stream.Collectors; import org.jetbrains.annotations.NotNull; -public class FormGenericButtonBlockGenerator extends FileGenerator { +public class FormGenericButtonBlockGenerator extends PhpFileGenerator { private final FormGenericButtonBlockData data; - private final Project project; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final DirectoryGenerator directoryGenerator; - private final ModuleIndex moduleIndex; - private final boolean checkFileAlreadyExists; - private final FormGenericButtonBlockFile file; /** * Generic Button Block generator constructor. @@ -59,47 +47,13 @@ public FormGenericButtonBlockGenerator( final @NotNull Project project, final boolean checkFileAlreadyExists ) { - super(project); + super(project, checkFileAlreadyExists); this.data = data; - this.project = project; - this.checkFileAlreadyExists = checkFileAlreadyExists; - fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - directoryGenerator = DirectoryGenerator.getInstance(); - moduleIndex = new ModuleIndex(project); - file = new FormGenericButtonBlockFile(); } - /** - * Generate ui component form generic block. - * - * @param actionName String - * - * @return PsiFile - */ @Override - public PsiFile generate(final @NotNull String actionName) { - final PhpClass genericButtonClass = GetPhpClassByFQN.getInstance(project).execute( - file.getNamespaceBuilder(data.getModuleName()).getClassFqn() - ); - - if (this.checkFileAlreadyExists && genericButtonClass != null) { - return genericButtonClass.getContainingFile(); - } - - final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName( - data.getModuleName() - ); - final PsiDirectory genericButtonBaseDir = directoryGenerator.findOrCreateSubdirectories( - moduleBaseDir, - FormGenericButtonBlockFile.DIRECTORY - ); - - return fileFromTemplateGenerator.generate( - new FormGenericButtonBlockFile(), - getAttributes(), - genericButtonBaseDir, - actionName - ); + protected AbstractPhpFile initFile() { + return new FormGenericButtonBlockFile(data.getModuleName()); } /** @@ -115,8 +69,7 @@ protected void fillAttributes(final @NotNull Properties attributes) { .collect(Collectors.joining()); phpClassTypesBuilder - .appendProperty("NAMESPACE", - file.getNamespaceBuilder(data.getModuleName()).getNamespace()) + .appendProperty("NAMESPACE", file.getNamespace()) .appendProperty("ENTITY_NAME", data.getEntityName()) .appendProperty("CLASS_NAME", FormGenericButtonBlockFile.CLASS_NAME) .appendProperty("ENTITY_ID", data.getEntityId()) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/GetListQueryModelGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/GetListQueryModelGenerator.java index ce31c8c72..c91908286 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/GetListQueryModelGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/GetListQueryModelGenerator.java @@ -6,33 +6,21 @@ package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.GetListQueryModelData; -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.actions.generation.generator.util.NamespaceBuilder; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassGeneratorUtil; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.CollectionModelFile; import com.magento.idea.magento2plugin.magento.files.EntityDataMapperFile; import com.magento.idea.magento2plugin.magento.files.queries.GetListQueryFile; import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Properties; import org.jetbrains.annotations.NotNull; -public class GetListQueryModelGenerator extends FileGenerator { +public class GetListQueryModelGenerator extends PhpFileGenerator { - private final Project project; private final GetListQueryModelData data; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final DirectoryGenerator directoryGenerator; - private final ModuleIndex moduleIndex; - private final boolean checkFileAlreadyExists; - private final GetListQueryFile file; /** * Query model generator Constructor. @@ -59,47 +47,13 @@ public GetListQueryModelGenerator( final @NotNull Project project, final boolean checkFileAlreadyExists ) { - super(project); - this.project = project; + super(project, checkFileAlreadyExists); this.data = data; - this.checkFileAlreadyExists = checkFileAlreadyExists; - fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - directoryGenerator = DirectoryGenerator.getInstance(); - moduleIndex = new ModuleIndex(project); - file = new GetListQueryFile(data.getEntityName()); } - /** - * Generate Get List Query model. - * - * @param actionName String - * - * @return PsiFile - */ @Override - public PsiFile generate(final @NotNull String actionName) { - final PhpClass getListQueryClass = GetPhpClassByFQN.getInstance(project).execute( - file.getNamespaceBuilder(data.getModuleName()).getClassFqn() - ); - - if (this.checkFileAlreadyExists && getListQueryClass != null) { - return getListQueryClass.getContainingFile(); - } - - final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName( - data.getModuleName() - ); - final PsiDirectory queryModelBaseDir = directoryGenerator.findOrCreateSubdirectories( - moduleBaseDir, - file.getDirectory() - ); - - return fileFromTemplateGenerator.generate( - file, - getAttributes(), - queryModelBaseDir, - actionName - ); + protected AbstractPhpFile initFile() { + return new GetListQueryFile(data.getModuleName(), data.getEntityName()); } /** @@ -121,10 +75,7 @@ protected void fillAttributes(final @NotNull Properties attributes) { phpClassTypesBuilder .appendProperty("ENTITY_NAME", data.getEntityName()) - .appendProperty( - "NAMESPACE", - file.getNamespaceBuilder(data.getModuleName()).getNamespace() - ) + .appendProperty("NAMESPACE", file.getNamespace()) .appendProperty("CLASS_NAME", GetListQueryFile.CLASS_NAME) .append( "ENTITY_COLLECTION_TYPE", @@ -137,8 +88,9 @@ protected void fillAttributes(final @NotNull Properties attributes) { .append( "ENTITY_DATA_MAPPER_TYPE", new EntityDataMapperFile( + data.getModuleName(), data.getEntityName() - ).getClassFqn(data.getModuleName()) + ).getClassFqn() ) .append( "COLLECTION_PROCESSOR_TYPE", diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGenerator.java index 1c9a5bbea..a935780ee 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGenerator.java @@ -6,34 +6,18 @@ package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.GridActionColumnData; -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.actions.generation.generator.util.NamespaceBuilder; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassGeneratorUtil; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.GridActionColumnFile; import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; -import java.util.ArrayList; -import java.util.List; import java.util.Properties; import org.jetbrains.annotations.NotNull; -public class GridActionColumnFileGenerator extends FileGenerator { +public class GridActionColumnFileGenerator extends PhpFileGenerator { - private final Project project; private final GridActionColumnData data; - private final GridActionColumnFile file; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final DirectoryGenerator directoryGenerator; - private final ModuleIndex moduleIndex; - private final NamespaceBuilder classNamespaceBuilder; - private final boolean checkFileAlreadyExists; - private final List uses; /** * Constructor for grid ui component action column class generator. @@ -60,52 +44,13 @@ public GridActionColumnFileGenerator( final @NotNull Project project, final boolean checkFileAlreadyExists ) { - super(project); + super(project, checkFileAlreadyExists); this.data = data; - this.project = project; - this.checkFileAlreadyExists = checkFileAlreadyExists; - file = new GridActionColumnFile(); - fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - directoryGenerator = DirectoryGenerator.getInstance(); - moduleIndex = new ModuleIndex(project); - uses = new ArrayList<>(); - classNamespaceBuilder = new NamespaceBuilder( - data.getModuleName(), - GridActionColumnFile.CLASS_NAME, - GridActionColumnFile.DIRECTORY - ); } - /** - * Generate action column class. - * - * @param actionName String - * - * @return PsiFile - */ @Override - public PsiFile generate(final @NotNull String actionName) { - final PhpClass actionColumnClass = GetPhpClassByFQN.getInstance(project).execute( - classNamespaceBuilder.getClassFqn() - ); - - if (this.checkFileAlreadyExists && actionColumnClass != null) { - return actionColumnClass.getContainingFile(); - } - - final PsiDirectory actionColumnFileBaseDir = directoryGenerator.findOrCreateSubdirectories( - moduleIndex.getModuleDirectoryByModuleName( - data.getModuleName() - ), - file.getDirectory() - ); - - return fileFromTemplateGenerator.generate( - file, - getAttributes(), - actionColumnFileBaseDir, - actionName - ); + protected AbstractPhpFile initFile() { + return new GridActionColumnFile(data.getModuleName()); } /** @@ -115,34 +60,22 @@ public PsiFile generate(final @NotNull String actionName) { */ @Override protected void fillAttributes(final @NotNull Properties attributes) { - attributes.setProperty("ENTITY_NAME", data.getEntityName()); - attributes.setProperty("ENTITY_ID", data.getEntityIdColumn()); - attributes.setProperty("NAMESPACE", classNamespaceBuilder.getNamespace()); - attributes.setProperty("CLASS_NAME", GridActionColumnFile.CLASS_NAME); - attributes.setProperty("EDIT_URL_PATH", data.getEditUrlPath()); - attributes.setProperty("DELETE_URL_PATH", data.getDeleteUrlPath()); + final PhpClassTypesBuilder phpClassTypesBuilder = new PhpClassTypesBuilder(); - addProperty(attributes, "PARENT_CLASS", GridActionColumnFile.PARENT_CLASS); - addProperty(attributes, "URL", FrameworkLibraryType.URL.getType()); - addProperty(attributes, "CONTEXT", GridActionColumnFile.CONTEXT); - addProperty(attributes, "UI_COMPONENT_FACTORY", GridActionColumnFile.UI_COMPONENT_FACTORY); + phpClassTypesBuilder + .appendProperty("ENTITY_NAME", data.getEntityName()) + .appendProperty("ENTITY_ID", data.getEntityIdColumn()) + .appendProperty("NAMESPACE", file.getNamespace()) + .appendProperty("CLASS_NAME", file.getClassName()) + .appendProperty("EDIT_URL_PATH", data.getEditUrlPath()) + .appendProperty("DELETE_URL_PATH", data.getDeleteUrlPath()) + .append("PARENT_CLASS", GridActionColumnFile.PARENT_CLASS) + .append("URL", FrameworkLibraryType.URL.getType()) + .append("CONTEXT", GridActionColumnFile.CONTEXT) + .append("UI_COMPONENT_FACTORY", GridActionColumnFile.UI_COMPONENT_FACTORY) + .mergeProperties(attributes); - attributes.setProperty("USES", PhpClassGeneratorUtil.formatUses(uses)); - } - - /** - * Add type to property list. - * - * @param properties Properties - * @param propertyName String - * @param type String - */ - private void addProperty( - final @NotNull Properties properties, - final String propertyName, - final String type - ) { - uses.add(type); - properties.setProperty(propertyName, PhpClassGeneratorUtil.getNameFromFqn(type)); + attributes.setProperty("USES", + PhpClassGeneratorUtil.formatUses(phpClassTypesBuilder.getUses())); } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/IndexActionGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/IndexActionGenerator.java index 122fb4038..300f3fcbc 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/IndexActionGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/IndexActionGenerator.java @@ -6,32 +6,20 @@ package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.IndexActionData; -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.actions.generation.generator.util.PhpClassGeneratorUtil; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.actions.IndexActionFile; import com.magento.idea.magento2plugin.magento.packages.HttpMethod; import com.magento.idea.magento2plugin.magento.packages.code.BackendModuleType; import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Properties; import org.jetbrains.annotations.NotNull; -public class IndexActionGenerator extends FileGenerator { +public class IndexActionGenerator extends PhpFileGenerator { - private final Project project; private final IndexActionData data; - private final IndexActionFile file; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final DirectoryGenerator directoryGenerator; - private final ModuleIndex moduleIndex; - private final boolean checkFileAlreadyExists; /** * Constructor for adminhtml index (list) controller generator. @@ -58,47 +46,13 @@ public IndexActionGenerator( final @NotNull Project project, final boolean checkFileAlreadyExists ) { - super(project); + super(project, checkFileAlreadyExists); this.data = data; - this.project = project; - this.checkFileAlreadyExists = checkFileAlreadyExists; - file = new IndexActionFile(data.getEntityName()); - fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - directoryGenerator = DirectoryGenerator.getInstance(); - moduleIndex = new ModuleIndex(project); } - /** - * Generate Index controller for Adminhtml area. - * - * @param actionName String - * - * @return PsiFile - */ @Override - public PsiFile generate(final @NotNull String actionName) { - final PhpClass indexActionClass = GetPhpClassByFQN.getInstance(project).execute( - file.getNamespaceBuilder(data.getModuleName()).getClassFqn() - ); - - if (this.checkFileAlreadyExists && indexActionClass != null) { - return indexActionClass.getContainingFile(); - } - - final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName( - data.getModuleName() - ); - final PsiDirectory indexActionFileBaseDir = directoryGenerator.findOrCreateSubdirectories( - moduleBaseDir, - file.getDirectory() - ); - - return fileFromTemplateGenerator.generate( - file, - getAttributes(), - indexActionFileBaseDir, - actionName - ); + protected AbstractPhpFile initFile() { + return new IndexActionFile(data.getModuleName(), data.getEntityName()); } /** @@ -115,10 +69,7 @@ protected void fillAttributes(final @NotNull Properties attributes) { .appendProperty("CLASS_NAME", IndexActionFile.CLASS_NAME) .appendProperty("ACL", data.getAcl()) .appendProperty("MENU", data.getMenu()) - .appendProperty( - "NAMESPACE", - file.getNamespaceBuilder(data.getModuleName()).getNamespace() - ) + .appendProperty("NAMESPACE", file.getNamespace()) .append("PARENT_CLASS_NAME", BackendModuleType.EXTENDS.getType()) .append("HTTP_GET_METHOD", HttpMethod.GET.getInterfaceFqn()) .append("RESULT", FrameworkLibraryType.RESULT_INTERFACE.getType()) 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 e1fc2400d..a5142cb3d 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleControllerClassGenerator.java @@ -163,14 +163,17 @@ private PhpClass createControllerClass(final String actionName) { if (data.getControllerArea().equals(adminhtmlArea)) { controllerFile = fileFromTemplateGenerator.generate( - ControllerBackendPhp.getInstance(data.getActionClassName()), + new ControllerBackendPhp(data.getControllerModule(), data.getActionClassName()), attributes, parentDirectory, actionName ); } else { controllerFile = fileFromTemplateGenerator.generate( - ControllerFrontendPhp.getInstance(data.getActionClassName()), + new ControllerFrontendPhp( + data.getControllerModule(), + data.getActionClassName() + ), attributes, parentDirectory, actionName diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityCommandGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityCommandGenerator.java index 30241bfcb..7cd7a0506 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityCommandGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityCommandGenerator.java @@ -87,14 +87,13 @@ protected void fillAttributes(final @NotNull Properties attributes) { if (data.isDtoWithInterface()) { final DataModelInterfaceFile dataModelInterfaceFile = - new DataModelInterfaceFile(data.getDtoInterfaceName()); - final String dtoType = dataModelInterfaceFile - .getNamespaceBuilder(data.getModuleName()).getClassFqn(); + new DataModelInterfaceFile(data.getModuleName(), data.getDtoInterfaceName()); + final String dtoType = dataModelInterfaceFile.getClassFqn(); phpClassTypesBuilder.append("DTO", dtoType); } else { - final DataModelFile dataModelFile = new DataModelFile(data.getDtoName()); - final String dtoType = dataModelFile - .getNamespaceBuilder(data.getModuleName()).getClassFqn(); + final DataModelFile dataModelFile = + new DataModelFile(data.getModuleName(), data.getDtoName()); + final String dtoType = dataModelFile.getClassFqn(); phpClassTypesBuilder.append("DTO", dtoType); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityControllerFileGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityControllerFileGenerator.java index 2206ae358..5acd1477a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityControllerFileGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityControllerFileGenerator.java @@ -6,15 +6,10 @@ package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.actions.generation.data.SaveEntityControllerFileData; -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.actions.generation.generator.util.PhpClassGeneratorUtil; import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassTypesBuilder; -import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import com.magento.idea.magento2plugin.magento.files.DataModelFile; import com.magento.idea.magento2plugin.magento.files.DataModelInterfaceFile; import com.magento.idea.magento2plugin.magento.files.actions.SaveActionFile; @@ -22,19 +17,12 @@ import com.magento.idea.magento2plugin.magento.packages.HttpMethod; import com.magento.idea.magento2plugin.magento.packages.code.BackendModuleType; import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType; -import com.magento.idea.magento2plugin.util.GetPhpClassByFQN; import java.util.Properties; import org.jetbrains.annotations.NotNull; -public class SaveEntityControllerFileGenerator extends FileGenerator { +public class SaveEntityControllerFileGenerator extends PhpFileGenerator { private final SaveEntityControllerFileData data; - private final FileFromTemplateGenerator fileFromTemplateGenerator; - private final DirectoryGenerator directoryGenerator; - private final ModuleIndex moduleIndex; - private final Project project; - private final boolean checkFileAlreadyExists; - private final SaveActionFile file; /** * Save Entity Controller File Generator. @@ -61,46 +49,13 @@ public SaveEntityControllerFileGenerator( final @NotNull Project project, final boolean checkFileAlreadyExists ) { - super(project); + super(project, checkFileAlreadyExists); this.data = data; - this.project = project; - this.checkFileAlreadyExists = checkFileAlreadyExists; - fileFromTemplateGenerator = new FileFromTemplateGenerator(project); - moduleIndex = new ModuleIndex(project); - directoryGenerator = DirectoryGenerator.getInstance(); - file = new SaveActionFile(data.getEntityName()); } - /** - * Generate Save action controller for entity. - * - * @param actionName String - * - * @return PsiFile - */ @Override - public PsiFile generate(final @NotNull String actionName) { - final PhpClass saveActionClass = GetPhpClassByFQN.getInstance(project).execute( - file.getNamespaceBuilder(data.getModuleName()).getClassFqn() - ); - - if (this.checkFileAlreadyExists && saveActionClass != null) { - return saveActionClass.getContainingFile(); - } - final PsiDirectory moduleBaseDir = moduleIndex.getModuleDirectoryByModuleName( - data.getModuleName() - ); - final PsiDirectory baseDirectory = directoryGenerator.findOrCreateSubdirectories( - moduleBaseDir, - file.getDirectory() - ); - - return fileFromTemplateGenerator.generate( - file, - getAttributes(), - baseDirectory, - actionName - ); + protected AbstractPhpFile initFile() { + return new SaveActionFile(data.getModuleName(), data.getEntityName()); } /** @@ -115,18 +70,16 @@ protected void fillAttributes(final @NotNull Properties attributes) { if (data.isDtoWithInterface()) { final DataModelInterfaceFile dataModelInterfaceFile = - new DataModelInterfaceFile(data.getDtoInterfaceName()); - dtoType = dataModelInterfaceFile - .getNamespaceBuilder(data.getModuleName()).getClassFqn(); + new DataModelInterfaceFile(data.getModuleName(), data.getDtoInterfaceName()); + dtoType = dataModelInterfaceFile.getClassFqn(); } else { - final DataModelFile dataModelFile = new DataModelFile(data.getDtoName()); - dtoType = dataModelFile - .getNamespaceBuilder(data.getModuleName()).getClassFqn(); + final DataModelFile dataModelFile = + new DataModelFile(data.getModuleName(), data.getDtoName()); + dtoType = dataModelFile.getClassFqn(); } phpClassTypesBuilder - .appendProperty("NAMESPACE", - file.getNamespaceBuilder(data.getModuleName()).getNamespace()) + .appendProperty("NAMESPACE", file.getNamespace()) .appendProperty("ENTITY_NAME", data.getEntityName()) .appendProperty("CLASS_NAME", SaveActionFile.CLASS_NAME) .appendProperty("ENTITY_ID", data.getEntityId()) 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 e16c10cc5..d400439cb 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentDataProviderGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentDataProviderGenerator.java @@ -82,9 +82,7 @@ protected void fillAttributes(final @NotNull Properties attributes) { .appendProperty("HAS_GET_LIST_QUERY", "true") .append( "GET_LIST_QUERY_TYPE", - new GetListQueryFile( - data.getEntityName() - ).getNamespaceBuilder(moduleName).getClassFqn() + new GetListQueryFile(moduleName, data.getEntityName()).getClassFqn() ) .append("REPORTING_TYPE", FrameworkLibraryType.REPORTING.getType()) .append("SEARCH_CRITERIA_BUILDER", 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 c808774f1..81bc31de2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java @@ -24,6 +24,7 @@ import com.magento.idea.magento2plugin.magento.packages.Package; import com.magento.idea.magento2plugin.magento.packages.database.ColumnAttributes; import com.magento.idea.magento2plugin.magento.packages.database.TableColumnTypes; +import com.magento.idea.magento2plugin.util.magento.FileBasedIndexUtil; import java.io.IOException; import java.util.Arrays; import java.util.LinkedList; @@ -32,7 +33,6 @@ import java.util.Map; import java.util.Properties; import java.util.stream.Collectors; -import com.magento.idea.magento2plugin.util.magento.FileBasedIndexUtil; import org.jetbrains.annotations.NotNull; public class UiComponentGridXmlGenerator extends FileGenerator { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/handler/FormViewControllerGeneratorHandler.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/handler/FormViewControllerGeneratorHandler.java deleted file mode 100644 index 437af58e4..000000000 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/handler/FormViewControllerGeneratorHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -package com.magento.idea.magento2plugin.actions.generation.generator.pool.handler; - -import com.magento.idea.magento2plugin.actions.generation.data.converter.DataObjectConverter; -import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.FormViewControllerDtoConverter; -import com.magento.idea.magento2plugin.actions.generation.data.dialog.GenerationContextData; -import com.magento.idea.magento2plugin.actions.generation.generator.ModuleControllerClassGenerator; -import com.magento.idea.magento2plugin.actions.generation.generator.pool.GeneratorHandler; -import com.magento.idea.magento2plugin.actions.generation.generator.pool.GeneratorRunnerValidator; -import org.jetbrains.annotations.NotNull; - -public class FormViewControllerGeneratorHandler extends GeneratorHandler { - - /** - * Form view controller generator handler. - * - * @param contextData GenerationContextData - * @param dataObjectConverter DataObjectConverter - */ - public FormViewControllerGeneratorHandler( - final @NotNull GenerationContextData contextData, - final @NotNull DataObjectConverter dataObjectConverter - ) { - this(contextData, dataObjectConverter, null); - } - - /** - * Form view controller generator handler. - * - * @param contextData GenerationContextData - * @param dataObjectConverter DataObjectConverter - * @param runnerValidator GeneratorRunnerValidator - */ - public FormViewControllerGeneratorHandler( - final @NotNull GenerationContextData contextData, - final @NotNull DataObjectConverter dataObjectConverter, - final GeneratorRunnerValidator runnerValidator - ) { - super(contextData, dataObjectConverter, runnerValidator); - } - - @Override - public void instantiateGenerator() { - setGenerator(new ModuleControllerClassGenerator( - (FormViewControllerDtoConverter) getDataObjectConverter(), - getProject() - )); - } -} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/handler/GridLayoutXmlGeneratorHandler.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/handler/GridLayoutXmlGeneratorHandler.java index c168b18fa..914180c53 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/handler/GridLayoutXmlGeneratorHandler.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/handler/GridLayoutXmlGeneratorHandler.java @@ -45,9 +45,9 @@ public GridLayoutXmlGeneratorHandler( @Override public void instantiateGenerator() { - setGenerator(new LayoutXmlGenerator( - (LayoutXmlData) getDataObjectConverter(), - getProject() - )); + setGenerator(new LayoutXmlGenerator( + (LayoutXmlData) getDataObjectConverter(), + getProject() + )); } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/provider/NewEntityGeneratorsProviderUtil.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/provider/NewEntityGeneratorsProviderUtil.java index 5e8b7e890..8d6895f55 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/provider/NewEntityGeneratorsProviderUtil.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/pool/provider/NewEntityGeneratorsProviderUtil.java @@ -13,16 +13,15 @@ import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.DbSchemaXmlDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.DeleteEntityByIdCommandDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.EntityDataMapperDtoConverter; -import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.IndexActionDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.FormDeleteControllerDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.FormEditControllerDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.FormGenericButtonBlockDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.FormLayoutDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.FormSaveControllerDtoConverter; -import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.FormViewControllerDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.GetListQueryDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.GridActionColumnDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.GridLayoutXmlDtoConverter; +import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.IndexActionDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.MenuXmlDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.ModelDtoConverter; import com.magento.idea.magento2plugin.actions.generation.data.converter.newentitydialog.NewControllerDtoConverter; @@ -46,16 +45,15 @@ import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.DbSchemaXmlGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.DeleteByIdCommandGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.EntityDataMapperGeneratorHandler; -import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.IndexActionGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.FormDeleteControllerGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.FormEditControllerGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.FormGenericButtonBlockGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.FormLayoutGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.FormSaveControllerGeneratorHandler; -import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.FormViewControllerGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.GetListQueryGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.GridActionColumnGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.GridLayoutXmlGeneratorHandler; +import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.IndexActionGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.MenuXmlGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.ModelGeneratorHandler; import com.magento.idea.magento2plugin.actions.generation.generator.pool.handler.NewControllerGeneratorHandler; @@ -163,11 +161,6 @@ public static void initializeGenerators( new UiComponentGridDtoConverter(context, dialogData), dialogData::hasAdminUiComponents ) - .addNext( - FormViewControllerGeneratorHandler.class, - new FormViewControllerDtoConverter(context, dialogData), - dialogData::hasAdminUiComponents - ) .addNext( FormLayoutGeneratorHandler.class, new FormLayoutDtoConverter(context, dialogData), diff --git a/src/com/magento/idea/magento2plugin/magento/files/ControllerBackendPhp.java b/src/com/magento/idea/magento2plugin/magento/files/ControllerBackendPhp.java index 2c9a223d3..73b41177b 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/ControllerBackendPhp.java +++ b/src/com/magento/idea/magento2plugin/magento/files/ControllerBackendPhp.java @@ -5,43 +5,23 @@ package com.magento.idea.magento2plugin.magento.files; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; +import org.jetbrains.annotations.NotNull; + +public class ControllerBackendPhp extends AbstractPhpFile { -@SuppressWarnings({ - "PMD.FieldNamingConventions", - "PMD.NonThreadSafeSingleton", - "PMD.RedundantFieldInitializer" -}) -public class ControllerBackendPhp implements ModuleFileInterface { public static final String TEMPLATE = "Magento Backend Controller Class"; public static final String DEFAULT_DIR = "Controller/Adminhtml"; - private static ControllerBackendPhp INSTANCE = null; - private String fileName; - - /** - * Returns a new instance of the class. - * - * @param className Controller class name - * @return ControllerBackendPhp - */ - public static ControllerBackendPhp getInstance(final String className) { - if (null == INSTANCE) { - INSTANCE = new ControllerBackendPhp(); - } - INSTANCE.setFileName(className.concat(".php")); - - return INSTANCE; + public ControllerBackendPhp( + final @NotNull String moduleName, + final @NotNull String className + ) { + super(moduleName, className); } - /** - * Get name of backend controller file. - * - * @return Name of the file. - */ - public String getFileName() { - return this.fileName; + @Override + public String getDirectory() { + return DEFAULT_DIR; } /** @@ -52,22 +32,4 @@ public String getFileName() { public String getTemplate() { return TEMPLATE; } - - /** - * Get return language. - * - * @return PHP language - */ - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } - - /** - * Get name of controller file. - * - * @param filename Name of backend controller file. - */ - private void setFileName(final String filename) { - this.fileName = filename; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/ControllerFrontendPhp.java b/src/com/magento/idea/magento2plugin/magento/files/ControllerFrontendPhp.java index f70c55347..e3e415e59 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/ControllerFrontendPhp.java +++ b/src/com/magento/idea/magento2plugin/magento/files/ControllerFrontendPhp.java @@ -5,43 +5,23 @@ package com.magento.idea.magento2plugin.magento.files; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; +import org.jetbrains.annotations.NotNull; + +public class ControllerFrontendPhp extends AbstractPhpFile { -@SuppressWarnings({ - "PMD.FieldNamingConventions", - "PMD.NonThreadSafeSingleton", - "PMD.RedundantFieldInitializer" -}) -public class ControllerFrontendPhp implements ModuleFileInterface { public static final String TEMPLATE = "Magento Frontend Controller Class"; public static final String DEFAULT_DIR = "Controller"; - private static ControllerFrontendPhp INSTANCE = null; - private String fileName; - - /** - * Returns a new instance of the class. - * - * @param className Controller class name - * @return ControllerFrontendPhp - */ - public static ControllerFrontendPhp getInstance(final String className) { - if (null == INSTANCE) { - INSTANCE = new ControllerFrontendPhp(); - } - INSTANCE.setFileName(className.concat(".php")); - - return INSTANCE; + public ControllerFrontendPhp( + final @NotNull String moduleName, + final @NotNull String className + ) { + super(moduleName, className); } - /** - * Get name of frontend controller file. - * - * @return Name of the file. - */ - public String getFileName() { - return this.fileName; + @Override + public String getDirectory() { + return DEFAULT_DIR; } /** @@ -52,22 +32,4 @@ public String getFileName() { public String getTemplate() { return TEMPLATE; } - - /** - * Get return language. - * - * @return PHP language - */ - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } - - /** - * Get name of controller file. - * - * @param filename Name of frontend controller file. - */ - private void setFileName(final String filename) { - this.fileName = filename; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/DataModelFile.java b/src/com/magento/idea/magento2plugin/magento/files/DataModelFile.java index 6d2234e7e..e6f299d90 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/DataModelFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/DataModelFile.java @@ -5,57 +5,40 @@ package com.magento.idea.magento2plugin.magento.files; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; import org.jetbrains.annotations.NotNull; -public class DataModelFile implements ModuleFileInterface { +public class DataModelFile extends AbstractPhpFile { + public static final String TEMPLATE = "Magento Data Model"; + public static final String HUMAN_READABLE_NAME = "Data transfer object model"; public static final String DIRECTORY = "Model/Data"; public static final String DATA_OBJECT = "Magento\\Framework\\DataObject"; - private final String className; - private final String fileName; - private NamespaceBuilder namespaceBuilder; - - public DataModelFile(final @NotNull String className) { - this.className = className; - fileName = className.concat(".php"); - } /** - * Get namespace builder for file. + * Data model generator file constructor. * * @param moduleName String - * - * @return String + * @param className String */ - public @NotNull NamespaceBuilder getNamespaceBuilder( - final @NotNull String moduleName + public DataModelFile( + final @NotNull String moduleName, + final @NotNull String className ) { - if (namespaceBuilder == null) { - namespaceBuilder = new NamespaceBuilder( - moduleName, - className, - DIRECTORY - ); - } - - return namespaceBuilder; + super(moduleName, className); } @Override - public String getFileName() { - return fileName; + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } @Override - public String getTemplate() { - return TEMPLATE; + public String getDirectory() { + return DIRECTORY; } @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; + public String getTemplate() { + return TEMPLATE; } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/DataModelInterfaceFile.java b/src/com/magento/idea/magento2plugin/magento/files/DataModelInterfaceFile.java index 3bef9586e..01937ff4c 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/DataModelInterfaceFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/DataModelInterfaceFile.java @@ -5,51 +5,39 @@ package com.magento.idea.magento2plugin.magento.files; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; import org.jetbrains.annotations.NotNull; -public class DataModelInterfaceFile implements ModuleFileInterface { +public class DataModelInterfaceFile extends AbstractPhpFile { + public static final String TEMPLATE = "Magento Data Model Interface"; + public static final String HUMAN_READABLE_NAME = "Data transfer object interface"; public static final String DIRECTORY = "Api/Data"; - private final String className; - private final String filename; - - public DataModelInterfaceFile(final @NotNull String className) { - this.className = className; - filename = className.concat(".php"); - } /** - * Get namespace builder for file. + * DTO interface file constructor. * * @param moduleName String - * - * @return String + * @param className String */ - public @NotNull NamespaceBuilder getNamespaceBuilder( - final @NotNull String moduleName + public DataModelInterfaceFile( + final @NotNull String moduleName, + final @NotNull String className ) { - return new NamespaceBuilder( - moduleName, - className, - DIRECTORY - ); + super(moduleName, className); } @Override - public String getFileName() { - return filename; + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } @Override - public String getTemplate() { - return TEMPLATE; + public String getDirectory() { + return DIRECTORY; } @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; + public String getTemplate() { + return TEMPLATE; } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/EntityDataMapperFile.java b/src/com/magento/idea/magento2plugin/magento/files/EntityDataMapperFile.java index 5d3235648..ca4e0e4c1 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/EntityDataMapperFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/EntityDataMapperFile.java @@ -5,106 +5,40 @@ package com.magento.idea.magento2plugin.magento.files; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; import org.jetbrains.annotations.NotNull; -public class EntityDataMapperFile implements ModuleFileInterface { +public class EntityDataMapperFile extends AbstractPhpFile { public static final String CLASS_NAME_SUFFIX = "DataMapper"; - public static final String FILE_EXTENSION = "php"; + public static final String HUMAN_READABLE_NAME = "Entity data mapper class"; public static final String TEMPLATE = "Magento Entity Data Mapper"; private static final String DIRECTORY = "Mapper"; - private final String className; - private NamespaceBuilder namespaceBuilder; /** * Entity data mapper file constructor. * - * @param entityName String - */ - public EntityDataMapperFile(final @NotNull String entityName) { - this.className = entityName.concat(CLASS_NAME_SUFFIX); - } - - /** - * Get namespace builder. - * - * @param moduleName String - * - * @return String - */ - public @NotNull NamespaceBuilder getNamespaceBuilder( - final @NotNull String moduleName - ) { - if (namespaceBuilder == null) { - namespaceBuilder = new NamespaceBuilder( - moduleName, - className, - DIRECTORY - ); - } - - return namespaceBuilder; - } - - /** - * Get namespace. - * * @param moduleName String - * - * @return String - */ - public @NotNull String getNamespace( - final @NotNull String moduleName - ) { - return getNamespaceBuilder(moduleName).getNamespace(); - } - - /** - * Get class FQN. - * - * @param moduleName String - * - * @return String + * @param entityName String */ - public @NotNull String getClassFqn( - final @NotNull String moduleName + public EntityDataMapperFile( + final @NotNull String moduleName, + final @NotNull String entityName ) { - return getNamespaceBuilder(moduleName).getClassFqn(); + super(moduleName, entityName.concat(CLASS_NAME_SUFFIX)); } - /** - * Get class name. - * - * @return String - */ - public @NotNull String getClassName() { - return className; + @Override + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } - /** - * Get directory for entity data mapper file. - * - * @return String - */ + @Override public @NotNull String getDirectory() { return DIRECTORY; } - @Override - public String getFileName() { - return className.concat("." + FILE_EXTENSION); - } - @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/FormGenericButtonBlockFile.java b/src/com/magento/idea/magento2plugin/magento/files/FormGenericButtonBlockFile.java index 6438f3c43..626446e1b 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/FormGenericButtonBlockFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/FormGenericButtonBlockFile.java @@ -5,53 +5,37 @@ package com.magento.idea.magento2plugin.magento.files; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; import org.jetbrains.annotations.NotNull; -public final class FormGenericButtonBlockFile implements ModuleFileInterface { +public final class FormGenericButtonBlockFile extends AbstractPhpFile { public static final String CLASS_NAME = "GenericButton"; - public static final String FILE_EXTENSION = "php"; + public static final String HUMAN_READABLE_NAME = "Generic button block class"; public static final String TEMPLATE = "Magento PHP Form Generic Button Block Class"; public static final String DIRECTORY = "Block/Form"; public static final String CONTEXT = "Magento\\Backend\\Block\\Widget\\Context"; - private NamespaceBuilder namespaceBuilder; /** - * Get namespace builder for file. + * Form generic button block file constructor. * * @param moduleName String - * - * @return String */ - public @NotNull NamespaceBuilder getNamespaceBuilder( - final @NotNull String moduleName - ) { - if (namespaceBuilder == null) { - namespaceBuilder = new NamespaceBuilder( - moduleName, - CLASS_NAME, - DIRECTORY - ); - } - - return namespaceBuilder; + public FormGenericButtonBlockFile(final @NotNull String moduleName) { + super(moduleName, CLASS_NAME); } @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } @Override - public String getTemplate() { - return TEMPLATE; + public String getDirectory() { + return DIRECTORY; } @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; + public String getTemplate() { + return TEMPLATE; } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/GridActionColumnFile.java b/src/com/magento/idea/magento2plugin/magento/files/GridActionColumnFile.java index 5eb5c7ea5..3fdb5feed 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/GridActionColumnFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/GridActionColumnFile.java @@ -5,12 +5,12 @@ package com.magento.idea.magento2plugin.magento.files; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; +import org.jetbrains.annotations.NotNull; + +public final class GridActionColumnFile extends AbstractPhpFile { -public final class GridActionColumnFile implements ModuleFileInterface { public static final String CLASS_NAME = "BlockActions"; - public static final String FILE_EXTENSION = "php"; + public static final String HUMAN_READABLE_NAME = "Grid Ui Component actions column class"; public static final String TEMPLATE = "Magento Grid Ui Component Action Column Class"; public static final String DIRECTORY = "Ui/Component/Listing/Column"; public static final String PARENT_CLASS = "Magento\\Ui\\Component\\Listing\\Columns\\Column"; @@ -19,27 +19,24 @@ public final class GridActionColumnFile implements ModuleFileInterface { public static final String UI_COMPONENT_FACTORY = "Magento\\Framework\\View\\Element\\UiComponentFactory"; - /** - * Get Directory path from the module root. - * - * @return String - */ - public String getDirectory() { - return DIRECTORY; + public GridActionColumnFile( + final @NotNull String moduleName + ) { + super(moduleName, CLASS_NAME); } @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } @Override - public String getTemplate() { - return TEMPLATE; + public String getDirectory() { + return DIRECTORY; } @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; + public String getTemplate() { + return TEMPLATE; } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/UiComponentDataProviderFile.java b/src/com/magento/idea/magento2plugin/magento/files/UiComponentDataProviderFile.java index 24f65095d..55e908b37 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/UiComponentDataProviderFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/UiComponentDataProviderFile.java @@ -5,8 +5,6 @@ package com.magento.idea.magento2plugin.magento.files; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; import org.jetbrains.annotations.NotNull; public class UiComponentDataProviderFile extends AbstractPhpFile { @@ -14,7 +12,6 @@ public class UiComponentDataProviderFile extends AbstractPhpFile { public static final String TEMPLATE = "Magento UI Component Custom Data Provider Class"; public static final String HUMAN_READABLE_NAME = "Data Provider Class"; public static final String DIRECTORY = "Ui/DataProvider"; - public static final String FILE_EXTENSION = "php"; public static final String CUSTOM_TYPE = "custom"; public static final String COLLECTION_TYPE = "collection"; public static final String DEFAULT_DATA_PROVIDER = @@ -49,18 +46,8 @@ public String getDirectory() { return directory == null ? DIRECTORY : directory; } - @Override - public String getFileName() { - return String.format("%s.%s", getClassName(), FILE_EXTENSION); - } - @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/actions/DeleteActionFile.java b/src/com/magento/idea/magento2plugin/magento/files/actions/DeleteActionFile.java index 48be38338..7ad2adf59 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/actions/DeleteActionFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/actions/DeleteActionFile.java @@ -5,8 +5,6 @@ package com.magento.idea.magento2plugin.magento.files.actions; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import org.jetbrains.annotations.NotNull; @@ -14,7 +12,6 @@ public final class DeleteActionFile extends AbstractPhpFile { public static final String CLASS_NAME = "Delete"; public static final String HUMAN_READABLE_NAME = "Delete controller class"; - public static final String FILE_EXTENSION = "php"; public static final String TEMPLATE = "Magento Entity Delete Controller Class"; private static final String DIRECTORY = "Controller/Adminhtml"; private final String entityName; @@ -48,18 +45,8 @@ public String getHumanReadableName() { return HUMAN_READABLE_NAME; } - @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); - } - @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/actions/EditActionFile.java b/src/com/magento/idea/magento2plugin/magento/files/actions/EditActionFile.java index 1df3c774b..b4cf8fbd0 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/actions/EditActionFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/actions/EditActionFile.java @@ -5,81 +5,43 @@ package com.magento.idea.magento2plugin.magento.files.actions; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; -import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import org.jetbrains.annotations.NotNull; -public final class EditActionFile implements ModuleFileInterface { +public final class EditActionFile extends AbstractPhpFile { public static final String CLASS_NAME = "Edit"; - public static final String FILE_EXTENSION = "php"; + public static final String HUMAN_READABLE_NAME = "Entity edit controller class"; public static final String TEMPLATE = "Magento Entity Edit Action Controller Class"; private static final String DIRECTORY = "Controller/Adminhtml"; private final String entityName; - private NamespaceBuilder namespaceBuilder; /** * Edit action (adminhtml) file. * - * @param entityName String - */ - public EditActionFile(final @NotNull String entityName) { - this.entityName = entityName; - } - - /** - * Get namespace builder for file. - * * @param moduleName String - * - * @return String + * @param entityName String */ - public @NotNull NamespaceBuilder getNamespaceBuilder( - final @NotNull String moduleName + public EditActionFile( + final @NotNull String moduleName, + final @NotNull String entityName ) { - if (namespaceBuilder == null) { - namespaceBuilder = new NamespaceBuilder( - moduleName, - CLASS_NAME, - getDirectory() - ); - } - - return namespaceBuilder; + super(moduleName, CLASS_NAME); + this.entityName = entityName; } - /** - * Get class name. - * - * @return String - */ - public String getClassName() { - return CLASS_NAME; + @Override + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } - /** - * Get Directory path from the module root. - * - * @return String - */ + @Override public String getDirectory() { return DIRECTORY.concat("/" + entityName); } - @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); - } - @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/actions/IndexActionFile.java b/src/com/magento/idea/magento2plugin/magento/files/actions/IndexActionFile.java index 03b484ffc..9b891b420 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/actions/IndexActionFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/actions/IndexActionFile.java @@ -5,20 +5,16 @@ package com.magento.idea.magento2plugin.magento.files.actions; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; -import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import org.jetbrains.annotations.NotNull; -public final class IndexActionFile implements ModuleFileInterface { +public final class IndexActionFile extends AbstractPhpFile { public static final String CLASS_NAME = "Index"; - public static final String FILE_EXTENSION = "php"; + public static final String HUMAN_READABLE_NAME = "Entity list controller class"; public static final String TEMPLATE = "Magento Entity Index Adminhtml Controller Class"; private static final String DIRECTORY = "Controller/Adminhtml"; private final String entityName; - private NamespaceBuilder namespaceBuilder; /** * Index adminhtml controller for an entity. @@ -26,53 +22,25 @@ public final class IndexActionFile implements ModuleFileInterface { * @param entityName String */ public IndexActionFile( + final @NotNull String moduleName, final @NotNull String entityName ) { + super(moduleName, CLASS_NAME); this.entityName = entityName; } - /** - * Get namespace builder for file. - * - * @param moduleName String - * - * @return String - */ - public @NotNull NamespaceBuilder getNamespaceBuilder( - final @NotNull String moduleName - ) { - if (namespaceBuilder == null) { - namespaceBuilder = new NamespaceBuilder( - moduleName, - CLASS_NAME, - getDirectory() - ); - } - - return namespaceBuilder; + @Override + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } - /** - * Get Directory path from the module root. - * - * @return String - */ + @Override public String getDirectory() { return DIRECTORY.concat("/" + entityName); } - @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); - } - @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/actions/NewActionFile.java b/src/com/magento/idea/magento2plugin/magento/files/actions/NewActionFile.java index 211950548..0cb03f398 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/actions/NewActionFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/actions/NewActionFile.java @@ -5,8 +5,6 @@ package com.magento.idea.magento2plugin.magento.files.actions; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import org.jetbrains.annotations.NotNull; @@ -14,7 +12,6 @@ public final class NewActionFile extends AbstractPhpFile { public static final String CLASS_NAME = "NewAction"; public static final String HUMAN_READABLE_NAME = "New entity controller class"; - public static final String FILE_EXTENSION = "php"; public static final String TEMPLATE = "Magento Entity New Action Controller Class"; private static final String DIRECTORY = "Controller/Adminhtml"; private final String entityName; @@ -43,18 +40,8 @@ public String getHumanReadableName() { return HUMAN_READABLE_NAME; } - @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); - } - @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/actions/SaveActionFile.java b/src/com/magento/idea/magento2plugin/magento/files/actions/SaveActionFile.java index 6999e5419..0064c976d 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/actions/SaveActionFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/actions/SaveActionFile.java @@ -5,74 +5,45 @@ package com.magento.idea.magento2plugin.magento.files.actions; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; -import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import org.jetbrains.annotations.NotNull; -public final class SaveActionFile implements ModuleFileInterface { +public final class SaveActionFile extends AbstractPhpFile { public static final String CLASS_NAME = "Save"; - public static final String FILE_EXTENSION = "php"; + public static final String HUMAN_READABLE_NAME = "Entity save controller class"; public static final String TEMPLATE = "Magento Entity Save Controller Class"; private static final String DIRECTORY = "Controller/Adminhtml"; public static final String COULD_NOT_SAVE = "Magento\\Framework\\Exception\\CouldNotSaveException"; private final String entityName; - private NamespaceBuilder namespaceBuilder; /** * Save action file controller. * + * @param moduleName String * @param entityName String */ - public SaveActionFile(final @NotNull String entityName) { + public SaveActionFile( + final @NotNull String moduleName, + final @NotNull String entityName + ) { + super(moduleName, CLASS_NAME); this.entityName = entityName; } - /** - * Get namespace builder for file. - * - * @param moduleName String - * - * @return String - */ - public @NotNull NamespaceBuilder getNamespaceBuilder( - final @NotNull String moduleName - ) { - if (namespaceBuilder == null) { - namespaceBuilder = new NamespaceBuilder( - moduleName, - CLASS_NAME, - getDirectory() - ); - } - - return namespaceBuilder; + @Override + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } - /** - * Get Directory path from the module root. - * - * @return String - */ + @Override public String getDirectory() { return DIRECTORY.concat("/" + entityName); } - @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); - } - @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/commands/DeleteEntityByIdCommandFile.java b/src/com/magento/idea/magento2plugin/magento/files/commands/DeleteEntityByIdCommandFile.java index 48814fef8..2093e93f8 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/commands/DeleteEntityByIdCommandFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/commands/DeleteEntityByIdCommandFile.java @@ -5,100 +5,43 @@ package com.magento.idea.magento2plugin.magento.files.commands; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; -import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import org.jetbrains.annotations.NotNull; -public class DeleteEntityByIdCommandFile implements ModuleFileInterface { +public class DeleteEntityByIdCommandFile extends AbstractPhpFile { public static final String CLASS_NAME = "DeleteByIdCommand"; - public static final String FILE_EXTENSION = "php"; + public static final String HUMAN_READABLE_NAME = "Delete entity by id command class"; public static final String TEMPLATE = "Magento Delete Entity By Id Command"; private static final String DIRECTORY = "Command"; private final String entityName; - private NamespaceBuilder namespaceBuilder; /** * Delete entity by id command file constructor. * - * @param entityName String - */ - public DeleteEntityByIdCommandFile(final @NotNull String entityName) { - this.entityName = entityName; - } - - /** - * Get namespace. - * - * @param moduleName String - * - * @return String - */ - public @NotNull String getNamespace( - final @NotNull String moduleName - ) { - return getNamespaceBuilder(moduleName).getNamespace(); - } - - /** - * Get class FQN. - * - * @param moduleName String - * - * @return String - */ - public String getClassFqn( - final @NotNull String moduleName - ) { - return getNamespaceBuilder(moduleName).getClassFqn(); - } - - /** - * Get namespace builder for file. - * * @param moduleName String - * - * @return String + * @param entityName String */ - public @NotNull NamespaceBuilder getNamespaceBuilder( - final @NotNull String moduleName + public DeleteEntityByIdCommandFile( + final @NotNull String moduleName, + final @NotNull String entityName ) { - if (namespaceBuilder == null) { - namespaceBuilder = new NamespaceBuilder( - moduleName, - CLASS_NAME, - getDirectory(entityName) - ); - } - - return namespaceBuilder; + super(moduleName, CLASS_NAME); + this.entityName = entityName; } - /** - * Get directory for delete command file. - * - * @param entityName String - * - * @return String - */ - public static String getDirectory(final @NotNull String entityName) { - return DIRECTORY.concat("/" + entityName); + @Override + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); + public String getDirectory() { + return DIRECTORY.concat("/" + entityName); } @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/files/queries/GetListQueryFile.java b/src/com/magento/idea/magento2plugin/magento/files/queries/GetListQueryFile.java index f88245b80..66e1706f9 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/queries/GetListQueryFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/queries/GetListQueryFile.java @@ -5,71 +5,44 @@ package com.magento.idea.magento2plugin.magento.files.queries; -import com.intellij.lang.Language; -import com.jetbrains.php.lang.PhpLanguage; -import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; -import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile; import java.io.File; import org.jetbrains.annotations.NotNull; -public final class GetListQueryFile implements ModuleFileInterface { +public final class GetListQueryFile extends AbstractPhpFile { public static final String CLASS_NAME = "GetListQuery"; - public static final String FILE_EXTENSION = "php"; + public static final String HUMAN_READABLE_NAME = "Get list query class"; public static final String TEMPLATE = "Magento Get List Query Model"; private static final String DIRECTORY = "Query"; private final String entityName; - private NamespaceBuilder namespaceBuilder; /** * Get list query file constructor. * + * @param moduleName String * @param entityName String */ - public GetListQueryFile(final @NotNull String entityName) { + public GetListQueryFile( + final @NotNull String moduleName, + final @NotNull String entityName + ) { + super(moduleName, CLASS_NAME); this.entityName = entityName; } - /** - * Get namespace builder for file. - * - * @param moduleName String - * - * @return NamespaceBuilder - */ - public NamespaceBuilder getNamespaceBuilder(final @NotNull String moduleName) { - if (namespaceBuilder == null) { - namespaceBuilder = new NamespaceBuilder( - moduleName, - GetListQueryFile.CLASS_NAME, - getDirectory() - ); - } - - return namespaceBuilder; + @Override + public String getHumanReadableName() { + return HUMAN_READABLE_NAME; } - /** - * Get get list query file directory. - * - * @return String - */ + @Override public String getDirectory() { return DIRECTORY.concat(File.separator).concat(entityName); } - @Override - public String getFileName() { - return CLASS_NAME.concat("." + FILE_EXTENSION); - } - @Override public String getTemplate() { return TEMPLATE; } - - @Override - public Language getLanguage() { - return PhpLanguage.INSTANCE; - } } diff --git a/src/com/magento/idea/magento2plugin/magento/packages/UiFormButtonTypeSettings.java b/src/com/magento/idea/magento2plugin/magento/packages/UiFormButtonTypeSettings.java index f0afbeb10..f0e23626e 100644 --- a/src/com/magento/idea/magento2plugin/magento/packages/UiFormButtonTypeSettings.java +++ b/src/com/magento/idea/magento2plugin/magento/packages/UiFormButtonTypeSettings.java @@ -7,18 +7,18 @@ import java.util.InputMismatchException; import java.util.Map; - import org.jetbrains.annotations.NotNull; public enum UiFormButtonTypeSettings { - SAVE("Save", "save primary", "''", "[\n" + - " 'mage-init' => ['button' => ['event' => 'save']],\n" + - " 'form-role' => 'save'\n" + - " ]", 10, "Save entity button."), - DELETE("Delete", "delete", "'deleteConfirm(\\''\n" + - " . __('Are you sure you want to delete this $varName?')\n" + - " . '\\', \\'' . $this->getUrl('*/*/delete', ['$varId' => " + - "$this->$varEntityIdAccessor]) . '\\')'", "[]", 20, "Delete entity button."), + + SAVE("Save", "save primary", "''", "[\n" + + " 'mage-init' => ['button' => ['event' => 'save']],\n" + + " 'form-role' => 'save'\n" + + " ]", 10, "Save entity button."), + DELETE("Delete", "delete", "'deleteConfirm(\\''\n" + + " . __('Are you sure you want to delete this $varName?')\n" + + " . '\\', \\'' . $this->getUrl('*/*/delete', ['$varId' => " + + "$this->$varEntityIdAccessor]) . '\\')'", "[]", 20, "Delete entity button."), BACK("Back To Grid", "back", "sprintf(\"location.href = '%s';\", $this->getUrl('*/*/'))", "[]", 30, "Back to list button."), diff --git a/src/com/magento/idea/magento2plugin/magento/packages/uiComponent/FormElementType.java b/src/com/magento/idea/magento2plugin/magento/packages/uicomponent/FormElementType.java similarity index 97% rename from src/com/magento/idea/magento2plugin/magento/packages/uiComponent/FormElementType.java rename to src/com/magento/idea/magento2plugin/magento/packages/uicomponent/FormElementType.java index 71aaee407..2dc043648 100644 --- a/src/com/magento/idea/magento2plugin/magento/packages/uiComponent/FormElementType.java +++ b/src/com/magento/idea/magento2plugin/magento/packages/uicomponent/FormElementType.java @@ -3,7 +3,8 @@ * See COPYING.txt for license details. */ -package com.magento.idea.magento2plugin.magento.packages.uiComponent; +package com.magento.idea.magento2plugin.magento.packages.uicomponent; + import com.intellij.openapi.externalSystem.service.execution.NotSupportedException; import com.magento.idea.magento2plugin.magento.packages.PropertiesTypes; import java.util.LinkedList; @@ -11,6 +12,7 @@ import org.jetbrains.annotations.NotNull; public enum FormElementType { + HIDDEN("hidden"), FILE("file"), INPUT("input"), diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGeneratorTest.java index 527c8d558..6ad8b4076 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/DataModelInterfaceGeneratorTest.java @@ -22,8 +22,8 @@ public void testGenerateDataModelInterface() { "SampleInterface", "Foo_Bar", "ID_PROPERTY;id_property;int;IdProperty;idProperty," - + "SAMPLE_PROPERTY;sample_property;string;" + - "SampleProperty;sampleProperty" + + "SAMPLE_PROPERTY;sample_property;string;" + + "SampleProperty;sampleProperty" ), myFixture.getProject() ); diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityCommandGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityCommandGeneratorTest.java index d8f03d756..bea393ebd 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityCommandGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityCommandGeneratorTest.java @@ -37,7 +37,7 @@ public void testGenerateDeleteEntityByIdCommandFile() { false ); final String filePath = this.getFixturePath( - new DeleteEntityByIdCommandFile(ENTITY_NAME).getFileName() + new DeleteEntityByIdCommandFile(MODULE_NAME, ENTITY_NAME).getFileName() ); final PsiFile expectedFile = myFixture.configureByFile(filePath); final PsiFile deleteEntityCommandFile = deleteEntityByIdCommandGenerator.generate("test"); diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/EditEntityActionGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/EditEntityActionGeneratorTest.java index f9db43747..5d3040662 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/EditEntityActionGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/EditEntityActionGeneratorTest.java @@ -22,7 +22,7 @@ public class EditEntityActionGeneratorTest extends BaseGeneratorTestCase { * Test generation of edit entity controller file. */ public void testGenerateEditEntityActionFile() { - final EditActionFile file = new EditActionFile(ENTITY_NAME); + final EditActionFile file = new EditActionFile(MODULE_NAME, ENTITY_NAME); final EditEntityActionGenerator generator = new EditEntityActionGenerator( new EditEntityActionData( diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/EntityDataMapperClassGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/EntityDataMapperClassGeneratorTest.java index c3a09b23f..8654857c2 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/EntityDataMapperClassGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/EntityDataMapperClassGeneratorTest.java @@ -36,7 +36,8 @@ public void testGenerateEntityDataMapperFile() { myFixture.getProject(), false ); - final EntityDataMapperFile entityDataMapperFile = new EntityDataMapperFile(ENTITY_NAME); + final EntityDataMapperFile entityDataMapperFile = + new EntityDataMapperFile(MODULE_NAME, ENTITY_NAME); final String filePath = this.getFixturePath(entityDataMapperFile.getFileName()); assertGeneratedFileIsCorrect( diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java index de501fdd4..41317c8c8 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java @@ -31,7 +31,7 @@ public void testGenerateFormGenericButtonBlockFile() { false ); final String filePath = this.getFixturePath( - new FormGenericButtonBlockFile().getFileName() + new FormGenericButtonBlockFile(MODULE_NAME).getFileName() ); assertGeneratedFileIsCorrect( diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java index af1b4a1cf..19acda4a0 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java @@ -9,6 +9,7 @@ import com.magento.idea.magento2plugin.magento.files.GridActionColumnFile; public class GridActionColumnFileGeneratorTest extends BaseGeneratorTestCase { + private static final String MODULE_NAME = "Foo_Bar"; private static final String ENTITY_NAME = "Book"; private static final String ENTITY_ID_COLUMN = "book_id"; @@ -19,7 +20,7 @@ public class GridActionColumnFileGeneratorTest extends BaseGeneratorTestCase { * Test generation of grid actions column file. */ public void testGenerateGridActionColumnFile() { - final GridActionColumnFile file = new GridActionColumnFile(); + final GridActionColumnFile file = new GridActionColumnFile(MODULE_NAME); final GridActionColumnData data = new GridActionColumnData( MODULE_NAME, ENTITY_NAME, diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/IndexControllerGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/IndexControllerGeneratorTest.java index 0363d8f7d..68b821448 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/IndexControllerGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/IndexControllerGeneratorTest.java @@ -19,7 +19,7 @@ public class IndexControllerGeneratorTest extends BaseGeneratorTestCase { * Test generation of list view entity controller (adminhtml). */ public void testGenerateIndexControllerFile() { - final IndexActionFile file = new IndexActionFile(ENTITY_NAME); + final IndexActionFile file = new IndexActionFile(MODULE_NAME, ENTITY_NAME); final IndexActionData data = new IndexActionData( MODULE_NAME, ENTITY_NAME, diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueryModelGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueryModelGeneratorTest.java index e48508690..5c6728351 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueryModelGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueryModelGeneratorTest.java @@ -19,7 +19,7 @@ public class QueryModelGeneratorTest extends BaseGeneratorTestCase { * Test generation of GetListQuery model for entity. */ public void testGenerateGetListQueryModelFile() { - final GetListQueryFile file = new GetListQueryFile(ENTITY_NAME); + final GetListQueryFile file = new GetListQueryFile(MODULE_NAME, ENTITY_NAME); final GetListQueryModelData getListQueryModelData = new GetListQueryModelData( MODULE_NAME, ENTITY_NAME, diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityActionGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityActionGeneratorTest.java index 49a1f2487..4ea056ff0 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityActionGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/SaveEntityActionGeneratorTest.java @@ -41,7 +41,9 @@ public void testGenerateSaveEntityActionWithoutInterfaceFile() { false ); final PsiFile saveEntityActionFile = saveEntityControllerFileGenerator.generate("test"); - final String filePath = this.getFixturePath(new SaveActionFile(ENTITY_NAME).getFileName()); + final String filePath = this.getFixturePath( + new SaveActionFile(MODULE_NAME, ENTITY_NAME).getFileName() + ); final PsiFile expectedFile = myFixture.configureByFile(filePath); assertGeneratedFileIsCorrect( @@ -69,10 +71,12 @@ public void testGenerateSaveEntityActionWithInterfaceFile() { new SaveEntityControllerFileGenerator( saveEntityControllerFileData, myFixture.getProject(), - true + false ); final PsiFile saveEntityActionFile = saveEntityControllerFileGenerator.generate("test"); - final String filePath = this.getFixturePath(new SaveActionFile(ENTITY_NAME).getFileName()); + final String filePath = this.getFixturePath( + new SaveActionFile(MODULE_NAME, ENTITY_NAME).getFileName() + ); final PsiFile expectedFile = myFixture.configureByFile(filePath); assertGeneratedFileIsCorrect( diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridDataProviderGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridDataProviderGeneratorTest.java index ba0de50bf..057782ca9 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridDataProviderGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridDataProviderGeneratorTest.java @@ -25,7 +25,7 @@ public class UiComponentGridDataProviderGeneratorTest extends BaseGeneratorTestC * Test data provider class file generation with custom type. */ public void testGenerateCustomDataProvider() { - final PsiFile dataProviderFile = generateDataProvider( new UiComponentDataProviderData( + final PsiFile dataProviderFile = generateDataProvider(new UiComponentDataProviderData( PROVIDER_CLASS_NAME, PROVIDER_PATH )); diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/pool/NewEntityGeneratorPoolTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/pool/NewEntityGeneratorPoolTest.java index a2e524932..34f06821d 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/pool/NewEntityGeneratorPoolTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/pool/NewEntityGeneratorPoolTest.java @@ -14,12 +14,12 @@ public class NewEntityGeneratorPoolTest extends BaseGeneratorTestCase { - private final static String MODULE_NAME = "Foo_Bar"; - private final static String ACTION_NAME = "Test"; - private final static String INDEX_PATH = "index"; - private final static String EDIT_PATH = "edit"; - private final static String NEW_PATH = "new"; - private final static String DELETE_PATH = "delete"; + private static final String MODULE_NAME = "Foo_Bar"; + private static final String ACTION_NAME = "Test"; + private static final String INDEX_PATH = "index"; + private static final String EDIT_PATH = "edit"; + private static final String NEW_PATH = "new"; + private static final String DELETE_PATH = "delete"; /** * Test if generator pool handler instantiated without any error. From 1a73c59d3d1f5bed438398a45e758998bbc2d851 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Tue, 6 Apr 2021 14:54:05 +0300 Subject: [PATCH 2/2] Changed actions column and edit page buttons generation, added new test case for grid list generation --- .../Magento UI Component Grid XML.xml.ft | 2 + .../generation/data/UiComponentGridData.java | 14 +++++ .../UiComponentGridDtoConverter.java | 1 + .../generation/dialog/NewEntityDialog.java | 6 ++- .../FormGenericButtonBlockGenerator.java | 2 +- .../GridActionColumnFileGenerator.java | 2 +- .../UiComponentFormButtonBlockGenerator.java | 8 ++- .../UiComponentGridXmlGenerator.java | 11 ++-- .../files/FormGenericButtonBlockFile.java | 12 +++-- .../magento/files/GridActionColumnFile.java | 17 ++++-- .../generateBackButtonBlock/MyBackButton.php | 2 +- .../generateCustomButtonBlock/MyCustom.php | 2 +- .../generateDeleteButtonBlock/DeleteBlock.php | 2 +- .../generateSaveButtonBlock/SaveBlock.php | 2 +- .../GenericButton.php | 2 +- ...{BlockActions.php => BookBlockActions.php} | 2 +- .../custom_entity_grid.xml | 5 -- .../custom_entity_grid.xml | 52 ++++++++++++++++++ .../custom_entity_grid.xml | 5 -- .../FormButtonBlockGeneratorTest.java | 8 +-- .../FormGenericButtonBlockGeneratorTest.java | 5 +- .../GridActionColumnFileGeneratorTest.java | 2 +- .../UiComponentGridXmlGeneratorTest.java | 53 +++++++++++++++++++ 23 files changed, 176 insertions(+), 41 deletions(-) rename testData/actions/generation/generator/GridActionColumnFileGenerator/generateGridActionColumnFile/{BlockActions.php => BookBlockActions.php} (98%) create mode 100644 testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridForBaseAreaWithActionsColumnColumn/custom_entity_grid.xml diff --git a/resources/fileTemplates/internal/Magento UI Component Grid XML.xml.ft b/resources/fileTemplates/internal/Magento UI Component Grid XML.xml.ft index d72447bda..e502f3088 100644 --- a/resources/fileTemplates/internal/Magento UI Component Grid XML.xml.ft +++ b/resources/fileTemplates/internal/Magento UI Component Grid XML.xml.ft @@ -69,10 +69,12 @@ $column #end #end +#if (${ACTION_COLUMN}) ${ID_FIELD_NAME} +#end diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/UiComponentGridData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/UiComponentGridData.java index 9bc9c3214..0120543a1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/UiComponentGridData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/UiComponentGridData.java @@ -18,6 +18,7 @@ public class UiComponentGridData { private final String acl; private final String dataProviderName; private final String dataProviderPath; + private final String entityName; private final UiComponentGridToolbarData gridToolbarData; private final List> columns; @@ -51,6 +52,7 @@ public UiComponentGridData( acl, dataProviderName, dataProviderPath, + null, gridToolbarData, new ArrayList<>() ); @@ -66,6 +68,7 @@ public UiComponentGridData( * @param acl String * @param dataProviderName String * @param dataProviderPath String + * @param entityName String * @param gridToolbarData UiComponentGridToolbarData * @param columns List */ @@ -77,6 +80,7 @@ public UiComponentGridData( final String acl, final String dataProviderName, final String dataProviderPath, + final String entityName, final UiComponentGridToolbarData gridToolbarData, final List> columns ) { @@ -87,6 +91,7 @@ public UiComponentGridData( this.acl = acl; this.dataProviderName = dataProviderName; this.dataProviderPath = dataProviderPath; + this.entityName = entityName; this.gridToolbarData = gridToolbarData; this.columns = columns; } @@ -154,6 +159,15 @@ public String getDataProviderPath() { return dataProviderPath; } + /** + * Get entity name. + * + * @return String + */ + public String getEntityName() { + return entityName; + } + /** * Get ID field name. * diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentGridDtoConverter.java b/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentGridDtoConverter.java index b55425be7..05b845887 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentGridDtoConverter.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentGridDtoConverter.java @@ -34,6 +34,7 @@ public UiComponentGridDtoConverter( newEntityDialogData.getAclId(), newEntityDialogData.getEntityName().concat("DataProvider"), UiComponentDataProviderFile.DIRECTORY, + newEntityDialogData.getEntityName(), new UiComponentGridToolbarDtoConverter(generationContextData, newEntityDialogData), generationContextData.getEntityProps() ); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java index a7238553d..1b9c14d58 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java @@ -378,6 +378,10 @@ private void generateNewEntityFiles(final @NotNull ActionEvent event) { buttonOK.setEnabled(false); buttonCancel.setEnabled(false); + if (propertyTable.isEditing()) { + propertyTable.getCellEditor().stopCellEditing(); + } + new ProcessWorker( this::onOK, this::releaseDialogAfterGeneration, @@ -518,7 +522,7 @@ private List getFieldSets() { */ private List getButtons() { final List buttons = new ArrayList<>(); - final String directory = "Block/Form"; + final String directory = "Block/Form/" + entityName.getText().trim(); final NamespaceBuilder namespaceBuilderSave = new NamespaceBuilder( moduleName, diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java index 66b725d86..cdef815c5 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java @@ -53,7 +53,7 @@ public FormGenericButtonBlockGenerator( @Override protected AbstractPhpFile initFile() { - return new FormGenericButtonBlockFile(data.getModuleName()); + return new FormGenericButtonBlockFile(data.getModuleName(), data.getEntityName()); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGenerator.java index a935780ee..386984ddd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGenerator.java @@ -50,7 +50,7 @@ public GridActionColumnFileGenerator( @Override protected AbstractPhpFile initFile() { - return new GridActionColumnFile(data.getModuleName()); + return new GridActionColumnFile(data.getModuleName(), data.getEntityName()); } /** diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonBlockGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonBlockGenerator.java index 9fdd5347c..c525eef15 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonBlockGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentFormButtonBlockGenerator.java @@ -31,6 +31,7 @@ import org.jetbrains.annotations.NotNull; public class UiComponentFormButtonBlockGenerator extends FileGenerator { + private final UiComponentFormButtonData buttonData; private final Project project; private final FileFromTemplateGenerator fileFromTemplateGenerator; @@ -148,15 +149,18 @@ protected void fillAttributes(final @NotNull Properties attributes) { PhpClassGeneratorUtil.getNameFromFqn(FormButtonBlockFile.DATA_PROVIDER_TYPE)); uses.add(FormButtonBlockFile.DATA_PROVIDER_TYPE); + final FormGenericButtonBlockFile genericButtonBlockFile = + new FormGenericButtonBlockFile(buttonData.getButtonModule(), entityName); + final NamespaceBuilder genericBtnNamespace = new NamespaceBuilder( buttonData.getButtonModule(), FormGenericButtonBlockFile.CLASS_NAME, - FormGenericButtonBlockFile.DIRECTORY + genericButtonBlockFile.getDirectory() ); attributes.setProperty("GENERIC_BUTTON", PhpClassGeneratorUtil.getNameFromFqn(genericBtnNamespace.getClassFqn())); - if (!FormGenericButtonBlockFile.DIRECTORY.equals(buttonData.getButtonDirectory())) { + if (!genericButtonBlockFile.getDirectory().equals(buttonData.getButtonDirectory())) { uses.add(genericBtnNamespace.getClassFqn()); } 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 81bc31de2..aefea9c18 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGenerator.java @@ -205,12 +205,11 @@ private void prepareColumnsProperties(final @NotNull Properties attributes) { attributes.setProperty("COLUMNS", String.join("\n", columnsTextList)); } - final NamespaceBuilder actionColumnNamespace = new NamespaceBuilder( - data.getModuleName(), - GridActionColumnFile.CLASS_NAME, - GridActionColumnFile.DIRECTORY - ); - attributes.setProperty("ACTION_COLUMN", actionColumnNamespace.getClassFqn()); + if (data.getEntityName() != null) { + final GridActionColumnFile gridActionColumnFile = + new GridActionColumnFile(data.getModuleName(), data.getEntityName()); + attributes.setProperty("ACTION_COLUMN", gridActionColumnFile.getClassFqn()); + } } /** diff --git a/src/com/magento/idea/magento2plugin/magento/files/FormGenericButtonBlockFile.java b/src/com/magento/idea/magento2plugin/magento/files/FormGenericButtonBlockFile.java index 626446e1b..1776ab125 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/FormGenericButtonBlockFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/FormGenericButtonBlockFile.java @@ -12,16 +12,22 @@ public final class FormGenericButtonBlockFile extends AbstractPhpFile { public static final String CLASS_NAME = "GenericButton"; public static final String HUMAN_READABLE_NAME = "Generic button block class"; public static final String TEMPLATE = "Magento PHP Form Generic Button Block Class"; - public static final String DIRECTORY = "Block/Form"; public static final String CONTEXT = "Magento\\Backend\\Block\\Widget\\Context"; + private static final String DIRECTORY = "Block/Form"; + private final String entityName; /** * Form generic button block file constructor. * * @param moduleName String + * @param entityName String */ - public FormGenericButtonBlockFile(final @NotNull String moduleName) { + public FormGenericButtonBlockFile( + final @NotNull String moduleName, + final @NotNull String entityName + ) { super(moduleName, CLASS_NAME); + this.entityName = entityName; } @Override @@ -31,7 +37,7 @@ public String getHumanReadableName() { @Override public String getDirectory() { - return DIRECTORY; + return DIRECTORY.concat("/" + entityName); } @Override diff --git a/src/com/magento/idea/magento2plugin/magento/files/GridActionColumnFile.java b/src/com/magento/idea/magento2plugin/magento/files/GridActionColumnFile.java index 3fdb5feed..27538f96b 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/GridActionColumnFile.java +++ b/src/com/magento/idea/magento2plugin/magento/files/GridActionColumnFile.java @@ -9,20 +9,27 @@ public final class GridActionColumnFile extends AbstractPhpFile { - public static final String CLASS_NAME = "BlockActions"; public static final String HUMAN_READABLE_NAME = "Grid Ui Component actions column class"; public static final String TEMPLATE = "Magento Grid Ui Component Action Column Class"; - public static final String DIRECTORY = "Ui/Component/Listing/Column"; public static final String PARENT_CLASS = "Magento\\Ui\\Component\\Listing\\Columns\\Column"; public static final String CONTEXT = "Magento\\Framework\\View\\Element\\UiComponent\\ContextInterface"; public static final String UI_COMPONENT_FACTORY = "Magento\\Framework\\View\\Element\\UiComponentFactory"; - + private static final String CLASS_NAME = "BlockActions"; + private static final String DIRECTORY = "Ui/Component/Listing/Column"; + + /** + * Grid actions column file constructor. + * + * @param moduleName String + * @param entityName String + */ public GridActionColumnFile( - final @NotNull String moduleName + final @NotNull String moduleName, + final @NotNull String entityName ) { - super(moduleName, CLASS_NAME); + super(moduleName, entityName.concat(CLASS_NAME)); } @Override diff --git a/testData/actions/generation/generator/FormButtonBlockGenerator/generateBackButtonBlock/MyBackButton.php b/testData/actions/generation/generator/FormButtonBlockGenerator/generateBackButtonBlock/MyBackButton.php index 589a2bc3a..f49694409 100644 --- a/testData/actions/generation/generator/FormButtonBlockGenerator/generateBackButtonBlock/MyBackButton.php +++ b/testData/actions/generation/generator/FormButtonBlockGenerator/generateBackButtonBlock/MyBackButton.php @@ -1,6 +1,6 @@ desc - - - entity_id - - diff --git a/testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridForBaseAreaWithActionsColumnColumn/custom_entity_grid.xml b/testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridForBaseAreaWithActionsColumnColumn/custom_entity_grid.xml new file mode 100644 index 000000000..5fde07dbd --- /dev/null +++ b/testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridForBaseAreaWithActionsColumnColumn/custom_entity_grid.xml @@ -0,0 +1,52 @@ + ++ + + custom_entity_grid.custom_entity_grid_data_source + custom_entity_grid.custom_entity_grid_data_source + + + + + + + custom_entity_grid_columns + + custom_entity_grid.custom_entity_grid_data_source + + + + + + entity_id + + + + Foo_Bar::custom_entity + + + entity_id + entity_id + + + + + + + textRange + + desc + + + + + entity_id + + + + diff --git a/testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridWithoutToolbar/custom_entity_grid.xml b/testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridWithoutToolbar/custom_entity_grid.xml index afccc39bd..12c11dbc2 100644 --- a/testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridWithoutToolbar/custom_entity_grid.xml +++ b/testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridWithoutToolbar/custom_entity_grid.xml @@ -50,10 +50,5 @@ desc - - - entity_id - - diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormButtonBlockGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormButtonBlockGeneratorTest.java index 594fa4be0..7a94f1ded 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormButtonBlockGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormButtonBlockGeneratorTest.java @@ -11,13 +11,15 @@ import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder; public class FormButtonBlockGeneratorTest extends BaseGeneratorTestCase { + private static final String MODULE_NAME = "Foo_Bar"; private static final String FORM_NAME = "my_form"; - private static final String BLOCK_DIRECTORY = "Block/Form"; - private static final String ACTION_NAME = "test"; private static final String ENTITY_NAME = "Book"; + private static final String BLOCK_DIRECTORY = "Block/Form/" + ENTITY_NAME; + private static final String ACTION_NAME = "test"; private static final String ENTITY_ID = "book_id"; - public static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/Block/Form"; + public static final String EXPECTED_DIRECTORY + = "src/app/code/Foo/Bar/Block/Form/" + ENTITY_NAME; /** * Test creation Block type Save. diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java index 41317c8c8..6df775add 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java @@ -13,7 +13,8 @@ public class FormGenericButtonBlockGeneratorTest extends BaseGeneratorTestCase { private static final String MODULE_NAME = "Foo_Bar"; private static final String ENTITY_NAME = "Book"; private static final String ENTITY_ID = "book_id"; - private static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/Block/Form"; + private static final String EXPECTED_DIRECTORY + = "src/app/code/Foo/Bar/Block/Form/" + ENTITY_NAME; /** * Test generation of form ui component generic button block. @@ -31,7 +32,7 @@ public void testGenerateFormGenericButtonBlockFile() { false ); final String filePath = this.getFixturePath( - new FormGenericButtonBlockFile(MODULE_NAME).getFileName() + new FormGenericButtonBlockFile(MODULE_NAME, ENTITY_NAME).getFileName() ); assertGeneratedFileIsCorrect( diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java index 19acda4a0..e5943a706 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java @@ -20,7 +20,7 @@ public class GridActionColumnFileGeneratorTest extends BaseGeneratorTestCase { * Test generation of grid actions column file. */ public void testGenerateGridActionColumnFile() { - final GridActionColumnFile file = new GridActionColumnFile(MODULE_NAME); + final GridActionColumnFile file = new GridActionColumnFile(MODULE_NAME, ENTITY_NAME); final GridActionColumnData data = new GridActionColumnData( MODULE_NAME, ENTITY_NAME, diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGeneratorTest.java index 31d7d4d6c..223544ee5 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/UiComponentGridXmlGeneratorTest.java @@ -12,12 +12,14 @@ import com.magento.idea.magento2plugin.magento.packages.Areas; import com.magento.idea.magento2plugin.magento.packages.File; import com.magento.idea.magento2plugin.magento.packages.Package; +import java.util.ArrayList; public class UiComponentGridXmlGeneratorTest extends BaseGeneratorTestCase { private static final String MODULE_DIRECTORY = "src/app/code/Foo/Bar/"; private static final String MODULE_NAME = "Foo_Bar"; private static final String COMPONENT_NAME = "custom_entity_grid"; + private static final String ENTITY_NAME = "Book"; private static final String ID_FIELD_NAME = "entity_id"; private static final String ACL = "Foo_Bar::custom_entity"; private static final String DATA_PROVIDER_NAME = "DataProvider"; @@ -53,6 +55,18 @@ public void testGenerateUiGridWithoutToolbar() { assertGeneratedFileIsCorrect(expectedFile, getExpectedDirectory(area), cronGroupsXmlFile); } + /** + * Test UI component listing file generation with actions column. + */ + public void testGenerateUiGridForBaseAreaWithActionsColumnColumn() { + final String area = Areas.base.toString(); + final PsiFile cronGroupsXmlFile = generateComponentGridXmlWithActionsColumn(area); + final String filePath = this.getFixturePath(String.format("%s.%s", COMPONENT_NAME, "xml")); + final PsiFile expectedFile = myFixture.configureByFile(filePath); + + assertGeneratedFileIsCorrect(expectedFile, getExpectedDirectory(area), cronGroupsXmlFile); + } + /** * Generate UI Component Grid Xml file. * @@ -92,6 +106,45 @@ private PsiFile generateComponentGridXml( return uiGridXmlGenerator.generate("test"); } + /** + * Generate UI Component Grid Xml file with actions column. + * + * @param area String + * + * @return PsiFile + */ + private PsiFile generateComponentGridXmlWithActionsColumn( + final String area + ) { + final Project project = myFixture.getProject(); + final UiComponentGridToolbarData uiGridToolbarData = new UiComponentGridToolbarData( + false, + true, + true, + true, + true, + true + ); + final UiComponentGridData uiGridData = new UiComponentGridData( + MODULE_NAME, + area, + COMPONENT_NAME, + ID_FIELD_NAME, + ACL, + DATA_PROVIDER_NAME, + DATA_PROVIDER_PATH, + ENTITY_NAME, + uiGridToolbarData, + new ArrayList<>() + ); + final UiComponentGridXmlGenerator uiGridXmlGenerator = new UiComponentGridXmlGenerator( + uiGridData, + project + ); + + return uiGridXmlGenerator.generate("test"); + } + /** * Get expected directory. *