]> git.uio.no Git - ifi-stolz-refaktor.git/commitdiff
fixed bug, needs cleaning up
authorAnna Eilertsen <anna.eilertsen@student.uib.no>
Tue, 10 Nov 2015 16:11:40 +0000 (17:11 +0100)
committerAnna Eilertsen <anna.eilertsen@student.uib.no>
Tue, 10 Nov 2015 16:11:40 +0000 (17:11 +0100)
15 files changed:
software/no.uio.ifi.refaktor.examples/examples/src/aSimpleExample/Offset.java [new file with mode: 0644]
software/no.uio.ifi.refaktor.examples/examples/src/a_offset/Offset.java [new file with mode: 0644]
software/no.uio.ifi.refaktor.tests/src/no/uio/ifi/refaktor/tests/ProjectWideExtractLocalVariableChangerTest.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/CompilationUnitWideRefactorer.java [moved from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/CompilationUnitWideRefactorAnalyzer.java with 78% similarity]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageFragmentParentRefactoring.java [moved from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageFragmentParentRefactoringAnalyzer.java with 57% similarity]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageWideRefactorer.java [moved from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageWideRefactorAnalyzer.java with 78% similarity]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/ProjectWideRefactoring.java [moved from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/ProjectWideRefactoringAnalyzer.java with 73% similarity]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/SearchBasedRefactorAnalyzer.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideRefactorAnalyzer.java [deleted file]
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideRefactorer.java [new file with mode: 0644]
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
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ExtractLocalVariableWithAssertsChanger.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/change/changers/ProjectWideExtractLocalVariableChanger.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/forTests/Refactorer.java [new file with mode: 0644]

diff --git a/software/no.uio.ifi.refaktor.examples/examples/src/aSimpleExample/Offset.java b/software/no.uio.ifi.refaktor.examples/examples/src/aSimpleExample/Offset.java
new file mode 100644 (file)
index 0000000..5eb72c0
--- /dev/null
@@ -0,0 +1,29 @@
+package aSimpleExample;
+
+
+public class Offset {
+       
+       
+       public void foo(){
+               X x = new X();
+               x.n();
+               x.n();
+       }
+       
+       class X{
+               
+               void n(){
+                       
+               }
+               
+               void m(){
+                       
+               }
+       }
+       
+       public void bar(){
+               X x = new X();
+               x.m();
+               x.m();
+       }
+}
\ No newline at end of file
diff --git a/software/no.uio.ifi.refaktor.examples/examples/src/a_offset/Offset.java b/software/no.uio.ifi.refaktor.examples/examples/src/a_offset/Offset.java
new file mode 100644 (file)
index 0000000..edb66b8
--- /dev/null
@@ -0,0 +1,29 @@
+package a_offset;
+
+
+public class Offset {
+       
+       
+       public void foo(){
+               X x = new X();
+               x.n();
+               x.n();
+       }
+       
+       class X{
+               
+               void n(){
+                       
+               }
+               
+               void m(){
+                       
+               }
+       }
+       
+       public void bar(){
+               X x = new X();
+               x.m();
+               x.m();
+       }
+}
\ No newline at end of file
index c4ad91367e599a6d10b1ddca42048044d39f9b24..f225952ab4e5f8c26d3e8245d06f494924554a3c 100644 (file)
@@ -10,6 +10,7 @@ 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 no.uio.ifi.refaktor.forTests.Refactorer;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.NullProgressMonitor;
@@ -23,7 +24,7 @@ import org.junit.runners.Parameterized.Parameters;
 public class ProjectWideExtractLocalVariableChangerTest {
 
        interface Setup {
-               RefaktorChanger setup() throws CoreException;
+               Refactorer setup() throws CoreException;
        }
 
        
@@ -37,7 +38,7 @@ public class ProjectWideExtractLocalVariableChangerTest {
 //                 } }
             /* 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());}} }
+                  { new Setup() { public Refactorer setup() throws CoreException {return new ProjectWideExtractLocalVariableChanger(ExampleCodeManager.INSTANCE.getProject());}} }
                  
            });
     }
@@ -45,13 +46,29 @@ public class ProjectWideExtractLocalVariableChangerTest {
     @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());
+//     }
+       
        @Test
-       public void testAnalyzeAndChange() throws CoreException {
+       public void testAnalyzeAndChange() throws CoreException{
                ExampleCodeManager.INSTANCE.loadExampleCode(); // could be in setup() as well. 
-               RefaktorChanger changer = setup.setup();
+               Refactorer refactorer = setup.setup();
                try {
-                       changer.checkPreconditions();
-                       changer.execute(new NullProgressMonitor());
+                       refactorer.refactor(new NullProgressMonitor());
                } catch (RefaktorAnalyzerException e) {
                        fail("Preconditions failed to validate.");
                } catch (CoreException e) {
@@ -59,6 +76,6 @@ public class ProjectWideExtractLocalVariableChangerTest {
                }
                
                ExampleCodeManager.INSTANCE.cleanBuild();
-               assertThat("Project has errors after change.", !ExampleCodeManager.INSTANCE.projectHasErrors());
+               assertThat("Project has errors after change.", !ExampleCodeManager.INSTANCE.projectHasErrors());                
        }
 }
similarity index 78%
rename from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/CompilationUnitWideRefactorAnalyzer.java
rename to software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/CompilationUnitWideRefactorer.java
index d7829972b25978de566c37d9c37156a6d147fa44..e3aa34f18560cb85403de34a48cdb49541e7c57d 100644 (file)
@@ -17,12 +17,12 @@ 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> {
+public class CompilationUnitWideRefactorer<Candidate extends ExtractLocalVariableCandidate> implements AggregationAnalyzer<Candidate> {
 
        private final ICompilationUnit compilationUnit;
        private final List<Candidate> results;
 
-       public CompilationUnitWideRefactorAnalyzer(ICompilationUnit compilationUnit) {
+       public CompilationUnitWideRefactorer(ICompilationUnit compilationUnit) {
                this.compilationUnit = compilationUnit;
                results = new LinkedList<Candidate>();
        }
@@ -47,8 +47,8 @@ public class CompilationUnitWideRefactorAnalyzer<Candidate extends RefactorCandi
        }
 
        private void analyzeMethodsInType(IType type) throws JavaModelException {
-               TypeWideRefactorAnalyzer<Candidate> analyzer = new TypeWideRefactorAnalyzer<Candidate>(type);
-               analyzer.analyze();
-               results.addAll(analyzer.getResults());
+               TypeWideRefactorer<Candidate> refactorer = new TypeWideRefactorer<Candidate>(type);
+               refactorer.analyze();
+               results.addAll(refactorer.getResults());
        }
 }
@@ -4,6 +4,7 @@ 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;
@@ -11,11 +12,11 @@ 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<Candidate> {
+abstract public class PackageFragmentParentRefactoring<Candidate extends ExtractLocalVariableCandidate> implements AggregationAnalyzer<Candidate> {
 
        private final List<Candidate> results;
 
-       public PackageFragmentParentRefactoringAnalyzer() {
+       public PackageFragmentParentRefactoring() {
                results = new LinkedList<Candidate>();
        }
 
@@ -27,7 +28,7 @@ abstract public class PackageFragmentParentRefactoringAnalyzer<Candidate extends
        @Override
        public void analyze() throws RefaktorAnalyzerException {
                try {
-                       analyzeMethodsInPackages();
+                       refactorMethodsInPackages();
                } catch (JavaModelException e) {
                        RefaktorDebug.log(e);
                }
@@ -35,17 +36,17 @@ abstract public class PackageFragmentParentRefactoringAnalyzer<Candidate extends
 
        protected abstract List<IPackageFragment> getPackages() throws JavaModelException;
 
-       private void analyzeMethodsInPackages() throws JavaModelException {
+       private void refactorMethodsInPackages() throws JavaModelException {
                for (IPackageFragment packageFragment: getPackages()) {
-                       analyzeMethodsInPackage(packageFragment);
+                       refactorMethodsInPackage(packageFragment);
                }
        }
 
-       private void analyzeMethodsInPackage(IPackageFragment packageFragment) throws JavaModelException {
+       private void refactorMethodsInPackage(IPackageFragment packageFragment) throws JavaModelException {
                //TODO make generic
-               PackageWideRefactorAnalyzer<Candidate> analyzer = 
-                               new PackageWideRefactorAnalyzer<Candidate>(packageFragment);
-               analyzer.analyze();
-               results.addAll(analyzer.getResults());
+               PackageWideRefactorer<Candidate> refactorer = 
+                               new PackageWideRefactorer<Candidate>(packageFragment);
+               refactorer.analyze();
+//             results.addAll(refactorer.getResults());
        }
 }
\ No newline at end of file
similarity index 78%
rename from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageWideRefactorAnalyzer.java
rename to software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/PackageWideRefactorer.java
index 07fadee476cd802cfb447e913d7361ad118caa64..6129902e7863470bd23e4b098d7ae9a34bc062f6 100644 (file)
@@ -17,12 +17,12 @@ 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 PackageWideRefactorAnalyzer<Candidate extends RefactorCandidate> implements AggregationAnalyzer<Candidate> {
+public class PackageWideRefactorer<Candidate extends ExtractLocalVariableCandidate> implements AggregationAnalyzer<Candidate> {
 
        private final IPackageFragment packageFragment;
        private final List<Candidate> results;
 
-       public PackageWideRefactorAnalyzer(IPackageFragment packageFragment) {
+       public PackageWideRefactorer(IPackageFragment packageFragment) {
                this.packageFragment = packageFragment;
                results = new LinkedList<Candidate>();
        }
@@ -47,9 +47,9 @@ public class PackageWideRefactorAnalyzer<Candidate extends RefactorCandidate> im
        }
 
        private void analyzeMethodsInCompilationUnit(ICompilationUnit compilationUnit) {
-               CompilationUnitWideRefactorAnalyzer<Candidate> analyzer = 
-                               new CompilationUnitWideRefactorAnalyzer<Candidate>(compilationUnit);
-               analyzer.analyze();
-               results.addAll(analyzer.getResults());
+               CompilationUnitWideRefactorer<Candidate> refactorer = 
+                               new CompilationUnitWideRefactorer<Candidate>(compilationUnit);
+               refactorer.analyze();
+//             results.addAll(refactorer.getResults());
        }
 }
similarity index 73%
rename from software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/ProjectWideRefactoringAnalyzer.java
rename to software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/ProjectWideRefactoring.java
index 6d772450496f563e00ce43dc2284bcf3c92d9b08..c0c372f7c82d5d08ffe2e96ab28edfa65d61dec3 100644 (file)
@@ -3,6 +3,7 @@ package no.uio.ifi.refaktor.analyze.analyzers;
 import java.util.Arrays;
 import java.util.List;
 
+import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
 import no.uio.ifi.refaktor.analyze.candidates.RefactorCandidate;
 import no.uio.ifi.refaktor.utils.RefaktorHandleUtils;
 
@@ -17,15 +18,15 @@ import org.eclipse.jdt.core.JavaModelException;
  * 
  * @author Anna Eilertsen
  */
-public class ProjectWideRefactoringAnalyzer<Candidate extends RefactorCandidate> extends PackageFragmentParentRefactoringAnalyzer<Candidate> {
+public class ProjectWideRefactoring<Candidate extends ExtractLocalVariableCandidate> extends PackageFragmentParentRefactoring<Candidate> {
 
        private final IJavaProject javaProject;
 
-       public ProjectWideRefactoringAnalyzer(IProject project) {
+       public ProjectWideRefactoring(IProject project) {
                this(RefaktorHandleUtils.createJavaProjectFrom(project));
        }
 
-       public ProjectWideRefactoringAnalyzer(IJavaProject javaProject) {
+       public ProjectWideRefactoring(IJavaProject javaProject) {
                this.javaProject = javaProject;
        }
 
index 6eeed00b79e1f116d11952f8382034721e80cc7b..63973cce26aeac0df2aa02dbfcddb4c461e2a524 100644 (file)
@@ -27,7 +27,7 @@ import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
  * @author Anna Eilertsen
  *
  */
-public class SearchBasedRefactorAnalyzer<Candidate extends RefactorCandidate> implements Analyzer{
+public class SearchBasedRefactorAnalyzer<Candidate extends ExtractLocalVariableCandidate> implements Analyzer{
 
        private IMethod method;
        private Comparator<Candidate> candidateComparator;
@@ -48,8 +48,7 @@ public class SearchBasedRefactorAnalyzer<Candidate extends RefactorCandidate> im
        public void analyze() {
                try {
                        generateTextSelections();
-                       
-                       /*
+                                               /*
                         * TODO Seriously, I have no idea how to solve this
                         */
 //                     ExtractLocalVariableCandidate b = new ExtractLocalVariableCandidate(method, null, null, 0, 0);
@@ -69,6 +68,7 @@ public class SearchBasedRefactorAnalyzer<Candidate extends RefactorCandidate> im
 
        private void findPotentialExtractLocalVariableCandidates() {
                for (CompilationUnitTextSelection textSelection: textSelections) {
+                       String text = textSelection.getText();
                        ExtractLocalVariableSelectionAnalyzer analyzer = new ExtractLocalVariableSelectionAnalyzer(textSelection);
                        analyzer.analyze();
 
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideRefactorAnalyzer.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideRefactorAnalyzer.java
deleted file mode 100644 (file)
index 630848d..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-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.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;
-
-import org.eclipse.jdt.core.IMethod;
-import org.eclipse.jdt.core.IType;
-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 TypeWideRefactorAnalyzer<Candidate extends RefactorCandidate> implements AggregationAnalyzer<Candidate> {
-
-       private final IType type;
-       private final List<Candidate> candidates;
-
-       public TypeWideRefactorAnalyzer(IType type) {
-               this.type = type;
-               candidates = new LinkedList<Candidate>();
-       }
-
-       @Override
-       public List<Candidate> getResults() {
-               return candidates;
-       }
-
-       @Override
-       public void analyze() throws RefaktorAnalyzerException {
-               try {
-                       analyzeMethodsInType();
-               } catch (JavaModelException e) {
-                       RefaktorDebug.log(e);
-               }
-       }
-
-       private void analyzeMethodsInType() throws JavaModelException {
-               for (IMethod method: type.getMethods()) {
-                       analyzeMethod(method);
-               }
-       }
-
-       private void analyzeMethod(IMethod method) {
-               try {
-                       SearchBasedRefactorAnalyzer<Candidate> analyzer = 
-                                       new SearchBasedRefactorAnalyzer<Candidate>(method, new FavorNoUnfixesComparator<Candidate>());
-                       analyzer.analyze();
-                       candidates.add(analyzer.getCandidate());
-               } catch (NoTargetFoundException e) {
-                       // Ignoring
-               } catch (AssertionError err) {
-                       RefaktorDebug.log(err);
-               } catch (Exception e) {
-                       RefaktorDebug.log(e);
-               }
-       }
-}
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideRefactorer.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/analyzers/TypeWideRefactorer.java
new file mode 100644 (file)
index 0000000..d4bb56b
--- /dev/null
@@ -0,0 +1,86 @@
+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.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.change.SearchBasedExtractLocalVariableWithAssertsChanger;
+import no.uio.ifi.refaktor.change.changers.ExtractLocalVariableWithAssertsChanger;
+import no.uio.ifi.refaktor.debugging.RefaktorDebug;
+import no.uio.ifi.refaktor.handlers.SearchBasedExtractLocalVariableWithAssertsHandler;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.corext.refactoring.code.ExtractTempRefactoring;
+
+/**
+ * Responsible for analyzing all methods in a type for
+ * candidates to the Extract Local refactoring.
+ * 
+ * @author Anna Eilertsen
+ */
+public class TypeWideRefactorer<Candidate extends ExtractLocalVariableCandidate> implements AggregationAnalyzer<Candidate> {
+
+       private final IType type;
+       private final List<Candidate> candidates;
+
+       public TypeWideRefactorer(IType type) {
+               this.type = type;
+               candidates = new LinkedList<Candidate>();
+       }
+
+       @Override
+       public List<Candidate> getResults() {
+               return candidates;
+       }
+
+       @Override
+       public void analyze() throws RefaktorAnalyzerException {
+               try {
+                       refactorMethodsInType();
+               } catch (JavaModelException e) {
+                       RefaktorDebug.log(e);
+               }
+       }
+
+       private void refactorMethodsInType() throws JavaModelException {
+               for (IMethod method: type.getMethods()) {
+                       refactorMethod(method);
+               }
+       }
+
+       private void refactorMethod(IMethod method) {
+               try {
+                       
+                       SearchBasedExtractLocalVariableWithAssertsChanger changer = new SearchBasedExtractLocalVariableWithAssertsChanger(method);
+                       
+                       changer.checkPreconditions();
+                       changer.execute(new NullProgressMonitor());
+//                     
+//                     SearchBasedRefactorAnalyzer<Candidate> analyzer = 
+//                                     new SearchBasedRefactorAnalyzer<Candidate>(method, new FavorNoUnfixesComparator<Candidate>());
+//                     analyzer.analyze();
+//                     if(analyzer.getCandidate() != null){
+//                     //TODO rename alle the way down: analyze AND execute
+//                     Candidate candidate = analyzer.getCandidate();
+//                     String text = candidate.getTextSelection().getText();
+//                     new ExtractLocalVariableWithAssertsChanger(candidate).execute(new NullProgressMonitor());;
+//                     candidates.add(candidate);
+//                     }
+               } catch (NoTargetFoundException e) {
+                       // Ignoring
+               } catch (AssertionError err) {
+                       RefaktorDebug.log(err);
+               } catch (Exception e) {
+                       RefaktorDebug.log(e);
+               }
+       }
+}
index a90f1d0b8311ac375796d6eaa88c04bb26a76f8f..f2bbafbc1478174718182667150a0a23ebe837d0 100644 (file)
@@ -9,6 +9,7 @@ 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 no.uio.ifi.refaktor.forTests.Refactorer;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -23,7 +24,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
  *  
  *  @author Anna Eilertsen
  */
-public class AggregationAnalyzerChanger<Candidate extends RefactorCandidate> implements RefaktorChanger {
+public class AggregationAnalyzerChanger<Candidate extends RefactorCandidate> implements Refactorer{
 
        private AggregationAnalyzer<Candidate> analyzer;
 
@@ -31,24 +32,32 @@ public class AggregationAnalyzerChanger<Candidate extends RefactorCandidate> imp
                this.analyzer = analyzer;
        }
 
-       @Override
-       public void checkPreconditions() throws RefaktorAnalyzerException {
-               analyzer.analyze();
-       }
 
        @Override
-       public void execute(IProgressMonitor monitor) throws CoreException {
-               for (Candidate result: analyzer.getResults()) {
-                       try {
-                               RefaktorDebug.println();
-                               RefaktorDebug.println(this, result);
-                               RefactoringExecutor<Candidate> executor = new RefactoringExecutor<Candidate>(result);
-                               executor.execute(new NullProgressMonitor());
-                       } catch (RefactoringNotExecutedException e) {
-                               RefaktorDebug.log(e);
-                       } catch (RefaktorChangerException e) {
-                               RefaktorDebug.log(e);
-                       }
-               }
+       public void refactor(IProgressMonitor monitor) throws CoreException, RefaktorAnalyzerException {
+               analyzer.analyze();
+//             for (Candidate result: analyzer.getResults()) {
+//                     
+//                     //Debug: 
+////                   for (Candidate r: analyzer.getResults()) 
+//                     int index = 4;
+//                     Candidate r = analyzer.getResults().get(index);
+//                     System.out.println(r.toString() + ": " + r.getTextSelection().getText());
+//                     System.out.println("Currently refactoring " + result);
+//                     try {
+//                             RefaktorDebug.println();
+//                             RefaktorDebug.println(this, result);
+//                             RefactoringExecutor<Candidate> executor = new RefactoringExecutor<Candidate>(result);
+//                             executor.execute(new NullProgressMonitor());
+//                             
+//                     } catch (RefactoringNotExecutedException e) {
+//                             RefaktorDebug.log(e);
+//                     } catch (RefaktorChangerException e) {
+//                             RefaktorDebug.log(e);
+//                     }
+//                     r = analyzer.getResults().get(index);
+//                     System.out.println(r.toString() + ": " + r.getTextSelection().getText());
+//                     System.out.println();
+//             }
        }
 }
\ No newline at end of file
index 80637a382ef8541633d5c5c2d490f280f7b55116..95589a495891a96abdc23a861e0b5b11143bd10e 100644 (file)
@@ -34,6 +34,11 @@ public class ExtractAndMoveMethodAggregationAnalyzerChanger implements RefaktorC
        @Override
        public void execute(IProgressMonitor monitor) throws CoreException {
                for (ExtractAndMoveMethodCandidate result: analyzer.getResults()) {
+//                     //Debug: 
+//                     for (ExtractAndMoveMethodCandidate r: analyzer.getResults()) 
+//                                     System.out.println(r.toString() + ": " + r.getTextSelection().getText());
+//                     
+                       
                        try {
                                RefaktorDebug.println();
                                RefaktorDebug.println(this, result);
index 2d667be1e26a0760f9ed0bbef32c9005953378ee..cdbc3c4ae20e844a3130fb02f3bd765b52de9713 100644 (file)
@@ -8,6 +8,8 @@ import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jdt.core.dom.MethodDeclaration;
 import org.eclipse.jdt.internal.core.CompilationUnit;
 import org.eclipse.ltk.core.refactoring.Change;
+
+import no.uio.ifi.refaktor.analyze.candidates.ExtractLocalVariableCandidate;
 import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
 import no.uio.ifi.refaktor.refactorings.ExtractTempWithAssertsRefactoring;
 import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
@@ -36,6 +38,13 @@ public class ExtractLocalVariableWithAssertsChanger implements RefaktorChanger{
                refactorer = new ExtractTempWithAssertsRefactoring(textSelection.getCompilationUnit(), textSelection.getOffset(), textSelection.getLength(), textSelection.getText());
                refactorer.setTempName(newVariableName); 
        }
+       
+       public ExtractLocalVariableWithAssertsChanger(ExtractLocalVariableCandidate candidate) {
+               cstextsel = candidate.getTextSelection();
+               refactorer = new ExtractTempWithAssertsRefactoring(cstextsel.getCompilationUnit(), cstextsel.getOffset(), cstextsel.getLength(), cstextsel.getText());
+               refactorer.setTempName(generateName());
+       }
+       
        @Override
        public void checkPreconditions() throws RefaktorAnalyzerException {
                try {
index 3c01de3d97078a58b70b63b14afbe817fa00c8bc..6700b046a13ce149672f12f0c9cb91eca42ac1f5 100644 (file)
@@ -1,10 +1,11 @@
 package no.uio.ifi.refaktor.change.changers;
 
-import no.uio.ifi.refaktor.analyze.analyzers.ProjectWideRefactoringAnalyzer;
+import no.uio.ifi.refaktor.analyze.analyzers.ProjectWideRefactoring;
 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 no.uio.ifi.refaktor.forTests.Refactorer;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
@@ -16,33 +17,27 @@ import org.eclipse.jdt.core.IJavaProject;
  * 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}.
+ * @author Anna Eilertsen
  */
-public class ProjectWideExtractLocalVariableChanger implements RefaktorChanger {
+public class ProjectWideExtractLocalVariableChanger implements Refactorer {
 
        private AggregationAnalyzerChanger<ExtractLocalVariableCandidate> changer;
 
        public ProjectWideExtractLocalVariableChanger(IProject project) {
                if (project == null)
                        throw new IllegalArgumentException();
-               changer = new AggregationAnalyzerChanger<ExtractLocalVariableCandidate>(new ProjectWideRefactoringAnalyzer<ExtractLocalVariableCandidate>(project));
+               changer = new AggregationAnalyzerChanger<ExtractLocalVariableCandidate>(new ProjectWideRefactoring<ExtractLocalVariableCandidate>(project));
        }
 
        public ProjectWideExtractLocalVariableChanger(IJavaProject javaProject) {
                if (javaProject == null)
                        throw new IllegalArgumentException();
-               changer = new AggregationAnalyzerChanger<ExtractLocalVariableCandidate>(new ProjectWideRefactoringAnalyzer<ExtractLocalVariableCandidate>(javaProject));
+               changer = new AggregationAnalyzerChanger<ExtractLocalVariableCandidate>(new ProjectWideRefactoring<ExtractLocalVariableCandidate>(javaProject));
        }
 
        @Override
-       public void checkPreconditions() throws RefaktorAnalyzerException {
-               changer.checkPreconditions();
-       }
-
-       @Override
-       public void execute(IProgressMonitor monitor) throws CoreException {
-               changer.execute(monitor);
+       public void refactor(IProgressMonitor monitor) throws CoreException, RefaktorAnalyzerException {
+               changer.refactor(monitor);
        }
 
 }
diff --git a/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/forTests/Refactorer.java b/software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/forTests/Refactorer.java
new file mode 100644 (file)
index 0000000..fe87d66
--- /dev/null
@@ -0,0 +1,25 @@
+package no.uio.ifi.refaktor.forTests;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import no.uio.ifi.refaktor.analyze.exceptions.RefaktorAnalyzerException;
+
+/**
+ * This interface is an alterntive to RefaktorChanger
+ * 
+ * @author Anna Eilertsen
+ *
+ */
+public interface Refactorer {
+
+               
+               /**
+                * Analyzes and performs the refactoring
+                * 
+                * @param monitor The monitor to use in when dealing with workspace changes.
+                * @throws CoreException if anything goes wrong at the core level
+                *                      {@link RefaktorAnalyzerException} if a analyzis goes wrong
+                */
+               public void refactor(IProgressMonitor monitor) throws CoreException, RefaktorAnalyzerException;
+}