]>
Commit | Line | Data |
---|---|---|
fc35e1b0 | 1 | package no.uio.ifi.refaktor.analyze; |
ee6a0b5b | 2 | |
fc35e1b0 | 3 | import no.uio.ifi.refaktor.analyze.collectors.PropertyCollector; |
ee6a0b5b EK |
4 | import no.uio.ifi.refaktor.utils.CompilationUnitTextSelection; |
5 | ||
6 | import org.eclipse.jdt.core.dom.ASTNode; | |
d580b080 EK |
7 | import org.eclipse.jdt.core.dom.MethodDeclaration; |
8 | import org.eclipse.jdt.internal.corext.dom.ASTNodes; | |
ee6a0b5b | 9 | |
d580b080 | 10 | @SuppressWarnings("restriction") |
ee6a0b5b EK |
11 | public class CollectorManager { |
12 | ||
d580b080 EK |
13 | private final PropertyCollector[] collectors; |
14 | private final ASTNode startNode; | |
ee6a0b5b | 15 | |
d580b080 EK |
16 | private CollectorManager(ASTNode startNode, PropertyCollector ... collectors) { |
17 | this.startNode = startNode; | |
18 | this.collectors = collectors; | |
ee6a0b5b EK |
19 | } |
20 | ||
21 | public static void collectProperties(CompilationUnitTextSelection selection, PropertyCollector ... collectors) { | |
d580b080 EK |
22 | new CollectorManager(selection.getCoveringNode(), collectors).collectProperties(); |
23 | } | |
24 | ||
25 | public static void collectPropertiesFromEnclosingMethod(CompilationUnitTextSelection selection, PropertyCollector ... collectors) { | |
412eaff6 | 26 | ASTNode startNode = ASTNodes.getParent(selection.getCoveredNode(), MethodDeclaration.class); |
d580b080 EK |
27 | assert startNode instanceof MethodDeclaration; |
28 | new CollectorManager(startNode, collectors).collectProperties(); | |
ee6a0b5b EK |
29 | } |
30 | ||
31 | private void collectProperties() { | |
32 | clearCollectorsData(); | |
33 | runCollectors(); | |
34 | } | |
35 | ||
36 | private void clearCollectorsData() { | |
37 | for (PropertyCollector collector: collectors) | |
38 | collector.clearData(); | |
39 | } | |
40 | ||
41 | private void runCollectors() { | |
42 | for (PropertyCollector collector: collectors) | |
d580b080 | 43 | startNode.accept(collector); |
ee6a0b5b EK |
44 | } |
45 | } |