Skip to content

Commit 7bd1c71

Browse files
author
Vitaliy
authored
Merge branch '2.0.0-develop' into issues-267
2 parents 385bb4d + 09fc19e commit 7bd1c71

File tree

6 files changed

+116
-54
lines changed

6 files changed

+116
-54
lines changed

.github/workflows/gradle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ name: Run automated tests
55

66
on:
77
pull_request:
8-
branches: [ master, 1.0.1-develop, 1.0.2-develop ]
8+
branches: [ master, 1.0.2-develop, 2.0.0-develop ]
99

1010
jobs:
1111
build-linux:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ This is a plugin for Magento 2 development in the PhpStorm IDE. It is available
1515
6. Check `Enable` and `OK` button.
1616

1717
## Works with
18-
* PhpStorm >= 2019.3.3
18+
* PhpStorm >= 2020.1.1
1919
* JRE >= 1.8
2020

2121
## Features

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ repositories {
1414
}
1515

1616
group 'com.magento.idea'
17-
version '1.0.2'
17+
version '2.0.0'
1818

1919
apply plugin: 'org.jetbrains.intellij'
2020
apply plugin: 'java'
2121
apply plugin: 'groovy'
2222

23-
def phpPluginVersion = System.getProperty("phpPluginVersion", "193.6494.35")
24-
def ideaVersion = System.getProperty("ideaVersion", "2019.3.3")
23+
def phpPluginVersion = System.getProperty("phpPluginVersion", "201.7223.91")
24+
def ideaVersion = System.getProperty("ideaVersion", "2020.1.1")
2525
def javaVersion = 1.8
2626

2727
sourceCompatibility = javaVersion

resources/META-INF/plugin.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<idea-plugin>
88
<id>com.magento.idea.magento2plugin</id>
99
<name>Magento PhpStorm</name>
10-
<version>1.0.2</version>
10+
<version>2.0.0</version>
1111
<vendor url="https://github.com/magento/magento2-phpstorm-plugin">Magento Inc.</vendor>
1212

1313
<description><![CDATA[
@@ -24,7 +24,7 @@
2424
</change-notes>
2525

2626
<!-- please see http://confluence.jetbrains.com/display/IDEADEV/Build+Number+Ranges for description -->
27-
<idea-version since-build="193.6494.35"/>
27+
<idea-version since-build="201.7223.91"/>
2828

2929
<!-- please see http://confluence.jetbrains.com/display/IDEADEV/Plugin+Compatibility+with+IntelliJ+Platform+Products
3030
on how to target different products -->
@@ -190,7 +190,7 @@
190190
<internalFileTemplate name="Magento GraphQL Resolver Class"/>
191191
<internalFileTemplate name="Magento Cronjob Class"/>
192192
<internalFileTemplate name="Magento Crontab Xml"/>
193-
<internalFileTemplate name="Magento CLI Command"/>
193+
<internalFileTemplate name="Magento CLI Command Class"/>
194194
<internalFileTemplate name="Magento Module Controller Backend Class"/>
195195
<internalFileTemplate name="Magento Module Controller Frontend Class"/>
196196
<internalFileTemplate name="Magento Module Cron Groups Xml"/>

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

Lines changed: 73 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.actions.generation.generator;
67

78
import com.google.gson.JsonElement;
89
import com.google.gson.JsonParser;
910
import com.intellij.openapi.project.Project;
11+
import com.intellij.openapi.util.Pair;
1012
import com.intellij.openapi.vfs.VirtualFile;
1113
import com.intellij.psi.PsiFile;
1214
import com.magento.idea.magento2plugin.actions.generation.data.ModuleComposerJsonData;
@@ -16,60 +18,94 @@
1618
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
1719
import com.magento.idea.magento2plugin.magento.files.ComposerJson;
1820
import com.magento.idea.magento2plugin.util.CamelCaseToHyphen;
19-
import com.intellij.openapi.util.Pair;
20-
import org.jetbrains.annotations.NotNull;
2121
import java.io.FileNotFoundException;
2222
import java.io.FileReader;
23-
import java.util.Properties;
2423
import java.util.List;
24+
import java.util.Properties;
25+
import org.jetbrains.annotations.NotNull;
2526

2627
public class ModuleComposerJsonGenerator extends FileGenerator {
2728

2829
private final ModuleComposerJsonData moduleComposerJsonData;
2930
private final FileFromTemplateGenerator fileFromTemplateGenerator;
3031
private final DirectoryGenerator directoryGenerator;
3132
private final CamelCaseToHyphen camelCaseToHyphen;
32-
private final Project project;
3333
private final ModuleIndex moduleIndex;
3434

35-
public ModuleComposerJsonGenerator(@NotNull ModuleComposerJsonData moduleComposerJsonData, Project project) {
35+
/**
36+
* Constructor.
37+
*
38+
* @param moduleComposerJsonData ModuleComposerJsonData
39+
* @param project Project
40+
*/
41+
public ModuleComposerJsonGenerator(
42+
final @NotNull ModuleComposerJsonData moduleComposerJsonData,
43+
final Project project
44+
) {
3645
super(project);
3746
this.moduleComposerJsonData = moduleComposerJsonData;
3847
this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project);
3948
this.directoryGenerator = DirectoryGenerator.getInstance();
4049
this.camelCaseToHyphen = CamelCaseToHyphen.getInstance();
41-
this.project = project;
4250
this.moduleIndex = ModuleIndex.getInstance(project);
4351
}
4452

45-
public PsiFile generate(String actionName) {
53+
@Override
54+
public PsiFile generate(final String actionName) {
4655
if (moduleComposerJsonData.getCreateModuleDirs()) {
47-
ModuleDirectoriesData moduleDirectoriesData = directoryGenerator.createOrFindModuleDirectories(moduleComposerJsonData.getPackageName(), moduleComposerJsonData.getModuleName(), moduleComposerJsonData.getBaseDir());
48-
return fileFromTemplateGenerator.generate(ComposerJson.getInstance(), getAttributes(), moduleDirectoriesData.getModuleDirectory(), actionName);
56+
final ModuleDirectoriesData moduleDirectoriesData =
57+
directoryGenerator.createOrFindModuleDirectories(
58+
moduleComposerJsonData.getPackageName(),
59+
moduleComposerJsonData.getModuleName(),
60+
moduleComposerJsonData.getBaseDir()
61+
);
62+
return fileFromTemplateGenerator.generate(
63+
ComposerJson.getInstance(),
64+
getAttributes(),
65+
moduleDirectoriesData.getModuleDirectory(),
66+
actionName
67+
);
4968
}
50-
return fileFromTemplateGenerator.generate(ComposerJson.getInstance(), getAttributes(), moduleComposerJsonData.getBaseDir(), actionName);
69+
return fileFromTemplateGenerator.generate(
70+
ComposerJson.getInstance(),
71+
getAttributes(),
72+
moduleComposerJsonData.getBaseDir(),
73+
actionName
74+
);
5175
}
5276

53-
protected void fillAttributes(Properties attributes) {
77+
@Override
78+
protected void fillAttributes(final Properties attributes) {
5479
attributes.setProperty("PACKAGE", moduleComposerJsonData.getPackageName());
5580
attributes.setProperty("MODULE_NAME", moduleComposerJsonData.getModuleName());
5681
attributes.setProperty("MODULE_DESCRIPTION", moduleComposerJsonData.getModuleDescription());
57-
attributes.setProperty("COMPOSER_PACKAGE_NAME", moduleComposerJsonData.getComposerPackageName());
82+
attributes.setProperty(
83+
"COMPOSER_PACKAGE_NAME",
84+
moduleComposerJsonData.getComposerPackageName()
85+
);
5886
attributes.setProperty("MODULE_VERSION", moduleComposerJsonData.getModuleVersion());
59-
attributes.setProperty("LICENSE", this.getLicensesString(moduleComposerJsonData.getModuleLicense()));
60-
attributes.setProperty("DEPENDENCIES", this.getDependenciesString(moduleComposerJsonData.getModuleDependencies()));
87+
attributes.setProperty(
88+
"LICENSE",
89+
this.getLicensesString(moduleComposerJsonData.getModuleLicense())
90+
);
91+
attributes.setProperty(
92+
"DEPENDENCIES",
93+
this.getDependenciesString(moduleComposerJsonData.getModuleDependencies())
94+
);
6195
}
6296

63-
protected String getLicensesString(List licensesList) {
97+
protected String getLicensesString(final List licensesList) {
6498
String license = "[\n";
65-
Object[] licenses = licensesList.toArray();
99+
final Object[] licenses = licensesList.toArray();
66100

67101
for (int i = 0; i < licenses.length; i++) {
68102
license = license.concat("\"");
69103
license = license.concat(licenses[i].toString());
70104
license = license.concat("\"");
71105

72-
if (licenses.length != (i + 1)) license = license.concat(",");
106+
if (licenses.length != i + 1) {
107+
license = license.concat(",");
108+
}
73109

74110
license = license.concat("\n");
75111
}
@@ -79,11 +115,14 @@ protected String getLicensesString(List licensesList) {
79115
return license;
80116
}
81117

82-
private String getDependenciesString(List dependenciesList) {
118+
private String getDependenciesString(final List dependenciesList) {
83119
String result = "";
84-
Object[] dependencies = dependenciesList.toArray();
120+
final Object[] dependencies = dependenciesList.toArray();
85121
result = result.concat(ComposerJson.DEFAULT_DEPENDENCY);
86-
boolean noDependency = dependencies.length == 1 && dependencies[0].equals(ComposerJson.NO_DEPENDENCY_LABEL);
122+
final boolean noDependency =
123+
dependencies.length == 1 && dependencies[0].equals(
124+
ComposerJson.NO_DEPENDENCY_LABEL
125+
);
87126
if (dependencies.length == 0 || noDependency) {
88127
result = result.concat("\n");
89128
} else {
@@ -95,14 +134,14 @@ private String getDependenciesString(List dependenciesList) {
95134
}
96135

97136
for (int i = 0; i < dependencies.length; i++) {
98-
String dependency = dependencies[i].toString();
99-
Pair<String, String> dependencyData = getDependencyData(dependency);
137+
final String dependency = dependencies[i].toString();
138+
final Pair<String, String> dependencyData = getDependencyData(dependency);
100139
result = result.concat("\"");
101140
result = result.concat(dependencyData.getFirst());
102141
result = result.concat("\"");
103142
result = result.concat(": \"" + dependencyData.getSecond() + "\"");
104143

105-
if (dependencies.length != (i + 1)) {
144+
if (dependencies.length != i + 1) {
106145
result = result.concat(",");
107146
}
108147

@@ -112,20 +151,23 @@ private String getDependenciesString(List dependenciesList) {
112151
return result;
113152
}
114153

115-
private Pair<String, String> getDependencyData(String dependency) {
154+
private Pair<String, String> getDependencyData(
155+
final String dependency
156+
) {
116157
String version = "*";
117158
String moduleName = camelCaseToHyphen.convert(dependency).replace("_-", "/");
118159
try {
119-
VirtualFile virtualFile = moduleIndex.getModuleDirectoryByModuleName(dependency)
160+
final VirtualFile virtualFile = moduleIndex.getModuleDirectoryByModuleName(dependency)
120161
.findFile(ComposerJson.FILE_NAME)
121-
.getVirtualFile();
162+
.getVirtualFile();//NOPMD
122163
if (virtualFile.exists()) {
123-
JsonElement jsonElement = new JsonParser().parse(new FileReader(virtualFile.getPath()));
124-
JsonElement versionJsonElement = jsonElement.getAsJsonObject().get("version");
125-
JsonElement nameJsonElement = jsonElement.getAsJsonObject().get("name");
164+
final JsonElement jsonElement =
165+
new JsonParser().parse(new FileReader(virtualFile.getPath()));//NOPMD
166+
final JsonElement versionJsonElement = jsonElement.getAsJsonObject().get("version");
167+
final JsonElement nameJsonElement = jsonElement.getAsJsonObject().get("name");
126168
if (versionJsonElement != null) {
127169
version = versionJsonElement.getAsString();
128-
int minorVersionSeparator = version.lastIndexOf(".");
170+
final int minorVersionSeparator = version.lastIndexOf('.');
129171
version = new StringBuilder(version)
130172
.replace(minorVersionSeparator + 1, version.length(),"*")
131173
.toString();
@@ -134,7 +176,7 @@ private Pair<String, String> getDependencyData(String dependency) {
134176
moduleName = nameJsonElement.getAsString();
135177
}
136178
}
137-
} catch (FileNotFoundException e) {
179+
} catch (FileNotFoundException e) { //NOPMD
138180
// It's fine
139181
}
140182

src/com/magento/idea/magento2plugin/util/CamelCaseToHyphen.java

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,50 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.util;
67

7-
import java.lang.*;
8+
import java.util.Locale;
89
import java.util.regex.Matcher;
910
import java.util.regex.Pattern;
1011

12+
@SuppressWarnings({
13+
"PMD.ClassNamingConventions",
14+
"PMD.NonThreadSafeSingleton"
15+
})
1116
public class CamelCaseToHyphen {
12-
private static CamelCaseToHyphen INSTANCE = null;
17+
private static CamelCaseToHyphen instance;
18+
19+
/**
20+
* Get Singleton.
21+
*
22+
* @return CamelCaseToHyphen
23+
*/
1324
public static CamelCaseToHyphen getInstance() {
14-
if (null == INSTANCE) {
15-
INSTANCE = new CamelCaseToHyphen();
25+
if (null == instance) {
26+
instance = new CamelCaseToHyphen();
1627
}
17-
return INSTANCE;
28+
return instance;
1829
}
1930

20-
public String convert(String string) {
21-
String regex = "(?=[A-Z][a-z])";
22-
String subst = "-";
23-
24-
Pattern pattern = Pattern.compile(regex);
25-
Matcher matcher = pattern.matcher(string);
26-
27-
String result = matcher.replaceAll(subst);
28-
29-
return result.toLowerCase().substring(1);
31+
/**
32+
* Converts camel case to hyphen.
33+
* e.g. "TestString" -> "test-string"
34+
*
35+
* @param string the origin string.
36+
* @return string
37+
*/
38+
public String convert(final String string) {
39+
final String regex = "(?=[A-Z][a-z])";
40+
final String subst = "-";
41+
final Pattern pattern = Pattern.compile(regex);
42+
final Matcher matcher = pattern.matcher(string);
43+
final String result =
44+
matcher.replaceAll(subst).toLowerCase(new Locale("en","EN"));
45+
final char hyphenSeparator = '-';
46+
if (result.charAt(0) == hyphenSeparator) {
47+
return result.substring(1);
48+
}
49+
return result;
3050
}
3151
}

0 commit comments

Comments
 (0)