package org.objectstyle.wolips.wodclipse.core.refactoring; import java.lang.reflect.InvocationTargetException; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.operation.IRunnableWithProgress; import org.objectstyle.wolips.bindings.wod.IWodElement; import org.objectstyle.wolips.bindings.wod.IWodModel; import org.objectstyle.wolips.wodclipse.core.completion.WodParserCache; public class CleanWOBuilderRefactoring implements IRunnableWithProgress { private WodParserCache _cache; private boolean _forceRename; public CleanWOBuilderRefactoring(WodParserCache cache, boolean forceRename) { _cache = cache; _forceRename = forceRename; } public void run(IProgressMonitor monitor) throws InvocationTargetException { try { _cache.clearCache(); List<ElementRename> elementRenames = new LinkedList<ElementRename>(); Set<String> elementNames = new HashSet<String>(); IWodModel wodModel = _cache.getWodEntry().getModel(); for (IWodElement wodElement : wodModel.getElements()) { ElementRename elementRename = ElementRename.newUniqueName(wodModel, wodElement, elementNames, _forceRename); if (elementRename != null) { elementRenames.add(elementRename); } } new RenameElementsRefactoring(elementRenames, _cache).run(monitor); } catch (Exception e) { throw new InvocationTargetException(e); } } public static void run(WodParserCache cache, boolean forceRename, IProgressMonitor progressMonitor) throws InvocationTargetException, InterruptedException, CoreException { TemplateRefactoring.processHtmlAndWod(new CleanWOBuilderRefactoring(cache, forceRename), cache, progressMonitor); } }