]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/refaktor-after/src/no/uio/ifi/refaktor/analyze/analyzers/PackageWideExtractAndMoveMethodAnalyzer.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / refaktor-after / src / no / uio / ifi / refaktor / analyze / analyzers / PackageWideExtractAndMoveMethodAnalyzer.java
1 package no.uio.ifi.refaktor.analyze.analyzers;
2
3 import java.util.LinkedList;
4 import java.util.List;
5
6 import no.uio.ifi.refaktor.analyze.ExtractAndMoveMethodCandidate;
7 import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
8 import no.uio.ifi.refaktor.debugging.RefaktorDebug;
9
10 import org.eclipse.jdt.core.ICompilationUnit;
11 import org.eclipse.jdt.core.IPackageFragment;
12 import org.eclipse.jdt.core.JavaModelException;
13
14 /**
15  * Responsible for analyzing all methods in a package for
16  * candidates to the Extract and Move Method refactoring.
17  */
18 public class PackageWideExtractAndMoveMethodAnalyzer implements AggregationAnalyzer<ExtractAndMoveMethodCandidate> {
19
20         private final IPackageFragment packageFragment;
21         final List<ExtractAndMoveMethodCandidate> results;
22
23         public PackageWideExtractAndMoveMethodAnalyzer(IPackageFragment packageFragment) {
24                 this.packageFragment = packageFragment;
25                 results = new LinkedList<ExtractAndMoveMethodCandidate>();
26         }
27
28         @Override
29         public List<ExtractAndMoveMethodCandidate> getResults() {
30                 return results;
31         }
32
33         @Override
34         public void analyze() throws RefaktorAnalyzerException {
35                 try {
36                         analyzeMethodsInPackage();
37                 } catch (JavaModelException e) {
38                         RefaktorDebug.log(e);
39                 }
40         }
41
42         private void analyzeMethodsInPackage() throws JavaModelException {
43                 for (ICompilationUnit compilationUnit: packageFragment.getCompilationUnits())
44                         analyzeMethodsInCompilationUnit(compilationUnit);
45         }
46
47         private void analyzeMethodsInCompilationUnit(ICompilationUnit compilationUnit) {
48                 CompilationUnitWideExtractAndMoveMethodAnalyzer analyzer = 
49                                 new CompilationUnitWideExtractAndMoveMethodAnalyzer(compilationUnit);
50                 analyzer.generated_5119073150015261594(this);
51         }
52
53         public void generated_9055933483097433140(
54                         PackageFragmentParentExtractAndMoveMethodAnalyzer packagefragmentparentextractandmovemethodanalyzer) {
55                 analyze();
56                 packagefragmentparentextractandmovemethodanalyzer.results.addAll(getResults());
57         }
58 }