package com.google.jstestdriver.idea.execution; import com.intellij.conversion.*; import org.jdom.Element; import org.jetbrains.annotations.NotNull; public class JstdRunConfigurationConverterProvider extends ConverterProvider { private static final String OLD_JSTD_TYPE_VALUE = "JSTestDriver:ConfigurationType"; private static final String ATTR_TYPE_NAME = "type"; public JstdRunConfigurationConverterProvider() { super("jstestdriver-run-configurations-converter"); } @NotNull @Override public String getConversionDescription() { return "JsTestDriver run configurations will be converted into a new format"; } @NotNull @Override public ProjectConverter createConverter(@NotNull ConversionContext context) { return new ProjectConverter() { @Override public ConversionProcessor<RunManagerSettings> createRunConfigurationsConverter() { return new ConversionProcessor<RunManagerSettings>() { @Override public boolean isConversionNeeded(RunManagerSettings settings) { for (Element element : settings.getRunConfigurations()) { if (!"true".equals(element.getAttributeValue("default"))) { String type = element.getAttributeValue(ATTR_TYPE_NAME); if (OLD_JSTD_TYPE_VALUE.equals(type)) { return true; } } } return false; } @Override public void process(RunManagerSettings settings) throws CannotConvertException { for (Element element : settings.getRunConfigurations()) { String type = element.getAttributeValue(ATTR_TYPE_NAME); if (OLD_JSTD_TYPE_VALUE.equals(type)) { element.setAttribute(ATTR_TYPE_NAME, JstdConfigurationType.ID); } } } }; } }; } }