remove obsolete dependent facet from module (jsf)

This commit is contained in:
Serega Vasiliev
2013-10-01 12:19:31 +02:00
parent 7ee2bbad91
commit be00f8e12c
2 changed files with 18 additions and 16 deletions
@@ -19,11 +19,10 @@ package com.intellij.conversion;
import com.intellij.facet.FacetManagerImpl;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.serialization.facet.JpsFacetSerializer;
import java.util.List;
import java.util.Collection;
public class DetachFacetConversionProcessor extends ConversionProcessor<ModuleSettings>{
public class DetachFacetConversionProcessor extends ConversionProcessor<ModuleSettings> {
private final String[] myFacetNames;
public DetachFacetConversionProcessor(@NotNull String... names) {
@@ -44,20 +43,15 @@ public class DetachFacetConversionProcessor extends ConversionProcessor<ModuleSe
public void process(ModuleSettings moduleSettings) throws CannotConvertException {
final Element facetManagerElement = moduleSettings.getComponentElement(FacetManagerImpl.COMPONENT_NAME);
if (facetManagerElement == null) return;
final Element[] facetElements = getChildren(facetManagerElement, JpsFacetSerializer.FACET_TAG);
for (Element facetElement : facetElements) {
final String facetType = facetElement.getAttributeValue(JpsFacetSerializer.TYPE_ATTRIBUTE);
for (String facetName : myFacetNames) {
if (facetName.equals(facetType)) {
facetElement.detach();
}
for (String facetName : myFacetNames) {
for (Element element : getElements(moduleSettings, facetName)) {
element.detach();
}
}
}
private static Element[] getChildren(Element parent, final String name) {
final List<?> children = parent.getChildren(name);
return children.toArray(new Element[children.size()]);
private static Element[] getElements(ModuleSettings moduleSettings, String facetName) {
Collection<? extends Element> elements = moduleSettings.getFacetElements(facetName);
return elements.toArray(new Element[elements.size()]);
}
}
@@ -76,12 +76,20 @@ public class ModuleSettingsImpl extends ComponentManagerSettingsImpl implements
public Collection<? extends Element> getFacetElements(@NotNull String facetTypeId) {
final Element facetManager = getComponentElement(FacetManagerImpl.COMPONENT_NAME);
final ArrayList<Element> elements = new ArrayList<Element>();
for (Element child : JDOMUtil.getChildren(facetManager, JpsFacetSerializer.FACET_TAG)) {
addFacetTypes(facetTypeId, facetManager, elements);
return elements;
}
private static void addFacetTypes(@NotNull String facetTypeId, @Nullable Element parent, @NotNull ArrayList<Element> elements) {
for (Element child : JDOMUtil.getChildren(parent, JpsFacetSerializer.FACET_TAG)) {
if (facetTypeId.equals(child.getAttributeValue(JpsFacetSerializer.TYPE_ATTRIBUTE))) {
elements.add(child);
} else {
addFacetTypes(facetTypeId, child, elements);
}
}
return elements;
}
@Override