Skip to content

Commit 2f53dd2

Browse files
authored
Merge pull request #1 from lotabout/topic-workflow
Topic workflow
2 parents b531926 + ceea369 commit 2f53dd2

31 files changed

+1435
-936
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
.idea
22
out
3+
target

CodeGenerator.iml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,5 @@
99
</content>
1010
<orderEntry type="inheritedJdk" />
1111
<orderEntry type="sourceFolder" forTests="false" />
12-
<orderEntry type="library" name="innerbuilder" level="project" />
1312
</component>
14-
</module>
13+
</module>

resources/META-INF/plugin.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<idea-plugin>
22
<id>me.lotabout.codegenerator</id>
33
<name>CodeGenerator</name>
4-
<version>1.0</version>
4+
<version>1.1</version>
55
<vendor email="lotabout@gmail.com" url="https://lotabout.me">Personal</vendor>
66

77
<description><![CDATA[
@@ -20,6 +20,7 @@
2020

2121
<change-notes><![CDATA[
2222
<ul>
23+
<li>version 1.1 <p>Able to define workflows for selecting members/classes</p></li>
2324
<li>version 1.0 <p>First release</p></li>
2425
</ul>
2526
]]>

resources/template/default.vm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@
118118
## - PsiShortNamesCache: Class utility to search classes
119119
## - PsiJavaPsiFacade: Class Java specific utility to search classes
120120
## - GlobalSearchScope: Class class to create search scopes, used by above utilities
121+
## - EntryFactory: Class EntryFactory.of(...) to turn PsiXXX to XXXEntry.
121122
##
122123
## References
123124
## ----------

src/me/lotabout/codegenerator/CodeGeneratorSettings.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import com.intellij.openapi.util.io.FileUtil;
88
import com.intellij.util.xmlb.XmlSerializerUtil;
99
import me.lotabout.codegenerator.config.CodeTemplate;
10+
import me.lotabout.codegenerator.config.MemberSelectionConfig;
11+
import me.lotabout.codegenerator.config.PipelineStep;
1012
import org.jetbrains.annotations.NotNull;
1113
import org.jetbrains.annotations.Nullable;
1214

@@ -19,13 +21,13 @@
1921
public class CodeGeneratorSettings implements PersistentStateComponent<CodeGeneratorSettings> {
2022

2123
private static final Logger LOGGER = Logger.getInstance(CodeGeneratorSettings.class);
22-
private Map<String, CodeTemplate> codeTemplates;
24+
private List<CodeTemplate> codeTemplates;
2325

2426
public CodeGeneratorSettings() {
2527

2628
}
2729

28-
public CodeGeneratorSettings setCodeTemplates(Map<String, CodeTemplate> codeTemplates) {
30+
public CodeGeneratorSettings setCodeTemplates(List<CodeTemplate> codeTemplates) {
2931
this.codeTemplates = codeTemplates;
3032
return this;
3133
}
@@ -42,39 +44,42 @@ public CodeGeneratorSettings setCodeTemplates(Map<String, CodeTemplate> codeTemp
4244
XmlSerializerUtil.copyBean(codeGeneratorSettings, this);
4345
}
4446

45-
public Map<String, CodeTemplate> getCodeTemplates() {
47+
public List<CodeTemplate> getCodeTemplates() {
4648
if (codeTemplates == null) {
4749
codeTemplates = loadDefaultTemplates();
4850
}
4951
return codeTemplates;
5052
}
5153

5254
public Optional<CodeTemplate> getCodeTemplate(String templateId) {
53-
return Optional.ofNullable(codeTemplates.get(templateId));
55+
return codeTemplates.stream()
56+
.filter(t -> t!= null && t.getId().equals(templateId))
57+
.findFirst();
5458
}
5559

5660
public void removeCodeTemplate(String templateId) {
57-
codeTemplates.remove(templateId);
61+
codeTemplates.removeIf(template -> template.name.equals(templateId));
5862
}
5963

60-
private Map<String, CodeTemplate> loadDefaultTemplates() {
64+
private List<CodeTemplate> loadDefaultTemplates() {
6165
List<CodeTemplate> templates = new ArrayList<>();
6266
try {
63-
templates.add(createTemplate("HUESerialization", "body"));
67+
templates.add(createTemplate("HUESerialization", "body", Collections.singletonList(new MemberSelectionConfig())));
6468
} catch (Exception e) {
6569
LOGGER.error("loadDefaultTemplates failed", e);
6670
}
6771

68-
return templates.stream().collect(Collectors.toMap(CodeTemplate::getId, Function.identity()));
72+
return templates;
6973
}
7074

7175
@NotNull
72-
private CodeTemplate createTemplate(String name, String type) throws IOException {
76+
private CodeTemplate createTemplate(String name, String type, List<PipelineStep> pipeline) throws IOException {
7377
String velocityTemplate = FileUtil.loadTextAndClose(CodeGeneratorSettings.class.getResourceAsStream("/template/" + name + ".vm"));
7478
CodeTemplate codeTemplate = new CodeTemplate();
7579
codeTemplate.type = type;
7680
codeTemplate.name = name;
7781
codeTemplate.template = velocityTemplate;
82+
codeTemplate.pipeline.addAll(pipeline);
7883
return codeTemplate;
7984
}
8085

0 commit comments

Comments
 (0)