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 java.util.Arrays.asList; import static org.apache.commons.lang.StringUtils.join; public class Constructor { private final Parameters parameters; private final List body; public Constructor(Parameters parameters, String... body) { this(parameters, asList(body)); } public Constructor(Parameters parameters, List body) { this.parameters = parameters; this.body = body; } public List write(ClassG g) { 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; } }