Skip to content

Commit 6460a50

Browse files
committed
Work.
1 parent c9d9b00 commit 6460a50

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

edu.cuny.hunter.streamrefactoring.core/src/edu/cuny/hunter/streamrefactoring/core/analysis/Stream.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@
3535
import org.eclipse.jdt.core.dom.MethodInvocation;
3636
import org.eclipse.jdt.core.dom.SimpleName;
3737
import org.eclipse.jdt.core.dom.TypeDeclaration;
38+
import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
3839
import org.eclipse.jdt.internal.corext.dom.ASTNodes;
3940
import org.eclipse.jdt.internal.corext.dom.Bindings;
4041
import org.eclipse.jdt.internal.corext.refactoring.base.JavaStatusContext;
42+
import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite;
4143
import org.eclipse.jdt.internal.corext.util.JdtFlags;
4244
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
4345
import org.eclipse.ltk.core.refactoring.RefactoringStatusContext;
@@ -769,4 +771,22 @@ public String toString() {
769771
builder.append("]");
770772
return builder.toString();
771773
}
774+
775+
public void convertToParallel(CompilationUnitRewrite rewrite) {
776+
LOGGER.info("Converting to parallel.");
777+
MethodInvocation creation = this.getCreation();
778+
ASTRewrite astRewrite = rewrite.getASTRewrite();
779+
SimpleName newMethodName = creation.getAST().newSimpleName("parallelStream");
780+
astRewrite.replace(creation.getName(), newMethodName, null);
781+
}
782+
783+
public void convertToSequential(CompilationUnitRewrite rewrite) {
784+
// TODO Auto-generated method stub
785+
LOGGER.info("Converting to sequential.");
786+
}
787+
788+
public void unorder(CompilationUnitRewrite rewrite) {
789+
// TODO Auto-generated method stub
790+
LOGGER.info("Unordering.");
791+
}
772792
}

edu.cuny.hunter.streamrefactoring.core/src/edu/cuny/hunter/streamrefactoring/core/messages/Messages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class Messages extends NLS {
2222
public static String PreconditionFailed;
2323
public static String RefactoringNotPossible;
2424
public static String StreamsNotSpecified;
25+
public static String NoStreamsToOptimize;
2526

2627
static {
2728
// initialize resource bundle

edu.cuny.hunter.streamrefactoring.core/src/edu/cuny/hunter/streamrefactoring/core/messages/messages.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ StreamsNotSpecified=No streams to refactor.
55
CheckingPreconditions=Checking preconditions (may take a while)...
66
CompilingSource=Compiling source ...
77
CreatingChange=Creating change...
8-
NoStreamsHavePassedThePreconditions=No streams have passed preconditions.
8+
NoStreamsHavePassedThePreconditions=No streams have passed preconditions.
9+
NoStreamsToOptimize=No streams to optimize.

edu.cuny.hunter.streamrefactoring.core/src/edu/cuny/hunter/streamrefactoring/core/refactorings/OptimizeStreamsRefactoringProcessor.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.eclipse.ltk.core.refactoring.Change;
4444
import org.eclipse.ltk.core.refactoring.GroupCategory;
4545
import org.eclipse.ltk.core.refactoring.GroupCategorySet;
46+
import org.eclipse.ltk.core.refactoring.NullChange;
4647
import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
4748
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
4849
import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
@@ -56,6 +57,7 @@
5657
import edu.cuny.hunter.streamrefactoring.core.analysis.PreconditionFailure;
5758
import edu.cuny.hunter.streamrefactoring.core.analysis.Stream;
5859
import edu.cuny.hunter.streamrefactoring.core.analysis.StreamAnalyzer;
60+
import edu.cuny.hunter.streamrefactoring.core.analysis.TransformationAction;
5961
import edu.cuny.hunter.streamrefactoring.core.descriptors.OptimizeStreamRefactoringDescriptor;
6062
import edu.cuny.hunter.streamrefactoring.core.messages.Messages;
6163
import edu.cuny.hunter.streamrefactoring.core.utils.TimeCollector;
@@ -337,9 +339,33 @@ public void clearCaches() {
337339
@Override
338340
public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
339341
try {
340-
pm.beginTask(Messages.CreatingChange, 1);
341-
342342
final TextEditBasedChangeManager manager = new TextEditBasedChangeManager();
343+
Set<Stream> optimizableStreams = this.getOptimizableStreams();
344+
345+
if (optimizableStreams.isEmpty())
346+
return new NullChange(Messages.NoStreamsToOptimize);
347+
348+
pm.beginTask("Transforming streams ...", optimizableStreams.size());
349+
for (Stream stream : optimizableStreams) {
350+
CompilationUnitRewrite rewrite = getCompilationUnitRewrite(stream.getEnclosingEclipseMethod().getCompilationUnit(),
351+
stream.getEnclosingCompilationUnit());
352+
353+
// for each stream transformation.
354+
for (TransformationAction action : stream.getActions()) {
355+
switch (action) {
356+
case CONVERT_TO_PARALLEL:
357+
stream.convertToParallel(rewrite);
358+
break;
359+
case CONVERT_TO_SEQUENTIAL:
360+
stream.convertToSequential();
361+
break;
362+
case UNORDER:
363+
stream.unorder(rewrite);
364+
break;
365+
}
366+
}
367+
pm.worked(1);
368+
}
343369

344370
// save the source changes.
345371
ICompilationUnit[] units = this.getCompilationUnitToCompilationUnitRewriteMap().keySet().stream()

0 commit comments

Comments
 (0)