Skip to content

Commit 5fb1658

Browse files
authored
Merge pull request #62 from NetoDevel/feature/new-model-generator
Feature/new model generator
2 parents 00b01d7 + ae9fb56 commit 5fb1658

File tree

48 files changed

+762
-92
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+762
-92
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ spring-scaffold-cli/target/
44
spring-scaffold-cli/*.iml
55
generator-core/target/
66
generator-core/*.iml
7-
templates-java/target/
8-
templates-java/*.iml
7+
templates/target/
8+
templates/*.iml
99

1010
*.iml
1111
.idea/

generator-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>spring-boot-cli</artifactId>
77
<groupId>br.com.netodevel</groupId>
8-
<version>0.0.2.BUILD-SNAPSHOT</version>
8+
<version>1.1.0.BUILD-SNAPSHOT</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111
<artifactId>generator-core</artifactId>

generator-core/src/main/java/br/com/generator/core/GeneratorExecutor.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@ public File generate(GeneratorOptions options) throws IOException {
3030

3131
public File addDependecies(GeneratorOptions options) throws IOException {
3232
String contentTemplate = loadPom(options.getTemplatePath());
33+
34+
Boolean alreadyDeps = false;
35+
if (options.getDependencies() != null) {
36+
for (int i = 0; i < options.getDependencies().size(); i++) {
37+
if (contentTemplate.contains(options.getDependencies().get(i))) {
38+
System.out.println("[INFO] ".concat(options.getDependencies().get(i)).concat(" already added."));
39+
alreadyDeps = true;
40+
}
41+
}
42+
}
43+
if (alreadyDeps) return null;
44+
3345
String contentReplaced = templateEngine.replaceValues(contentTemplate, options.getKeyValue());
3446

3547
File fileGenerated = new File(options.getDestination());

generator-core/src/main/java/br/com/generator/core/GeneratorOptions.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package br.com.generator.core;
22

3+
import java.util.List;
34
import java.util.Map;
45

56
public class GeneratorOptions {
@@ -10,6 +11,7 @@ public class GeneratorOptions {
1011
private String properties;
1112
private Map<String, String> pluginValues;
1213
private Map<String, String> keyValue;
14+
private List<String> dependencies;
1315

1416
public String getDestination() {
1517
return destination;
@@ -58,4 +60,12 @@ public Map<String, String> getPluginValues() {
5860
public void setPluginValues(Map<String, String> pluginValues) {
5961
this.pluginValues = pluginValues;
6062
}
63+
64+
public List<String> getDependencies() {
65+
return dependencies;
66+
}
67+
68+
public void setDependencies(List<String> dependencies) {
69+
this.dependencies = dependencies;
70+
}
6171
}

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>br.com.netodevel</groupId>
55
<artifactId>spring-boot-cli</artifactId>
6-
<version>0.0.2.BUILD-SNAPSHOT</version>
6+
<version>1.1.0.BUILD-SNAPSHOT</version>
77

88
<packaging>pom</packaging>
99
<name>cli-spring-boot-scaffold</name>
@@ -14,7 +14,7 @@
1414
<module>spring-scaffold-cli</module>
1515
<module>spring-boot-generate</module>
1616
<module>generator-core</module>
17-
<module>templates-java</module>
17+
<module>templates</module>
1818
</modules>
1919

2020
<profiles>

spring-boot-generate/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>br.com</groupId>
55
<artifactId>spring-boot-generate</artifactId>
6-
<version>0.0.2-SNAPSHOT</version>
6+
<version>1.1.0.BUILD-SNAPSHOT</version>
77

88
<properties>
99
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

spring-scaffold-cli/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>br.com.netodevel</groupId>
55
<artifactId>spring-scaffold-cli</artifactId>
6-
<version>0.0.2-SNAPSHOT</version>
6+
<version>1.1.0.BUILD-SNAPSHOT</version>
77

88
<parent>
99
<groupId>org.springframework.boot</groupId>
@@ -26,13 +26,13 @@
2626
<dependency>
2727
<groupId>br.com</groupId>
2828
<artifactId>spring-boot-generate</artifactId>
29-
<version>0.0.2-SNAPSHOT</version>
29+
<version>1.1.0.BUILD-SNAPSHOT</version>
3030
</dependency>
3131

3232
<dependency>
3333
<groupId>br.com.netodevel</groupId>
34-
<artifactId>templates-java</artifactId>
35-
<version>0.0.2.BUILD-SNAPSHOT</version>
34+
<artifactId>templates</artifactId>
35+
<version>1.1.0.BUILD-SNAPSHOT</version>
3636
</dependency>
3737

3838
<dependency>

spring-scaffold-cli/src/main/java/br/com/command/ScaffoldFactoryCommands.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package br.com.command;
22

3-
import br.com.command.model.ModelHandler;
4-
import br.com.generate.helpers.ScaffoldInfoHelper;
53
import br.com.command.controller.ControllerCommand;
64
import br.com.command.controller.ControllerHandler;
75
import br.com.command.model.ModelCommand;
6+
import br.com.command.model.ModelHandler;
87
import br.com.command.repository.RepositoryCommand;
98
import br.com.command.repository.RepositoryHandler;
109
import br.com.command.scaffold.ScaffoldCommand;
@@ -15,6 +14,7 @@
1514
import br.com.command.setup.SetupScaffoldHandler;
1615
import br.com.command.template.TemplateCommand;
1716
import br.com.command.template.TemplateHandler;
17+
import br.com.generate.helpers.ScaffoldInfoHelper;
1818
import org.springframework.boot.cli.command.Command;
1919
import org.springframework.boot.cli.command.CommandFactory;
2020

@@ -30,14 +30,15 @@
3030
public class ScaffoldFactoryCommands implements CommandFactory {
3131

3232
public Collection<Command> getCommands() {
33+
ScaffoldInfoHelper scaffoldInfoHelper = new ScaffoldInfoHelper();
3334
return Arrays.<Command>asList(
34-
new ModelCommand("model", "generate entities", new ModelHandler()),
35+
new ModelCommand("model", "generate entities", new ModelHandler(scaffoldInfoHelper)),
3536
new RepositoryCommand("repository", "generate repositories", new RepositoryHandler()),
3637
new ServiceCommand("service", "generate services", new ServiceHandler()),
3738
new ControllerCommand("controller", "generate controllers", new ControllerHandler()),
3839
new ScaffoldCommand("scaffold", "generate api scaffold", new ScaffoldHandler()),
3940
new SetupScaffoldCommand("setup:scaffold", "setup scaffold", new SetupScaffoldHandler()),
40-
new TemplateCommand("template", "generate setup project", new TemplateHandler(new ScaffoldInfoHelper())));
41+
new TemplateCommand("template", "generate setup project", new TemplateHandler(scaffoldInfoHelper)));
4142
}
4243

4344
}
Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package br.com.command.model;
22

3-
import java.util.ArrayList;
4-
import java.util.Collection;
5-
import java.util.List;
6-
7-
import org.springframework.boot.cli.command.HelpExample;
83
import org.springframework.boot.cli.command.OptionParsingCommand;
94
import org.springframework.boot.cli.command.options.OptionHandler;
105

@@ -16,20 +11,11 @@
1611
public class ModelCommand extends OptionParsingCommand {
1712

1813
public ModelCommand(String name, String description, OptionHandler handler) {
19-
super("model", "generate entities", new ModelHandler());
20-
}
21-
22-
public String getUsageHelp() {
23-
// TODO Auto-generated method stub
24-
return "[name-entity] [attributes] [language]";
14+
super(name, description, handler);
2515
}
2616

2717
@Override
28-
public Collection<HelpExample> getExamples() {
29-
List<HelpExample> list = new ArrayList<HelpExample>();
30-
list.add(new HelpExample("create entities java", "model -n User -p name:String"));
31-
list.add(new HelpExample("create entities kotlin", "model -n User -p name:String -l kotlin"));
32-
return list;
18+
public String getUsageHelp() {
19+
return "<entity> <attributes>";
3320
}
34-
3521
}
Lines changed: 81 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,96 @@
11
package br.com.command.model;
22

3-
import java.io.IOException;
4-
import java.util.Arrays;
5-
3+
import br.com.generate.helpers.ScaffoldInfoHelper;
4+
import br.com.generator.core.GeneratorOptions;
5+
import br.com.templates.entity.EntityCache;
6+
import br.com.templates.entity.EntityExecutor;
7+
import br.com.templates.entity.EntityGenerator;
8+
import br.com.templates.entity.LombokDependencyGenerator;
69
import joptsimple.OptionSet;
710
import joptsimple.OptionSpec;
8-
911
import org.springframework.boot.cli.command.options.OptionHandler;
1012
import org.springframework.boot.cli.command.status.ExitStatus;
1113

12-
import br.com.generate.source.model.ModelGenerator;
14+
import java.io.IOException;
15+
import java.util.Arrays;
16+
import java.util.HashMap;
17+
import java.util.Map;
1318

1419
/**
15-
*
1620
* @author NetoDevel
1721
* @since 0.0.1
1822
*/
1923
public class ModelHandler extends OptionHandler {
2024

21-
@SuppressWarnings("unused")
22-
private OptionSpec<String> nameEntity;
23-
24-
@SuppressWarnings("unused")
25-
private OptionSpec<String> parametersEntity;
26-
27-
@Override
28-
protected void options() {
29-
this.nameEntity = option(Arrays.asList("nameEntity", "n"), "Name of entity to generate").withRequiredArg();
30-
this.parametersEntity = option(Arrays.asList("parameterEntity", "p"), "Parameter of entity to generate").withRequiredArg();
31-
}
32-
33-
@Override
34-
protected ExitStatus run(OptionSet options) throws Exception {
35-
String nameClass = (String) options.valueOf("n");
36-
String parametersClass = (String) options.valueOf("p");
37-
generateModelJava(nameClass, parametersClass);
38-
return ExitStatus.OK;
39-
}
40-
41-
private void generateModelJava(String nameClass, String parameters) throws IOException {
42-
new ModelGenerator().generate(nameClass, parameters, "template-model.txt");
43-
}
44-
25+
@SuppressWarnings("unused")
26+
private OptionSpec<String> nameEntity;
27+
28+
@SuppressWarnings("unused")
29+
private OptionSpec<String> parametersEntity;
30+
31+
private ScaffoldInfoHelper scaffoldInfoHelper;
32+
33+
public ModelHandler() {
34+
}
35+
36+
public ModelHandler(ScaffoldInfoHelper scaffoldInfoHelper) {
37+
this.scaffoldInfoHelper = scaffoldInfoHelper;
38+
}
39+
40+
@Override
41+
protected void options() {
42+
this.nameEntity = option(Arrays.asList("nameEntity", "n"), "Name of entity").withRequiredArg();
43+
this.parametersEntity = option(Arrays.asList("parameterEntity", "p"), "Parameters of entity").withRequiredArg();
44+
}
45+
46+
@Override
47+
protected ExitStatus run(OptionSet options) throws Exception {
48+
String nameClass = (String) options.valueOf("n");
49+
String parametersClass = (String) options.valueOf("p");
50+
51+
if (nameClass == null || nameClass.replace(" ", "").isEmpty()) {
52+
System.out.println("[INFO] - name of entity is required. use: -n ${entity_name}");
53+
return ExitStatus.ERROR;
54+
}
55+
if (parametersClass == null || parametersClass.replace(" ", "").isEmpty()){
56+
System.out.println("[INFO] - parameters of entity is required. use: -p ${parameters}");
57+
return ExitStatus.ERROR;
58+
}
59+
60+
generateModelJava(nameClass, parametersClass);
61+
return ExitStatus.OK;
62+
}
63+
64+
private void generateModelJava(String nameClass, String parameters) throws IOException {
65+
EntityExecutor entityExecutor = new EntityExecutor();
66+
entityExecutor.run(nameClass, parameters);
67+
68+
lombokGenerate();
69+
70+
for (EntityCache entity : entityExecutor.getEntities()) {
71+
GeneratorOptions generatorOptions = new GeneratorOptions();
72+
generatorOptions.setName(entity.getName().concat(".java"));
73+
generatorOptions.setDestination(scaffoldInfoHelper.getPathPackage().concat("models"));
74+
75+
Map<String, String> keyValue = new HashMap<>();
76+
keyValue.put("${content}", entity.getContent());
77+
keyValue.put("${package}", scaffoldInfoHelper.getPackage().concat(".models"));
78+
79+
generatorOptions.setKeyValue(keyValue);
80+
81+
EntityGenerator entityGenerator = new EntityGenerator(generatorOptions);
82+
entityGenerator.runGenerate();
83+
}
84+
85+
}
86+
87+
private void lombokGenerate() throws IOException {
88+
GeneratorOptions lombokDepsOptions = new GeneratorOptions();
89+
lombokDepsOptions.setTemplatePath(scaffoldInfoHelper.getPomPath());
90+
lombokDepsOptions.setDestination(scaffoldInfoHelper.getPomDest());
91+
92+
LombokDependencyGenerator lombokDependencyGenerator = new LombokDependencyGenerator(lombokDepsOptions);
93+
lombokDependencyGenerator.runGenerate();
94+
}
95+
4596
}

0 commit comments

Comments
 (0)