]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/refaktor-after/src/no/uio/ifi/refaktor/analyze/analyzers/TextSelectionsGeneratorHelper.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / refaktor-after / src / no / uio / ifi / refaktor / analyze / analyzers / TextSelectionsGeneratorHelper.java
1 package no.uio.ifi.refaktor.analyze.analyzers;
2
3 import java.util.HashSet;
4 import java.util.List;
5 import java.util.Set;
6
7 import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
8
9 import org.eclipse.jdt.core.ICompilationUnit;
10 import org.eclipse.jdt.core.dom.Statement;
11
12 public class TextSelectionsGeneratorHelper {
13
14         public final Set<CompilationUnitTextSelection> textSelections;
15         private final ICompilationUnit compilationUnit;
16         
17         private TextSelectionsGeneratorHelper(ICompilationUnit compilationUnit) {
18                 this.compilationUnit = compilationUnit;
19                 textSelections = new HashSet<CompilationUnitTextSelection>();
20         }
21
22         static Set<CompilationUnitTextSelection> generateSelectionsFromList(List<Statement> statements, ICompilationUnit compilationUnit) {
23                 return new TextSelectionsGeneratorHelper(compilationUnit).generateSelectionsFromList(statements);
24         }
25
26         private Set<CompilationUnitTextSelection> generateSelectionsFromList(List<Statement> statements) {
27                 for (Statement statement: statements)
28                         generateSelectionsFor(statement);
29                 return textSelections;
30         }
31
32         private void generateSelectionsFor(Statement statement) {
33                 Set<CompilationUnitTextSelection> newSelections = new HashSet<CompilationUnitTextSelection>();
34                 CompilationUnitTextSelection textSelectionFromStatement = createTextSelectionFromStatement(statement);
35                 textSelectionFromStatement.generated_1113821714625968249(newSelections, this);
36         }
37
38         private CompilationUnitTextSelection createTextSelectionFromStatement(Statement statement) {
39                 return new CompilationUnitTextSelection(compilationUnit, statement.getStartPosition(), statement.getLength());
40         }
41
42         public static CompilationUnitTextSelection addTwoTextSelections(
43                         CompilationUnitTextSelection textSelectionOne, CompilationUnitTextSelection textSelectionTwo) {
44                 int offset = Math.min(textSelectionOne.getOffset(), textSelectionTwo.getOffset());
45                 int length = Math.max(textSelectionOne.getEnd(), textSelectionTwo.getEnd()) - offset;
46                 return new CompilationUnitTextSelection(textSelectionOne.getCompilationUnit(), offset, length);
47         }
48
49 }