1 package no.uio.ifi.refaktor.analyze;
3 import no.uio.ifi.refaktor.analyze.collectors.PropertyCollector;
4 import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
6 import org.eclipse.jdt.core.dom.ASTNode;
7 import org.eclipse.jdt.core.dom.MethodDeclaration;
8 import org.eclipse.jdt.internal.corext.dom.ASTNodes;
10 @SuppressWarnings("restriction")
11 public class CollectorManager {
13 private final PropertyCollector[] collectors;
14 private final ASTNode startNode;
16 private CollectorManager(ASTNode startNode, PropertyCollector ... collectors) {
17 this.startNode = startNode;
18 this.collectors = collectors;
21 public static void collectProperties(CompilationUnitTextSelection selection, PropertyCollector ... collectors) {
22 new CollectorManager(selection.getCoveringNode(), collectors).collectProperties();
25 public static void collectPropertiesFromEnclosingMethod(CompilationUnitTextSelection selection, PropertyCollector ... collectors) {
26 ASTNode startNode = ASTNodes.getParent(selection.getCoveredNode(), MethodDeclaration.class);
27 assert startNode instanceof MethodDeclaration;
28 new CollectorManager(startNode, collectors).collectProperties();
31 private void collectProperties() {
32 clearCollectorsData();
36 private void clearCollectorsData() {
37 for (PropertyCollector collector: collectors)
38 collector.clearData();
41 private void runCollectors() {
42 for (PropertyCollector collector: collectors)
43 startNode.accept(collector);