package sk.stuba.fiit.perconik.core.java.dom.compatibility; import java.util.Map; import org.eclipse.jdt.core.dom.AST; import sk.stuba.fiit.perconik.eclipse.jdt.core.dom.TreeApiLevel; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.collect.Maps.immutableEnumMap; import static com.google.common.collect.Maps.newHashMap; final class StandardTreeFactory implements TreeFactory { static final Map<TreeApiLevel, TreeFactory> INSTANCES; private final TreeApiLevel level; static { Map<TreeApiLevel, TreeFactory> map = newHashMap(); for (TreeApiLevel level: TreeApiLevel.values()) { map.put(level, new StandardTreeFactory(level)); } INSTANCES = immutableEnumMap(map); } private StandardTreeFactory(final TreeApiLevel level) { this.level = checkNotNull(level); } public AST newTree() { return AST.newAST(this.level.getValue()); } }