From c0c9c358e8703c1af917d7270adbb04160ad34b3 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 4 Aug 2013 10:24:43 +0200 Subject: wip --- .../trygvis/container/compiler/model/Imports.java | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java') diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java new file mode 100644 index 0000000..9ed6097 --- /dev/null +++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java @@ -0,0 +1,54 @@ +package io.trygvis.container.compiler.model; + +import javax.lang.model.type.TypeMirror; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; + +public class Imports { + private final Set imports = new TreeSet<>(); + + public TypeRef add(final TypeMirror type) { + return add(new TypeRef(type)); + } + + public TypeRef add(Class c) { + return add(new TypeRef(c)); + } + + public TypeRef add(TypeRef klass) { + String fqName = klass.fqName; + String name = klass.toString(); + for (TypeRef i : imports) { + if (i.fqName.equals(fqName)) { + return i; + } + + // If we've already found an import with the same name, use the fq version + if (i.plainName.equals(name)) { + name = fqName; + break; + } + } + + TypeRef ref = new TypeRef(fqName, name); + imports.add(ref); + + return ref; + } + + public List generate() { + List body = new ArrayList<>(); + for (TypeRef i : imports) { + if (i.isPrimitive() || i.inUnnamedPackage()) { + continue; + } + body.add("import " + i.fqName + ";"); + } + if (!imports.isEmpty()) { + body.add(""); + } + return body; + } +} -- cgit v1.2.3