From 35330309221b7c39adf71f508190628459ad7138 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 2 Aug 2013 02:48:11 +0200 Subject: wip --- .../trygvis/container/compiler/model/ClassG.java | 56 +++++++++------------- 1 file changed, 22 insertions(+), 34 deletions(-) (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java') diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java index 6c0e246..13e1b03 100644 --- a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java +++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java @@ -1,7 +1,6 @@ package io.trygvis.container.compiler.model; import javax.lang.model.type.TypeMirror; -import java.io.CharArrayWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; @@ -12,11 +11,12 @@ import static org.springframework.util.StringUtils.collectionToDelimitedString; public class ClassG { private final String packageName; - private final String className; + public final String className; private final String extendsClass; private final Set imports = new TreeSet<>(); private final Set fields = new TreeSet<>(); private final List methods = new ArrayList<>(); + private final List constructors = new ArrayList<>(); // public ClassG(String packageName, String className) { // this(packageName, className, null); @@ -79,7 +79,13 @@ public class ClassG { return ref; } - public MethodRef addMethod(String body, TypeRef returnType, String name, ParameterRef... parameters) { + public Constructor addConstructor(Parameters parameters, List body) { + Constructor constructor = new Constructor(this, parameters, body); + constructors.add(constructor); + return constructor; + } + + public MethodRef addMethod(List body, TypeRef returnType, String name, ParameterRef... parameters) { MethodRef ref = new MethodRef(returnType, name, parameters, body); methods.add(ref); return ref; @@ -97,10 +103,19 @@ public class ClassG { writer.println(); writer.println("public class " + className + " extends " + extendsClass + " {"); for (FieldRef field : fields) { + writer.println(); writer.println(" private final " + field.klass.name + " " + field.name + ";"); } + for (Constructor constructor : constructors) { + writer.println(); + for (String s : constructor.write()) { + writer.println(s); + } + } + for (MethodRef method : methods) { + writer.println(); write(writer, method); } @@ -117,40 +132,13 @@ public class ClassG { List parameters = new ArrayList<>(); for (ParameterRef p : method.parameters) { - parameters.add(p.klass.name + " " + p.name); + parameters.add("final " + p.klass.name + " " + p.name); } writer.println(" public " + returnString + " " + method.name + "(" + collectionToDelimitedString(parameters, ", ") + ") {"); - writer.println(method.body); - writer.println(" }"); - } - - public void simpleConstructor(List parameters, List goesToSuper) { - List ps = new ArrayList<>(); - for (ParameterRef p : parameters) { - ps.add(p.klass.name + " " + p.name); - } - List ss = new ArrayList<>(); - List local = new ArrayList<>(); - for (String s : goesToSuper) { - for (ParameterRef parameter : parameters) { - if (parameter.name.equals(s)) { - ss.add(parameter.name); - continue; - } - } - local.add(s); - } - String params = ps.size() == 0 ? "" : ", " + collectionToDelimitedString(ps, ", "); - - CharArrayWriter buffer = new CharArrayWriter(); - PrintWriter writer = new PrintWriter(buffer); - - writer.println(" public " + className + "(" + params + ") {"); - writer.println(" super(" + collectionToDelimitedString(ss, ", ") + ");"); -// writer.println(" this.transactionManager = _transactionManager_;"); - for (String s : local) { - writer.println(" this." + s + " = " + s); + for (String s : method.body) { + writer.print(" "); + writer.println(s); } writer.println(" }"); } -- cgit v1.2.3