package edu.ucsd.arcum.interpreter.transformation; import static org.eclipse.ltk.core.refactoring.RefactoringStatus.createFatalErrorStatus; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.ltk.core.refactoring.*; public class ArcumRefactoring extends Refactoring { private String message; private CodeRewriter rewriter; public ArcumRefactoring(String message, CodeRewriter cuRewriters) { this.message = message; this.rewriter = cuRewriters; } // First check for preconditions @Override public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { RefactoringStatus status = new RefactoringStatus(); try { pm.beginTask("Checking preconditions...", IProgressMonitor.UNKNOWN); if (false) { String message = String.format( "Compilation unit '%s' contains compile errors.", ""/*.getCompilationUnit().getElementName()*/); status.merge(createFatalErrorStatus(message)); } } finally { pm.done(); } return status; } // Final check for preconditions @Override public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { RefactoringStatus status = new RefactoringStatus(); return status; } @Override public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException { try { pm.beginTask("Creating change...", IProgressMonitor.UNKNOWN); Change[] changes = rewriter.getChanges(); CompositeChange result = new CompositeChange(message, changes ); return result; } finally { pm.done(); } } @Override public String getName() { return message; } }