]>
Commit | Line | Data |
---|---|---|
33b364ef | 1 | package no.uio.ifi.refaktor.analyze.analyzers; |
8a96c34b EK |
2 | |
3 | import java.util.LinkedList; | |
4 | import java.util.List; | |
5 | ||
33b364ef EK |
6 | import no.uio.ifi.refaktor.analyze.AnalysisStatistics; |
7 | import no.uio.ifi.refaktor.analyze.ExtractAndMoveMethodAnalysisResult; | |
a554b0ce | 8 | import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException; |
8a96c34b EK |
9 | import no.uio.ifi.refaktor.utils.RefaktorDebug; |
10 | ||
11 | import org.eclipse.jdt.core.IPackageFragment; | |
12 | import org.eclipse.jdt.core.IPackageFragmentRoot; | |
13 | import org.eclipse.jdt.core.JavaModelException; | |
14 | ||
856d61fb | 15 | abstract public class PackageFragmentParentExtractAndMoveMethodAnalyzer implements AggregationAnalyzer<ExtractAndMoveMethodAnalysisResult> { |
8a96c34b EK |
16 | |
17 | private final List<ExtractAndMoveMethodAnalysisResult> results; | |
18 | private final AnalysisStatistics statistics; | |
19 | ||
856d61fb | 20 | public PackageFragmentParentExtractAndMoveMethodAnalyzer(AnalysisStatistics statistics) { |
8a96c34b EK |
21 | this.statistics = statistics; |
22 | results = new LinkedList<ExtractAndMoveMethodAnalysisResult>(); | |
23 | } | |
85bef15c EK |
24 | |
25 | @Override | |
8a96c34b EK |
26 | public List<ExtractAndMoveMethodAnalysisResult> getResults() { |
27 | return results; | |
28 | } | |
29 | ||
85bef15c | 30 | @Override |
a554b0ce | 31 | public void analyze() throws RefaktorAnalyzerException { |
8a96c34b EK |
32 | try { |
33 | analyzeMethodsInPackageFragments(getPackageFragments()); | |
34 | } catch (JavaModelException e) { | |
35 | RefaktorDebug.log(e); | |
36 | } | |
37 | } | |
38 | ||
39 | protected abstract List<IPackageFragment> getPackageFragments() throws JavaModelException; | |
40 | ||
41 | private void analyzeMethodsInPackageFragments(List<IPackageFragment> packageFragments) throws JavaModelException { | |
42 | for (IPackageFragment packageFragment: packageFragments) { | |
43 | if (containsSourceCode(packageFragment)) | |
44 | analyzeMethodsInPackage(packageFragment); | |
45 | } | |
46 | } | |
47 | ||
48 | private boolean containsSourceCode(IPackageFragment packageFragment) throws JavaModelException { | |
49 | return packageFragment.getKind() == IPackageFragmentRoot.K_SOURCE && packageFragment.hasChildren(); | |
50 | } | |
51 | ||
52 | private void analyzeMethodsInPackage(IPackageFragment packageFragment) throws JavaModelException { | |
856d61fb EK |
53 | PackageWideExtractAndMoveMethodAnalyzer analyzer = |
54 | new PackageWideExtractAndMoveMethodAnalyzer(packageFragment, statistics); | |
8a96c34b EK |
55 | analyzer.analyze(); |
56 | results.addAll(analyzer.getResults()); | |
57 | } | |
58 | } |