]> git.uio.no Git - ifi-stolz-refaktor.git/blame - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/CollectorManager.java
StatisticsAspect: adding results from executions of Extract and Move 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
EK
2
3import java.util.Arrays;
4import java.util.LinkedList;
5
fc35e1b0 6import no.uio.ifi.refaktor.analyze.collectors.PropertyCollector;
ee6a0b5b
EK
7import no.uio.ifi.refaktor.utils.CompilationUnitTextSelection;
8
9import org.eclipse.jdt.core.dom.ASTNode;
10
11public 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}