package no.uio.ifi.refaktor.analyze.analyzers; import java.util.LinkedList; import java.util.List; import no.uio.ifi.refaktor.analyze.AnalysisStatistics; import no.uio.ifi.refaktor.analyze.ExtractAndMoveMethodAnalysisResult; import no.uio.ifi.refaktor.utils.RefaktorDebug; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; public class CompilationUnitWideSearchBasedExtractAndMoveMethodAnalyzer implements SearchBasedAnalyzer { private final ICompilationUnit compilationUnit; private final AnalysisStatistics statistics; private final List results; public CompilationUnitWideSearchBasedExtractAndMoveMethodAnalyzer(ICompilationUnit compilationUnit, AnalysisStatistics statistics) { this.compilationUnit = compilationUnit; this.statistics = statistics; results = new LinkedList(); } @Override public List getResults() { return results; } @Override public void analyze() { try { analyzeMethodsInCompilationUnit(); } catch (JavaModelException e) { RefaktorDebug.log(e); } statistics.incrementCompilationUnitCount(); } private void analyzeMethodsInCompilationUnit() throws JavaModelException { for (IType type: compilationUnit.getAllTypes()) analyzeMethodsInType(type); } private void analyzeMethodsInType(IType type) throws JavaModelException { TypeWideSearchBasedExtractAndMoveMethodAnalyzer analyzer = new TypeWideSearchBasedExtractAndMoveMethodAnalyzer(type, statistics); analyzer.analyze(); results.addAll(analyzer.getResults()); } }