summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java56
1 files changed, 22 insertions, 34 deletions
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<TypeRef> imports = new TreeSet<>();
private final Set<FieldRef> fields = new TreeSet<>();
private final List<MethodRef> methods = new ArrayList<>();
+ private final List<Constructor> 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<String> body) {
+ Constructor constructor = new Constructor(this, parameters, body);
+ constructors.add(constructor);
+ return constructor;
+ }
+
+ public MethodRef addMethod(List<String> 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<String> 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<ParameterRef> parameters, List<String> goesToSuper) {
- List<String> ps = new ArrayList<>();
- for (ParameterRef p : parameters) {
- ps.add(p.klass.name + " " + p.name);
- }
- List<String> ss = new ArrayList<>();
- List<String> 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(" }");
}