]> git.uio.no Git - ifi-stolz-refaktor.git/blame - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/CollectorManager.java
LegalStatementsChecker: adding check for call to protected/default method
[ifi-stolz-refaktor.git] / software / no.uio.ifi.refaktor / src / no / uio / ifi / refaktor / analyze / CollectorManager.java
CommitLineData
fc35e1b0 1package no.uio.ifi.refaktor.analyze;
ee6a0b5b 2
fc35e1b0 3import no.uio.ifi.refaktor.analyze.collectors.PropertyCollector;
ee6a0b5b
EK
4import no.uio.ifi.refaktor.utils.CompilationUnitTextSelection;
5
6import org.eclipse.jdt.core.dom.ASTNode;
d580b080
EK
7import org.eclipse.jdt.core.dom.MethodDeclaration;
8import org.eclipse.jdt.internal.corext.dom.ASTNodes;
ee6a0b5b 9
d580b080 10@SuppressWarnings("restriction")
ee6a0b5b
EK
11public 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}