package io.trygvis.container.compiler.model; import java.util.ArrayList; import java.util.List; import static io.trygvis.container.compiler.model.ClassG.addAll; import static org.apache.commons.lang.StringUtils.join; public class Constructor { private final ClassG g; private final Parameters parameters; private final List body; public Constructor(ClassG g, Parameters parameters, List body) { this.g = g; this.parameters = parameters; this.body = body; } public List write() { List ps = new ArrayList<>(); for (Parameters.ParameterRef p : parameters) { ps.add(p.klass + " " + p.name); } List body = new ArrayList<>(); body.add("public " + g.type.className + "(" + join(ps, ", ") + ") {"); addAll(1, body, this.body); body.add("}"); return body; } }