summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java
new file mode 100644
index 0000000..43800ce
--- /dev/null
+++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java
@@ -0,0 +1,38 @@
+package io.trygvis.container.compiler.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.springframework.util.StringUtils.collectionToDelimitedString;
+
+public class Constructor {
+
+ private final ClassG g;
+ private final Parameters parameters;
+ private final List<String> body;
+
+ public Constructor(ClassG g, Parameters parameters, List<String> body) {
+ this.g = g;
+ this.parameters = parameters;
+ this.body = body;
+ }
+
+ public List<String> write() {
+ List<String> body = new ArrayList<>();
+
+ List<String> ps = new ArrayList<>();
+ for (ParameterRef p : parameters) {
+ ps.add(p.klass.name + " " + p.name);
+ }
+
+ String params = collectionToDelimitedString(ps, ", ");
+
+ body.add(" public " + g.className + "(" + params + ") {");
+ for (String s : this.body) {
+ body.add(" " + s);
+ }
+ body.add(" }");
+
+ return body;
+ }
+}