]> git.uio.no Git - ifi-stolz-refaktor.git/blame - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/ProjectWideSearchBasedExtractAndMoveMethodAnalyzer.java
Adding command + handler for analyzing projects.
[ifi-stolz-refaktor.git] / software / no.uio.ifi.refaktor / src / no / uio / ifi / refaktor / analyze / ProjectWideSearchBasedExtractAndMoveMethodAnalyzer.java
CommitLineData
7256e850 1package no.uio.ifi.refaktor.analyze;
36a99b48 2
46cc235b
EK
3import java.util.LinkedList;
4import java.util.List;
5
4f577e24 6import no.uio.ifi.refaktor.utils.RefaktorDebug;
36a99b48
EK
7import no.uio.ifi.refaktor.utils.RefaktorHandleUtils;
8
9import org.eclipse.core.resources.IProject;
36a99b48 10import org.eclipse.jdt.core.IJavaProject;
36a99b48 11import org.eclipse.jdt.core.IPackageFragment;
36a99b48
EK
12import org.eclipse.jdt.core.JavaModelException;
13
14public class ProjectWideSearchBasedExtractAndMoveMethodAnalyzer {
15
16 private final IProject project;
46cc235b 17 private final List<ExtractAndMoveMethodAnalysisResult> results;
7256e850 18 private final AnalysisStatistics statistics;
36a99b48 19
5180318b 20 public ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(IProject project, AnalysisStatistics statistics) {
36a99b48 21 this.project = project;
5180318b 22 this.statistics = statistics;
46cc235b 23 results = new LinkedList<ExtractAndMoveMethodAnalysisResult>();
36a99b48
EK
24 }
25
0a0fae81
EK
26 public List<ExtractAndMoveMethodAnalysisResult> getResults() {
27 return results;
36a99b48
EK
28 }
29
0a0fae81 30 public void analyze() {
36a99b48
EK
31 IJavaProject javaProject = RefaktorHandleUtils.createJavaProjectFrom(project);
32 try {
7256e850 33 analyzeMethodsInProject(javaProject);
36a99b48 34 } catch (JavaModelException e) {
7256e850 35 RefaktorDebug.log(e);
0a0fae81 36 }
36a99b48
EK
37 }
38
7256e850
EK
39 private void analyzeMethodsInProject(IJavaProject javaProject) throws JavaModelException {
40 for (IPackageFragment packageFragment: javaProject.getPackageFragments())
41 analyzeMethodsInPackage(packageFragment);
42 }
43
44 private void analyzeMethodsInPackage(IPackageFragment packageFragment) {
45 PackageWideSearchBasedExtractAndMoveMethodAnalyzer analyzer =
46 new PackageWideSearchBasedExtractAndMoveMethodAnalyzer(packageFragment, statistics);
47 analyzer.analyze();
48 results.addAll(analyzer.getResults());
0a0fae81 49 statistics.incrementPackageCount();
7256e850 50 }
36a99b48 51}