package no.uio.ifi.refaktor.analyze; import no.uio.ifi.refaktor.analyze.collectors.PropertyCollector; import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.internal.corext.dom.ASTNodes; @SuppressWarnings("restriction") public class CollectorManager { private final PropertyCollector[] collectors; private final ASTNode startNode; private CollectorManager(ASTNode startNode, PropertyCollector ... collectors) { this.startNode = startNode; this.collectors = collectors; } public static void collectProperties(CompilationUnitTextSelection selection, PropertyCollector ... collectors) { new CollectorManager(selection.getCoveringNode(), collectors).collectProperties(); } public static void collectPropertiesFromEnclosingMethod(CompilationUnitTextSelection selection, PropertyCollector ... collectors) { ASTNode startNode = ASTNodes.getParent(selection.getCoveredNode(), MethodDeclaration.class); assert startNode instanceof MethodDeclaration; new CollectorManager(startNode, collectors).collectProperties(); } private void collectProperties() { clearCollectorsData(); runCollectors(); } private void clearCollectorsData() { for (PropertyCollector collector: collectors) collector.clearData(); } private void runCollectors() { for (PropertyCollector collector: collectors) startNode.accept(collector); } }