]> git.uio.no Git - ifi-stolz-refaktor.git/commitdiff
testing generics, not sure if it will work
authorAnna Eilertsen <anna.eilertsen@student.uib.no>
Fri, 6 Nov 2015 12:28:20 +0000 (13:28 +0100)
committerAnna Eilertsen <anna.eilertsen@student.uib.no>
Fri, 6 Nov 2015 12:28:20 +0000 (13:28 +0100)
23 files changed:
software/no.uio.ifi.refaktor.tests/src/no/uio/ifi/refaktor/tests/ProjectWideExtractLocalVariableChangerTest.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/CompilationUnitWideExtractAndMoveMethodAnalyzer.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/CompilationUnitWideRefactorAnalyzer.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageFragmentParentRefactoringAnalyzer.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageWideExtractLocalVariableAnalyzer.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/ProjectWideRefactoringAnalyzer.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/SearchBasedRefactoringAnalyzer.java [moved from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/SearchBasedExtractLocalVariableAnalyzer.java with 63% similarity]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideRefactorAnalyzer.java [moved from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideExtractAndMoveMethodAnalyzer.java with 76% similarity]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/candidates/RefactorCandidate.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/comparators/ExtractLocalVariableCandidateComparator.java [deleted file]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/comparators/FavorNoUnfixesComparator.java [moved from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/comparators/FavorNoUnfixesExtractLocalVariableCandidateComparator.java with 77% similarity]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/SearchBasedExtractLocalVariableWithAssertsChanger.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/AggregationAnalyzerChanger.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ExtractAndMoveMethodAggregationAnalyzerChanger.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/PackageWideExtractAndMoveMethodChanger.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ProjectWideExtractAndMoveMethodChanger.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ProjectWideExtractLocalVariableChanger.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/executors/RefactoringExecutor.java [moved from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/executors/ExtractLocalVariableExecutor.java with 78% similarity]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/factories/RefactoringFactory.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/handlers/CompilationUnitWideExtractAndMoveMethodChanger.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/handlers/TypeWideSearchBasedExtractAndMoveMethodAnalysisHandler.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/handlers/TypeWideSearchBasedExtractLocalVariableAnalysisHandler.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/statistics/StatisticsAspect.aj

diff --git a/software/no.uio.ifi.refaktor.tests/src/no/uio/ifi/refaktor/tests/ProjectWideExtractLocalVariableChangerTest.java b/software/no.uio.ifi.refaktor.tests/src/no/uio/ifi/refaktor/tests/ProjectWideExtractLocalVariableChangerTest.java
new file mode 100644 (file)
index 0000000..20ef347
--- /dev/null
@@ -0,0 +1,62 @@
+package no.uio.ifi.refaktor.tests;
+
+import static no.uio.ifi.refaktor.tests.assertion.RefaktorAssert.assertThat;
+import static org.junit.Assert.fail;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
+import no.uio.ifi.refaktor.change.changers.ProjectWideExtractLocalVariableChanger;
+import no.uio.ifi.refaktor.change.changers.RefaktorChanger;
+import no.uio.ifi.refaktor.examples.manager.ExampleCodeManager;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class ProjectWideExtractLocalVariableChangerTest {
+
+       interface Setup {
+               RefaktorChanger setup() throws CoreException;
+       }
+
+    @Parameters
+    public static Collection<Object[]> data() throws CoreException {
+        return Arrays.asList(new Object[][] {
+               /* [stolz] Defer execution until Example-project extracted */
+//                 { new Setup() { public RefaktorChanger setup() throws CoreException {
+//                      return new ProjectWideExtractAndMoveMethodChanger(ExampleCodeManager.INSTANCE.getProject());}
+//                 } }
+            /* Test with the next line to check that repeated execution indeed always works on a fresh workspace: */
+               /* Anna's refactoring with the same API goes here: */
+                  { new Setup() { public RefaktorChanger setup() throws CoreException {return new ProjectWideExtractLocalVariableChanger(ExampleCodeManager.INSTANCE.getProject());}} }
+                 
+           });
+    }
+
+    @Parameter
+    public Setup setup;
+
+       @Test
+       public void testAnalyzeAndChange() throws CoreException {
+               ExampleCodeManager.INSTANCE.loadExampleCode(); // could be in setup() as well. 
+               RefaktorChanger changer = setup.setup();
+               try {
+                       changer.checkPreconditions();
+                       changer.execute(new NullProgressMonitor());
+               } catch (RefaktorAnalyzerException e) {
+                       fail("Preconditions failed to validate.");
+               } catch (CoreException e) {
+                       fail("Execution failed.");
+               }
+               
+               ExampleCodeManager.INSTANCE.cleanBuild();
+               assertThat("Project has errors after change.", !ExampleCodeManager.INSTANCE.projectHasErrors());
+       }
+}
index 5f940904b6146d01d801525406ab62633c324d53..6d855fc94d369da4a9039bb84a7b9a9c622507ea 100644 (file)
@@ -45,7 +45,7 @@ public class CompilationUnitWideExtractAndMoveMethodAnalyzer implements Aggregat
        }
 
        private void analyzeMethodsInType(IType type) throws JavaModelException {
-               TypeWideExtractAndMoveMethodAnalyzer analyzer = new TypeWideExtractAndMoveMethodAnalyzer(type);
+               TypeWideRefactorAnalyzer analyzer = new TypeWideRefactorAnalyzer(type);
                analyzer.analyze();
                results.addAll(analyzer.getResults());
        }
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/CompilationUnitWideRefactorAnalyzer.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/CompilationUnitWideRefactorAnalyzer.java
new file mode 100644 (file)
index 0000000..d782997
--- /dev/null
@@ -0,0 +1,54 @@
+package no.uio.ifi.refaktor.analyze.analyzers;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
+import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
+import no.uio.ifi.refaktor.debugging.RefaktorDebug;
+
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+
+/**
+ * Responsible for analyzing all methods in a compilation unit for
+ * candidates to the Extract and Move Method refactoring.
+ */
+public class CompilationUnitWideRefactorAnalyzer<Candidate extends RefactorCandidate> implements AggregationAnalyzer<Candidate> {
+
+       private final ICompilationUnit compilationUnit;
+       private final List<Candidate> results;
+
+       public CompilationUnitWideRefactorAnalyzer(ICompilationUnit compilationUnit) {
+               this.compilationUnit = compilationUnit;
+               results = new LinkedList<Candidate>();
+       }
+
+       @Override
+       public List<Candidate> getResults() {
+               return results;
+       }
+
+       @Override
+       public void analyze() throws RefaktorAnalyzerException {
+               try {
+                       analyzeMethodsInCompilationUnit();
+               } catch (JavaModelException e) {
+                       RefaktorDebug.log(e);
+               }
+       }
+
+       private void analyzeMethodsInCompilationUnit() throws JavaModelException {
+               for (IType type: compilationUnit.getAllTypes())
+                       analyzeMethodsInType(type);
+       }
+
+       private void analyzeMethodsInType(IType type) throws JavaModelException {
+               TypeWideRefactorAnalyzer<Candidate> analyzer = new TypeWideRefactorAnalyzer<Candidate>(type);
+               analyzer.analyze();
+               results.addAll(analyzer.getResults());
+       }
+}
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageFragmentParentRefactoringAnalyzer.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageFragmentParentRefactoringAnalyzer.java
new file mode 100644 (file)
index 0000000..5f29f75
--- /dev/null
@@ -0,0 +1,50 @@
+package no.uio.ifi.refaktor.analyze.analyzers;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
+import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
+import no.uio.ifi.refaktor.debugging.RefaktorDebug;
+
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.JavaModelException;
+
+abstract public class PackageFragmentParentRefactoringAnalyzer<Candidate extends RefactorCandidate> implements AggregationAnalyzer<ExtractAndMoveMethodCandidate> {
+
+       private final List<ExtractAndMoveMethodCandidate> results;
+
+       public PackageFragmentParentRefactoringAnalyzer() {
+               results = new LinkedList<ExtractAndMoveMethodCandidate>();
+       }
+
+       @Override
+       public List<ExtractAndMoveMethodCandidate> getResults() {
+               return results;
+       }
+
+       @Override
+       public void analyze() throws RefaktorAnalyzerException {
+               try {
+                       analyzeMethodsInPackages();
+               } catch (JavaModelException e) {
+                       RefaktorDebug.log(e);
+               }
+       }
+
+       protected abstract List<IPackageFragment> getPackages() throws JavaModelException;
+
+       private void analyzeMethodsInPackages() throws JavaModelException {
+               for (IPackageFragment packageFragment: getPackages()) {
+                       analyzeMethodsInPackage(packageFragment);
+               }
+       }
+
+       private void analyzeMethodsInPackage(IPackageFragment packageFragment) throws JavaModelException {
+               PackageWideExtractAndMoveMethodAnalyzer analyzer = 
+                               new PackageWideExtractAndMoveMethodAnalyzer(packageFragment);
+               analyzer.analyze();
+               results.addAll(analyzer.getResults());
+       }
+}
\ No newline at end of file
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageWideExtractLocalVariableAnalyzer.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageWideExtractLocalVariableAnalyzer.java
new file mode 100644 (file)
index 0000000..90cb0d7
--- /dev/null
@@ -0,0 +1,54 @@
+package no.uio.ifi.refaktor.analyze.analyzers;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
+import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
+import no.uio.ifi.refaktor.debugging.RefaktorDebug;
+
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.JavaModelException;
+
+/**
+ * Responsible for analyzing all methods in a package for
+ * candidates to the Extract and Move Method refactoring.
+ */
+public class PackageWideExtractLocalVariableAnalyzer implements AggregationAnalyzer<ExtractLocalVariableCandidate> {
+
+       private final IPackageFragment packageFragment;
+       private final List<ExtractLocalVariableCandidate> results;
+
+       public PackageWideExtractLocalVariableAnalyzer(IPackageFragment packageFragment) {
+               this.packageFragment = packageFragment;
+               results = new LinkedList<ExtractLocalVariableCandidate>();
+       }
+
+       @Override
+       public List<ExtractLocalVariableCandidate> getResults() {
+               return results;
+       }
+
+       @Override
+       public void analyze() throws RefaktorAnalyzerException {
+               try {
+                       analyzeMethodsInPackage();
+               } catch (JavaModelException e) {
+                       RefaktorDebug.log(e);
+               }
+       }
+
+       private void analyzeMethodsInPackage() throws JavaModelException {
+               for (ICompilationUnit compilationUnit: packageFragment.getCompilationUnits())
+                       analyzeMethodsInCompilationUnit(compilationUnit);
+       }
+
+       private void analyzeMethodsInCompilationUnit(ICompilationUnit compilationUnit) {
+               CompilationUnitWideRefactorAnalyzer analyzer = 
+                               new CompilationUnitWideRefactorAnalyzer(compilationUnit);
+               analyzer.analyze();
+               results.addAll(analyzer.getResults());
+       }
+}
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/ProjectWideRefactoringAnalyzer.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/ProjectWideRefactoringAnalyzer.java
new file mode 100644 (file)
index 0000000..6d77245
--- /dev/null
@@ -0,0 +1,36 @@
+package no.uio.ifi.refaktor.analyze.analyzers;
+
+import java.util.Arrays;
+import java.util.List;
+
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
+import no.uio.ifi.refaktor.utils.RefaktorHandleUtils;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.JavaModelException;
+
+/**
+ * Responsible for analyzing all methods in a project for
+ * candidates to the Extract Temp refactoring
+ * 
+ * @author Anna Eilertsen
+ */
+public class ProjectWideRefactoringAnalyzer<Candidate extends RefactorCandidate> extends PackageFragmentParentRefactoringAnalyzer<Candidate> {
+
+       private final IJavaProject javaProject;
+
+       public ProjectWideRefactoringAnalyzer(IProject project) {
+               this(RefaktorHandleUtils.createJavaProjectFrom(project));
+       }
+
+       public ProjectWideRefactoringAnalyzer(IJavaProject javaProject) {
+               this.javaProject = javaProject;
+       }
+
+       @Override
+       protected List<IPackageFragment> getPackages() throws JavaModelException {
+               return RefaktorHandleUtils.findPackagesAmongPackageFragments(Arrays.asList(javaProject.getPackageFragments()));
+       }
+}
similarity index 63%
rename from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/SearchBasedExtractLocalVariableAnalyzer.java
rename to software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/SearchBasedRefactoringAnalyzer.java
index 137e0e8c102d9887441e094eb76434adf16c9efc..6356c1a47d2ce64aa35adb56a5570c909d9283dd 100644 (file)
@@ -1,20 +1,18 @@
-package no.uio.ifi.refaktor.analyze;
+package no.uio.ifi.refaktor.analyze.analyzers;
 
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.LinkedList;
 import java.util.Set;
 
 import org.eclipse.jdt.core.IMethod;
 
-import no.uio.ifi.refaktor.analyze.analyzers.Analyzer;
-import no.uio.ifi.refaktor.analyze.analyzers.ExtractLocalVariableSelectionAnalyzer;
-import no.uio.ifi.refaktor.analyze.analyzers.StatementListsCreator;
-import no.uio.ifi.refaktor.analyze.analyzers.TextSelectionsGenerator;
 import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
-import no.uio.ifi.refaktor.analyze.comparators.ExtractLocalVariableCandidateComparator;
-import no.uio.ifi.refaktor.analyze.comparators.FavorNoUnfixesExtractLocalVariableCandidateComparator;
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
+import no.uio.ifi.refaktor.analyze.comparators.FavorNoUnfixesComparator;
 import no.uio.ifi.refaktor.analyze.exceptions.NoTargetFoundException;
 import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
+import no.uio.ifi.refaktor.factories.RefactoringFactory;
 import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
 
 /**
@@ -23,24 +21,27 @@ import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
  * 
  * This class uses the {@link ExtractLocalVariableSelectionAnalyzer} class to analyze each potential selection.  
  * 
+ * TODO I'm using a factory pattern that I don't really know how to use. Ask Volker. For now this is a
+ * hybrid pattern class. 
+ * 
  * @author Anna Eilertsen
  *
  */
-public class SearchBasedExtractLocalVariableAnalyzer implements Analyzer{
+public class SearchBasedRefactoringAnalyzer<Candidate extends RefactorCandidate> implements Analyzer{
 
        private IMethod method;
-       private ExtractLocalVariableCandidateComparator candidateComparator;
-       private LinkedList<ExtractLocalVariableCandidate> candidates;
+       private Comparator<Candidate> candidateComparator;
+       private LinkedList<RefactorCandidate> candidates;
        private StatementListsCreator statementsCreator;
 
        private Set<CompilationUnitTextSelection> textSelections;
        private ExtractLocalVariableCandidate chosenCandidate;
 
-       public SearchBasedExtractLocalVariableAnalyzer(IMethod method,
-                       FavorNoUnfixesExtractLocalVariableCandidateComparator favorNoUnfixesCandidateComparator) {
+       public SearchBasedRefactoringAnalyzer(RefactoringFactory<Candidate> factory, IMethod method,
+                       FavorNoUnfixesComparator<Candidate> comparator) {
                this.method = method;
-               this.candidateComparator = favorNoUnfixesCandidateComparator;
-               candidates = new LinkedList<ExtractLocalVariableCandidate>();
+               this.candidateComparator = comparator;
+               candidates = new LinkedList<RefactorCandidate>();
                statementsCreator = new StatementListsCreator(method);
        }
 
@@ -64,8 +65,10 @@ public class SearchBasedExtractLocalVariableAnalyzer implements Analyzer{
                        ExtractLocalVariableSelectionAnalyzer analyzer = new ExtractLocalVariableSelectionAnalyzer(textSelection);
                        analyzer.analyze();
 
+                       Candidate c;
+                       
                        if (analyzer.hasUsefulResults())
-                               candidates.add(new ExtractLocalVariableCandidate(method, analyzer, textSelection, statementsCreator.getNumberOfStatements(), textSelections.size()));
+                               candidates.add(RefactoringFactory.getInstance(c.getClass(), method, analyzer, textSelection, statementsCreator.getNumberOfStatements(), textSelections.size()));
                }
        }
 
similarity index 76%
rename from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideExtractAndMoveMethodAnalyzer.java
rename to software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideRefactorAnalyzer.java
index 67f2f9dafe76edf912b41732b3bbfdc72770772e..86ff0c1bde8c83ce73938ebbfd0880755e47bdb2 100644 (file)
@@ -4,7 +4,9 @@ import java.util.LinkedList;
 import java.util.List;
 
 import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
 import no.uio.ifi.refaktor.analyze.comparators.FavorNoUnfixesExtractAndMoveCandidateComparator;
+import no.uio.ifi.refaktor.analyze.comparators.FavorNoUnfixesComparator;
 import no.uio.ifi.refaktor.analyze.exceptions.NoTargetFoundException;
 import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
 import no.uio.ifi.refaktor.debugging.RefaktorDebug;
@@ -17,18 +19,18 @@ import org.eclipse.jdt.core.JavaModelException;
  * Responsible for analyzing all methods in a type for
  * candidates to the Extract and Move Method refactoring.
  */
-public class TypeWideExtractAndMoveMethodAnalyzer implements AggregationAnalyzer<ExtractAndMoveMethodCandidate> {
+public class TypeWideRefactorAnalyzer<Candidate extends RefactorCandidate> implements AggregationAnalyzer<ExtractAndMoveMethodCandidate> {
 
        private final IType type;
-       private final List<ExtractAndMoveMethodCandidate> candidates;
+       private final List<Candidate> candidates;
 
-       public TypeWideExtractAndMoveMethodAnalyzer(IType type) {
+       public TypeWideRefactorAnalyzer(IType type) {
                this.type = type;
-               candidates = new LinkedList<ExtractAndMoveMethodCandidate>();
+               candidates = new LinkedList<Candidate>();
        }
 
        @Override
-       public List<ExtractAndMoveMethodCandidate> getResults() {
+       public List<Candidate> getResults() {
                return candidates;
        }
 
@@ -50,7 +52,7 @@ public class TypeWideExtractAndMoveMethodAnalyzer implements AggregationAnalyzer
        private void analyzeMethod(IMethod method) {
                try {
                        SearchBasedExtractAndMoveMethodAnalyzer analyzer = 
-                                       new SearchBasedExtractAndMoveMethodAnalyzer(method, new FavorNoUnfixesExtractAndMoveCandidateComparator());
+                                       new SearchBasedExtractAndMoveMethodAnalyzer(method, new FavorNoUnfixesComparator());
                        analyzer.analyze();
                        candidates.add(analyzer.getCandidate());
                } catch (NoTargetFoundException e) {
index 611c5475e3b578941b88c1b7d48f6f3549598797..3c4916d9b4f4207be4e48da40eec9bd53be31508 100644 (file)
@@ -1,5 +1,7 @@
 package no.uio.ifi.refaktor.analyze.candidates;
 
+import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
+
 /**
  * Represents candidate for a refactoring, 
  * i.e. a selection, found in a method, that can be the input of a refactoring command 
@@ -31,4 +33,37 @@ public interface RefactorCandidate {
         * @return true if the represented selection contains no unfixes (unsafe prefixes), false otherwise
         */
        public boolean hasNoUnfixes();
+       
+       /**
+        * 
+        * @return The text selection that will be the argument of the refactoring
+        */
+       public CompilationUnitTextSelection getTextSelection();
+       
+       /**
+        * TODO What specifically is meant by Target?
+        * 
+        * @return true if only one possible target, false otherwise
+        */
+       public boolean hasOnlyOnePossibleTarget();
+       
+       /**
+        * 
+        * @return true if more than one possible target
+        */
+       public boolean hasMoreThanOnePossibleTarget();
+       
+       /**
+        * 
+        * @return target frequency
+        */
+       public int getTargetFrequency();
+       
+       /**
+        * ex
+        * target x.c.x has segment count 3
+        *  
+        * @return target prefix segment count
+        */
+       public int getTargetPrefixSegmentCount();
 }
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/comparators/ExtractLocalVariableCandidateComparator.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/comparators/ExtractLocalVariableCandidateComparator.java
deleted file mode 100644 (file)
index 3cea310..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package no.uio.ifi.refaktor.analyze.comparators;
-
-import java.util.Comparator;
-
-import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
-
-public interface ExtractLocalVariableCandidateComparator extends Comparator<ExtractLocalVariableCandidate>{
-
-}
@@ -3,15 +3,19 @@
  */
 package no.uio.ifi.refaktor.analyze.comparators;
 
-import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
+import java.util.Comparator;
+
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
 
 /**
+ * Generic comparator
+ * 
  * @author Anna Eilertsen
  *
  */
-public class FavorNoUnfixesExtractLocalVariableCandidateComparator implements ExtractLocalVariableCandidateComparator {
+public class FavorNoUnfixesComparator<Candidate extends RefactorCandidate> implements Comparator<Candidate> {
                @Override
-               public int compare(ExtractLocalVariableCandidate resultOne, ExtractLocalVariableCandidate resultTwo) {
+               public int compare(Candidate resultOne, Candidate resultTwo) {
                        if (resultOne.hasNoUnfixes() && resultTwo.hasUnfixes())
                                return 1;
                        else if (resultOne.hasUnfixes() && resultTwo.hasNoUnfixes())
index 83ce56e57523e4098ef43d95e336064ed02db8fd..6763bd545adde6e7fb5c48202d312c1fcd1af6eb 100644 (file)
@@ -4,20 +4,20 @@ import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.IMethod;
 
-import no.uio.ifi.refaktor.analyze.SearchBasedExtractLocalVariableAnalyzer;
 import no.uio.ifi.refaktor.analyze.analyzers.SearchBasedExtractAndMoveMethodAnalyzer;
+import no.uio.ifi.refaktor.analyze.analyzers.SearchBasedRefactoringAnalyzer;
 import no.uio.ifi.refaktor.analyze.comparators.FavorNoUnfixesExtractAndMoveCandidateComparator;
-import no.uio.ifi.refaktor.analyze.comparators.FavorNoUnfixesExtractLocalVariableCandidateComparator;
+import no.uio.ifi.refaktor.analyze.comparators.FavorNoUnfixesComparator;
 import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
 import no.uio.ifi.refaktor.change.changers.RefaktorChanger;
 import no.uio.ifi.refaktor.change.executors.ExtractAndMoveMethodExecutor;
-import no.uio.ifi.refaktor.change.executors.ExtractLocalVariableExecutor;
+import no.uio.ifi.refaktor.change.executors.RefactoringExecutor;
 
 public class SearchBasedExtractLocalVariableWithAssertsChanger implements RefaktorChanger {
-       private SearchBasedExtractLocalVariableAnalyzer analyzer;
+       private SearchBasedRefactoringAnalyzer analyzer;
        
        public SearchBasedExtractLocalVariableWithAssertsChanger(IMethod method) {
-               this.analyzer = new SearchBasedExtractLocalVariableAnalyzer(method, new FavorNoUnfixesExtractLocalVariableCandidateComparator());
+               this.analyzer = new SearchBasedRefactoringAnalyzer(method, new FavorNoUnfixesComparator());
        }
 
        @Override
@@ -28,7 +28,7 @@ public class SearchBasedExtractLocalVariableWithAssertsChanger implements Refakt
 
        @Override
        public void execute(IProgressMonitor monitor) throws CoreException {
-               ExtractLocalVariableExecutor executor = new ExtractLocalVariableExecutor(analyzer.getCandidate());
+               RefactoringExecutor executor = new RefactoringExecutor(analyzer.getCandidate());
                executor.execute(monitor);
        }
 
index ad368c617cd1c01aaea066fddb9376785c78ca93..a90f1d0b8311ac375796d6eaa88c04bb26a76f8f 100644 (file)
@@ -2,10 +2,12 @@ package no.uio.ifi.refaktor.change.changers;
 
 import no.uio.ifi.refaktor.analyze.analyzers.AggregationAnalyzer;
 import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
 import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
 import no.uio.ifi.refaktor.change.exceptions.RefactoringNotExecutedException;
 import no.uio.ifi.refaktor.change.exceptions.RefaktorChangerException;
 import no.uio.ifi.refaktor.change.executors.ExtractAndMoveMethodExecutor;
+import no.uio.ifi.refaktor.change.executors.RefactoringExecutor;
 import no.uio.ifi.refaktor.debugging.RefaktorDebug;
 
 import org.eclipse.core.runtime.CoreException;
@@ -15,13 +17,17 @@ import org.eclipse.core.runtime.NullProgressMonitor;
 /**
  * A {@link RefaktorChanger} that is responsible for running an
  * {@link AggregationAnalyzer} and executing the
- * {@link ExtractAndMoveMethodExecutor} on all results returned from it. 
+ * {@link RefactoringExecutor} on all results returned from it.
+ * 
+ *  Generic class for use with different Refactorings 
+ *  
+ *  @author Anna Eilertsen
  */
-public class AggregationAnalyzerChanger implements RefaktorChanger {
+public class AggregationAnalyzerChanger<Candidate extends RefactorCandidate> implements RefaktorChanger {
 
-       private AggregationAnalyzer<ExtractAndMoveMethodCandidate> analyzer;
+       private AggregationAnalyzer<Candidate> analyzer;
 
-       public AggregationAnalyzerChanger(AggregationAnalyzer<ExtractAndMoveMethodCandidate> analyzer) {
+       public AggregationAnalyzerChanger(AggregationAnalyzer<Candidate> analyzer) {
                this.analyzer = analyzer;
        }
 
@@ -32,11 +38,11 @@ public class AggregationAnalyzerChanger implements RefaktorChanger {
 
        @Override
        public void execute(IProgressMonitor monitor) throws CoreException {
-               for (ExtractAndMoveMethodCandidate result: analyzer.getResults()) {
+               for (Candidate result: analyzer.getResults()) {
                        try {
                                RefaktorDebug.println();
                                RefaktorDebug.println(this, result);
-                               ExtractAndMoveMethodExecutor executor = new ExtractAndMoveMethodExecutor(result);
+                               RefactoringExecutor<Candidate> executor = new RefactoringExecutor<Candidate>(result);
                                executor.execute(new NullProgressMonitor());
                        } catch (RefactoringNotExecutedException e) {
                                RefaktorDebug.log(e);
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ExtractAndMoveMethodAggregationAnalyzerChanger.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ExtractAndMoveMethodAggregationAnalyzerChanger.java
new file mode 100644 (file)
index 0000000..80637a3
--- /dev/null
@@ -0,0 +1,49 @@
+package no.uio.ifi.refaktor.change.changers;
+
+import no.uio.ifi.refaktor.analyze.analyzers.AggregationAnalyzer;
+import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
+import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
+import no.uio.ifi.refaktor.change.exceptions.RefactoringNotExecutedException;
+import no.uio.ifi.refaktor.change.exceptions.RefaktorChangerException;
+import no.uio.ifi.refaktor.change.executors.ExtractAndMoveMethodExecutor;
+import no.uio.ifi.refaktor.debugging.RefaktorDebug;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+/**
+ * A {@link RefaktorChanger} that is responsible for running an
+ * {@link AggregationAnalyzer} and executing the
+ * {@link ExtractAndMoveMethodExecutor} on all results returned from it. 
+ */
+public class ExtractAndMoveMethodAggregationAnalyzerChanger implements RefaktorChanger {
+
+       private AggregationAnalyzer<ExtractAndMoveMethodCandidate> analyzer;
+
+       public ExtractAndMoveMethodAggregationAnalyzerChanger(AggregationAnalyzer<ExtractAndMoveMethodCandidate> analyzer) {
+               this.analyzer = analyzer;
+       }
+
+       @Override
+       public void checkPreconditions() throws RefaktorAnalyzerException {
+               analyzer.analyze();
+       }
+
+       @Override
+       public void execute(IProgressMonitor monitor) throws CoreException {
+               for (ExtractAndMoveMethodCandidate result: analyzer.getResults()) {
+                       try {
+                               RefaktorDebug.println();
+                               RefaktorDebug.println(this, result);
+                               ExtractAndMoveMethodExecutor executor = new ExtractAndMoveMethodExecutor(result);
+                               executor.execute(new NullProgressMonitor());
+                       } catch (RefactoringNotExecutedException e) {
+                               RefaktorDebug.log(e);
+                       } catch (RefaktorChangerException e) {
+                               RefaktorDebug.log(e);
+                       }
+               }
+       }
+}
\ No newline at end of file
index 8c14beec100afe80a7bedc8e9572e534c9d76608..dbd70a5a23999b05c656bae86c422b295fc285aa 100644 (file)
@@ -9,10 +9,10 @@ import org.eclipse.jdt.core.IPackageFragment;
 
 public class PackageWideExtractAndMoveMethodChanger implements RefaktorChanger {
 
-       private AggregationAnalyzerChanger changer;
+       private ExtractAndMoveMethodAggregationAnalyzerChanger changer;
 
        public PackageWideExtractAndMoveMethodChanger(IPackageFragment packageFragment) {
-               changer = new AggregationAnalyzerChanger(new PackageWideExtractAndMoveMethodAnalyzer(packageFragment));
+               changer = new ExtractAndMoveMethodAggregationAnalyzerChanger(new PackageWideExtractAndMoveMethodAnalyzer(packageFragment));
        }
 
        @Override
index d914cca5824f2ac9bd83de0d0090e2701d87766e..56ae626e6ae8925d970f6c3d1b868ba06f4fb42d 100644 (file)
@@ -16,22 +16,22 @@ import org.eclipse.jdt.core.IJavaProject;
  * positive results from the analysis. See {@link ExtractAndMoveMethodCandidate}.
  * 
  * This is done with the help of a {@link ProjectWideExtractAndMoveMethodAnalyzer}
- * and an {@link AggregationAnalyzerChanger}.
+ * and an {@link ExtractAndMoveMethodAggregationAnalyzerChanger}.
  */
 public class ProjectWideExtractAndMoveMethodChanger implements RefaktorChanger {
 
-       private AggregationAnalyzerChanger changer;
+       private ExtractAndMoveMethodAggregationAnalyzerChanger changer;
 
        public ProjectWideExtractAndMoveMethodChanger(IProject project) {
                if (project == null)
                        throw new IllegalArgumentException();
-               changer = new AggregationAnalyzerChanger(new ProjectWideExtractAndMoveMethodAnalyzer(project));
+               changer = new ExtractAndMoveMethodAggregationAnalyzerChanger(new ProjectWideExtractAndMoveMethodAnalyzer(project));
        }
 
        public ProjectWideExtractAndMoveMethodChanger(IJavaProject javaProject) {
                if (javaProject == null)
                        throw new IllegalArgumentException();
-               changer = new AggregationAnalyzerChanger(new ProjectWideExtractAndMoveMethodAnalyzer(javaProject));
+               changer = new ExtractAndMoveMethodAggregationAnalyzerChanger(new ProjectWideExtractAndMoveMethodAnalyzer(javaProject));
        }
 
        @Override
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ProjectWideExtractLocalVariableChanger.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ProjectWideExtractLocalVariableChanger.java
new file mode 100644 (file)
index 0000000..a4663f0
--- /dev/null
@@ -0,0 +1,48 @@
+package no.uio.ifi.refaktor.change.changers;
+
+import no.uio.ifi.refaktor.analyze.analyzers.ProjectWideRefactoringAnalyzer;
+import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
+import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
+import no.uio.ifi.refaktor.change.executors.RefactoringExecutor;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.core.IJavaProject;
+
+/**
+ * A {@link RefaktorChanger} that is responsible for analyzing all of the methods
+ * in a project and execute the {@link RefactoringExecutor} on all of the
+ * positive results from the analysis. See {@link ExtractLocalVariableCandidate}.
+ * 
+ * This is done with the help of a {@link ProjectWideExtractAndMoveMethodAnalyzer}
+ * and an {@link ExtractAndMoveMethodAggregationAnalyzerChanger}.
+ */
+public class ProjectWideExtractLocalVariableChanger implements RefaktorChanger {
+
+       private AggregationAnalyzerChanger changer;
+
+       public ProjectWideExtractLocalVariableChanger(IProject project) {
+               if (project == null)
+                       throw new IllegalArgumentException();
+               changer = new AggregationAnalyzerChanger(new ProjectWideRefactoringAnalyzer<ExtractLocalVariableCandidate>(project));
+       }
+
+       public ProjectWideExtractLocalVariableChanger(IJavaProject javaProject) {
+               if (javaProject == null)
+                       throw new IllegalArgumentException();
+               changer = new AggregationAnalyzerChanger(new ProjectWideRefactoringAnalyzer(javaProject));
+       }
+
+       @Override
+       public void checkPreconditions() throws RefaktorAnalyzerException {
+               changer.checkPreconditions();
+       }
+
+       @Override
+       public void execute(IProgressMonitor monitor) throws CoreException {
+               changer.execute(monitor);
+       }
+
+}
similarity index 78%
rename from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/executors/ExtractLocalVariableExecutor.java
rename to software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/executors/RefactoringExecutor.java
index 5101c71ff8310015623ac245a18f050778328a4c..df120857a283b83eb5254483ec3ce9fe1caa130e 100644 (file)
@@ -4,17 +4,21 @@ import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
 import no.uio.ifi.refaktor.change.changers.ExtractLocalVariableWithAssertsChanger;
 import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
 
 /**
+ * RefactoringExecutor spesific for Extract Local variable refactoring
  * 
  * 
+ * TODO Might be changed
+ * 
  * 
  * @author Anna Eilertsen
  *
  */
-public class ExtractLocalVariableExecutor implements Executor{
+public class RefactoringExecutor<Candidate extends RefactorCandidate> implements Executor{
 
        /**
         * Text selection containing the expression we want to refactor, and only that
@@ -22,7 +26,7 @@ public class ExtractLocalVariableExecutor implements Executor{
        private CompilationUnitTextSelection textSelection;
        private String newVariableNameName;
 
-       public ExtractLocalVariableExecutor(ExtractLocalVariableCandidate analysisResult) {
+       public RefactoringExecutor(Candidate analysisResult) {
                this.textSelection = analysisResult.getTextSelection();
                this.newVariableNameName = analysisResult.generateName();
        }
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/factories/RefactoringFactory.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/factories/RefactoringFactory.java
new file mode 100644 (file)
index 0000000..06a25bc
--- /dev/null
@@ -0,0 +1,27 @@
+package no.uio.ifi.refaktor.factories;
+
+import org.eclipse.jdt.core.IMethod;
+
+import no.uio.ifi.refaktor.analyze.analyzers.ExtractAndMoveMethodAnalyzer;
+import no.uio.ifi.refaktor.analyze.analyzers.ExtractLocalVariableSelectionAnalyzer;
+import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
+import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
+import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
+
+public class RefactoringFactory<Candidate extends RefactorCandidate>{
+
+       public static ExtractLocalVariableCandidate getInstance(Class<? extends RefactorCandidate> class1){
+               return null;
+               
+       }
+       
+       public static RefactorCandidate getInstance(Class<? extends ExtractLocalVariableCandidate> c, IMethod method/*, ExtractLocalVariableSelectionAnalyzer analyzer*/, CompilationUnitTextSelection textSelection, int numberOfStatementsAnalyzed, int numberOfTextSelectionsAnalyzed){
+               return new ExtractLocalVariableCandidate(method, null, textSelection, numberOfStatementsAnalyzed, numberOfTextSelectionsAnalyzed);
+       }
+       
+       public static <Candidate extends ExtractAndMoveMethodCandidate> ExtractAndMoveMethodCandidate RefactoringFactory(Candidate c, IMethod method /*, ExtractAndMoveMethodAnalyzer analyzer*/, CompilationUnitTextSelection textSelection, int numberOfStatementsAnalyzed, int numberOfTextSelectionsAnalyzed){
+               return new ExtractAndMoveMethodCandidate(method, null, textSelection, numberOfStatementsAnalyzed, numberOfTextSelectionsAnalyzed);
+       }
+
+}
index b28367d010262fdf009d3c07491b2ea84bc94c95..e220bbb182174ec32e2dd3b8946975fdf2574e81 100644 (file)
@@ -6,15 +6,15 @@ import org.eclipse.jdt.core.ICompilationUnit;
 
 import no.uio.ifi.refaktor.analyze.analyzers.CompilationUnitWideExtractAndMoveMethodAnalyzer;
 import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
-import no.uio.ifi.refaktor.change.changers.AggregationAnalyzerChanger;
+import no.uio.ifi.refaktor.change.changers.ExtractAndMoveMethodAggregationAnalyzerChanger;
 import no.uio.ifi.refaktor.change.changers.RefaktorChanger;
 
 public class CompilationUnitWideExtractAndMoveMethodChanger implements RefaktorChanger {
 
-       private final AggregationAnalyzerChanger changer;
+       private final ExtractAndMoveMethodAggregationAnalyzerChanger changer;
 
        public CompilationUnitWideExtractAndMoveMethodChanger(ICompilationUnit compilationUnit) {
-               changer = new AggregationAnalyzerChanger(new CompilationUnitWideExtractAndMoveMethodAnalyzer(compilationUnit));
+               changer = new ExtractAndMoveMethodAggregationAnalyzerChanger(new CompilationUnitWideExtractAndMoveMethodAnalyzer(compilationUnit));
        }
 
        @Override
index 59c26196e6eceae7bdb0fe42f1382d11406da307..23e66be2c21646de5e9d1b4ac78dc2b7f8f2e253 100644 (file)
@@ -1,7 +1,7 @@
 package no.uio.ifi.refaktor.handlers;
 
 import no.uio.ifi.refaktor.analyze.analyzers.AggregationAnalyzer;
-import no.uio.ifi.refaktor.analyze.analyzers.TypeWideExtractAndMoveMethodAnalyzer;
+import no.uio.ifi.refaktor.analyze.analyzers.TypeWideRefactorAnalyzer;
 import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
 
 import org.eclipse.jdt.core.IType;
@@ -12,7 +12,7 @@ public class TypeWideSearchBasedExtractAndMoveMethodAnalysisHandler extends Abst
        protected AggregationAnalyzer<ExtractAndMoveMethodCandidate> createAnalyzer(Object element) {
                assert element instanceof IType;
                IType type = (IType) element;
-               return new TypeWideExtractAndMoveMethodAnalyzer(type);
+               return new TypeWideRefactorAnalyzer(type);
        }
 
 }
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/handlers/TypeWideSearchBasedExtractLocalVariableAnalysisHandler.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/handlers/TypeWideSearchBasedExtractLocalVariableAnalysisHandler.java
new file mode 100644 (file)
index 0000000..ce81491
--- /dev/null
@@ -0,0 +1,18 @@
+package no.uio.ifi.refaktor.handlers;
+
+import no.uio.ifi.refaktor.analyze.analyzers.AggregationAnalyzer;
+import no.uio.ifi.refaktor.analyze.analyzers.TypeWideRefactorAnalyzer;
+import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
+
+import org.eclipse.jdt.core.IType;
+
+public class TypeWideSearchBasedExtractLocalVariableAnalysisHandler extends AbstractSearchBasedExtractAndMoveMethodAnalysisHandler {
+
+       @Override
+       protected AggregationAnalyzer<ExtractAndMoveMethodCandidate> createAnalyzer(Object element) {
+               assert element instanceof IType;
+               IType type = (IType) element;
+               return new TypeWideRefactorAnalyzer(type);
+       }
+
+}
index cadf988149667ee2bd38646517ba7b35b0b8d745..e29ea4a56ef850d488541cd6c2b737d4a666cb04 100644 (file)
@@ -15,7 +15,7 @@ import no.uio.ifi.refaktor.analyze.analyzers.CompilationUnitWideExtractAndMoveMe
 import no.uio.ifi.refaktor.analyze.analyzers.ExtractAndMoveMethodAnalyzer;
 import no.uio.ifi.refaktor.analyze.analyzers.PackageWideExtractAndMoveMethodAnalyzer;
 import no.uio.ifi.refaktor.analyze.analyzers.SearchBasedExtractAndMoveMethodAnalyzer;
-import no.uio.ifi.refaktor.analyze.analyzers.TypeWideExtractAndMoveMethodAnalyzer;
+import no.uio.ifi.refaktor.analyze.analyzers.TypeWideRefactorAnalyzer;
 import no.uio.ifi.refaktor.analyze.candidates.ExtractAndMoveMethodCandidate;
 import no.uio.ifi.refaktor.change.executors.ExtractAndMoveMethodExecutor;
 import no.uio.ifi.refaktor.change.executors.ExtractMethodPostExecutionResources;
@@ -293,7 +293,7 @@ privileged public aspect StatisticsAspect {
                call(* SearchBasedExtractAndMoveMethodAnalyzer.analyze()) && target(analyzer);
 
        pointcut typeAnalyze() : 
-               call(* TypeWideExtractAndMoveMethodAnalyzer.analyze());
+               call(* TypeWideRefactorAnalyzer.analyze());
 
        pointcut compilationUnitAnalyze() : 
                call(* CompilationUnitWideExtractAndMoveMethodAnalyzer.analyze());