package com.baselet.plugin.refactoring;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.CompositeChange;
/**
* Base class for re
*/
public class UmletRefactoringProcessorManager {
private final List<UmletRefactoringProcessor> processors = new ArrayList<UmletRefactoringProcessor>();
private final List<Change> additionalChanges = new ArrayList<Change>();
public void add(UmletRefactoringProcessor processor) {
processors.add(processor);
}
public void add(Change change) {
additionalChanges.add(change);
}
public Change createChange(IProgressMonitor pm) throws CoreException {
CompositeChange change = new CompositeChange("Umlet");
for (UmletRefactoringProcessor processor : processors) {
List<? extends Change> changes = processor.createChange(pm);
if (changes != null) {
change.addAll(changes.toArray(new Change[] {}));
}
}
change.addAll(additionalChanges.toArray(new Change[] {}));
if (change.getChildren().length == 0) {
return null;
}
else {
return change;
}
}
}