]> git.uio.no Git - ifi-stolz-refaktor.git/blame - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageFragmentParentExtractAndMoveMethodAnalyzer.java
TypeWideExtractAndMoveMethodAnalyzer: adding Javadoc
[ifi-stolz-refaktor.git] / software / no.uio.ifi.refaktor / src / no / uio / ifi / refaktor / analyze / analyzers / PackageFragmentParentExtractAndMoveMethodAnalyzer.java
CommitLineData
33b364ef 1package no.uio.ifi.refaktor.analyze.analyzers;
8a96c34b
EK
2
3import java.util.LinkedList;
4import java.util.List;
5
33b364ef
EK
6import no.uio.ifi.refaktor.analyze.AnalysisStatistics;
7import no.uio.ifi.refaktor.analyze.ExtractAndMoveMethodAnalysisResult;
a554b0ce 8import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
8a96c34b
EK
9import no.uio.ifi.refaktor.utils.RefaktorDebug;
10
11import org.eclipse.jdt.core.IPackageFragment;
12import org.eclipse.jdt.core.IPackageFragmentRoot;
13import org.eclipse.jdt.core.JavaModelException;
14
856d61fb 15abstract 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}