77import com .intellij .openapi .util .io .FileUtil ;
88import com .intellij .util .xmlb .XmlSerializerUtil ;
99import me .lotabout .codegenerator .config .CodeTemplate ;
10+ import me .lotabout .codegenerator .config .MemberSelectionConfig ;
11+ import me .lotabout .codegenerator .config .PipelineStep ;
1012import org .jetbrains .annotations .NotNull ;
1113import org .jetbrains .annotations .Nullable ;
1214
1921public 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