]> git.uio.no Git - ifi-stolz-refaktor.git/blob - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/CollectorManager.java
IllegalStatementsChecker: now handling break inside while
[ifi-stolz-refaktor.git] / software / no.uio.ifi.refaktor / src / no / uio / ifi / refaktor / analyze / CollectorManager.java
1 package no.uio.ifi.refaktor.analyze;
2
3 import java.util.Arrays;
4 import java.util.LinkedList;
5
6 import no.uio.ifi.refaktor.analyze.collectors.PropertyCollector;
7 import no.uio.ifi.refaktor.utils.CompilationUnitTextSelection;
8
9 import org.eclipse.jdt.core.dom.ASTNode;
10
11 public class CollectorManager {
12         
13         private final CompilationUnitTextSelection selection;
14         private final LinkedList<PropertyCollector> collectors;
15         
16         public CollectorManager(CompilationUnitTextSelection selection, PropertyCollector ... collectors) {
17                 this.selection = selection;
18                 this.collectors = new LinkedList<PropertyCollector>(Arrays.asList(collectors));
19         }
20
21         public static void collectProperties(CompilationUnitTextSelection selection, PropertyCollector ... collectors) {
22                 new CollectorManager(selection, collectors).collectProperties();
23         }
24
25         private void collectProperties() {
26                 clearCollectorsData();
27                 runCollectors();
28         }
29
30         private void clearCollectorsData() {
31                 for (PropertyCollector collector: collectors)
32                         collector.clearData();
33         }
34
35         private void runCollectors() {
36                 for (PropertyCollector collector: collectors)
37                         getStartNode().accept(collector);
38         }
39
40         private ASTNode getStartNode() {
41                 return selection.getCoveringNode();
42         }
43 }