Skip to content

Commit 264c5ef

Browse files
authored
Merge pull request #266 from mmezhensky/issue-186
#186: Extend the new Magento 2 module generation with the ability to …
2 parents 9741814 + df82626 commit 264c5ef

File tree

10 files changed

+61
-5
lines changed

10 files changed

+61
-5
lines changed

src/com/magento/idea/magento2plugin/actions/generation/data/ModuleXmlData.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
package com.magento.idea.magento2plugin.actions.generation.data;
77

88
import com.intellij.psi.PsiDirectory;
9+
import java.util.List;
910

1011
@SuppressWarnings({"PMD.DataClass"})
1112
public class ModuleXmlData {
1213
private final String packageName;
1314
private final String moduleName;
1415
private final String setupVersion;
1516
private final PsiDirectory baseDir;
17+
private final List<String> moduleSequences;
1618
private final boolean createModuleDirs;
1719

1820
/**
@@ -29,12 +31,14 @@ public ModuleXmlData(
2931
final String moduleName,
3032
final String setupVersion,
3133
final PsiDirectory baseDir,
34+
final List<String> moduleSequences,
3235
final boolean createModuleDirs
3336
) {
3437
this.packageName = packageName;
3538
this.moduleName = moduleName;
3639
this.setupVersion = setupVersion;
3740
this.baseDir = baseDir;
41+
this.moduleSequences = moduleSequences;
3842
this.createModuleDirs = createModuleDirs;
3943
}
4044

@@ -54,6 +58,10 @@ public String getSetupVersion() {
5458
return this.setupVersion;
5559
}
5660

61+
public List<String> getModuleSequences() {
62+
return moduleSequences;
63+
}
64+
5765
public boolean isCreateModuleDirs() {
5866
return this.createModuleDirs;
5967
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ private void generateModuleXml() {
213213
getModuleName(),
214214
getSetupVersion(),
215215
getBaseDir(),
216+
getModuleDependencies(),
216217
true
217218
), project).generate(NewModuleAction.actionName, true);
218219
}

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.magento.idea.magento2plugin.actions.generation.generator.util.FileFromTemplateGenerator;
1515
import com.magento.idea.magento2plugin.magento.files.ModuleXml;
1616
import com.magento.idea.magento2plugin.magento.packages.Package;
17+
import java.util.List;
1718
import java.util.Properties;
1819
import org.jetbrains.annotations.NotNull;
1920

@@ -74,5 +75,30 @@ protected void fillAttributes(final Properties attributes) {
7475
if (moduleXmlData.getSetupVersion() != null) {
7576
attributes.setProperty("SETUP_VERSION", moduleXmlData.getSetupVersion());
7677
}
78+
79+
final String sequences = this.getSequencesString(moduleXmlData.getModuleSequences());
80+
if (!sequences.isEmpty()) {
81+
attributes.setProperty(
82+
"SEQUENCES",
83+
sequences
84+
);
85+
}
86+
}
87+
88+
private String getSequencesString(final List sequences) {
89+
String result = "";
90+
final Object[] dependencies = sequences.toArray();
91+
final boolean noDependency = dependencies.length == 1 && dependencies[0]
92+
.equals(ModuleXml.NO_SEQUENCES_LABEL);
93+
94+
if (noDependency) {
95+
return result;
96+
}
97+
98+
for (final Object o : dependencies) {
99+
result = result.concat(String.format("<module name=\"%s\"/>", o.toString()));
100+
}
101+
102+
return result;
77103
}
78104
}

src/com/magento/idea/magento2plugin/generation/php/MagentoModuleGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.jetbrains.annotations.NotNull;
3232
import org.jetbrains.annotations.Nullable;
3333

34-
3534
public class MagentoModuleGenerator extends WebProjectTemplate<MagentoProjectGeneratorSettings> {
3635
public static String actionName = "Magento 2 Module";
3736

@@ -133,7 +132,7 @@ private PsiFile generateComposerJson(
133132
* @param project Project
134133
* @param baseDir Base directory
135134
* @param settings Settings
136-
* @return
135+
* @return void
137136
*/
138137
private PsiFile generateRegistrationPhp(
139138
@NotNull final Project project,
@@ -165,6 +164,7 @@ private void generateModuleXml(
165164
settings.getModuleName(),
166165
settings.getModuleVersion(),
167166
baseDir,
167+
new ArrayList<>(),
168168
false
169169
);
170170
final ModuleXmlGenerator moduleXmlGenerator =

src/com/magento/idea/magento2plugin/magento/files/ModuleXml.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class ModuleXml implements ModuleFileInterface {
1212
public static final String FILE_NAME = "module.xml";
1313
public static final String MODULE_ATTR_NAME = "name";
1414
public static final String TEMPLATE = "Magento Module XML";
15+
public static final String NO_SEQUENCES_LABEL = "None";
1516
private static final ModuleXml INSTANCE = new ModuleXml();
1617

1718
/**
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
<?xml version="1.0"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
4-
<module name="Test_Module"/>
4+
<module name="Test_Module">
5+
<sequence>
6+
<module name="Magento_Catalog"/>
7+
<module name="Magento_InventoryApi"/>
8+
</sequence>
9+
</module>
510
</config>
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
<?xml version="1.0"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
4-
<module name="Test_Module"/>
4+
<module name="Test_Module">
5+
<sequence>
6+
<module name="Magento_Catalog"/>
7+
<module name="Magento_InventoryApi"/>
8+
</sequence>
9+
</module>
510
</config>
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
<?xml version="1.0"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
4-
<module name="Test_Module1" setup_version="1.0.0"/>
4+
<module name="Test_Module1" setup_version="1.0.0">
5+
<sequence>
6+
<module name="Magento_Catalog"/>
7+
<module name="Magento_InventoryApi"/>
8+
</sequence>
9+
</module>
510
</config>

tests/com/magento/idea/magento2plugin/actions/generation/generator/ModuleXmlGeneratorHaveSetupVersionTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.magento.idea.magento2plugin.magento.files.ModuleXml;
88
import com.magento.idea.magento2plugin.magento.packages.File;
99
import com.magento.idea.magento2plugin.magento.packages.Package;
10+
import java.util.Arrays;
1011

1112
public class ModuleXmlGeneratorHaveSetupVersionTest extends BaseGeneratorTestCase {
1213

@@ -24,6 +25,7 @@ public void testGenerateModuleFile() {
2425
"Module1",
2526
"1.0.0",
2627
projectDir,
28+
Arrays.asList("Magento_Catalog", "Magento_InventoryApi"),
2729
true
2830
);
2931
final ModuleXmlGenerator moduleXmlGenerator = new ModuleXmlGenerator(

tests/com/magento/idea/magento2plugin/actions/generation/generator/ModuleXmlGeneratorTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.magento.idea.magento2plugin.magento.files.ModuleXml;
1313
import com.magento.idea.magento2plugin.magento.packages.File;
1414
import com.magento.idea.magento2plugin.magento.packages.Package;
15+
import java.util.Arrays;
1516

1617
public class ModuleXmlGeneratorTest extends BaseGeneratorTestCase {
1718

@@ -29,6 +30,7 @@ public void testGenerateModuleFile() {
2930
"Module",
3031
null,
3132
projectDir,
33+
Arrays.asList("Magento_Catalog", "Magento_InventoryApi"),
3234
true
3335
);
3436
final ModuleXmlGenerator moduleXmlGenerator = new ModuleXmlGenerator(
@@ -60,6 +62,7 @@ public void testGenerateFileInRoot() {
6062
"Module",
6163
null,
6264
projectDir,
65+
Arrays.asList("Magento_Catalog", "Magento_InventoryApi"),
6366
false
6467
);
6568
final ModuleXmlGenerator moduleXmlGenerator = new ModuleXmlGenerator(

0 commit comments

Comments
 (0)