public String getFamilyName() {
return getName();
}
public void applyFix(@NotNull final Project project, @NotNull ProblemDescriptor descriptor) {
final GherkinScenarioOutlineImpl outline = (GherkinScenarioOutlineImpl) descriptor.getPsiElement();
final PsiFile featureFile = outline.getContainingFile();
if (!FileModificationService.getInstance().prepareFileForWrite(featureFile)) {
return;
}
final String language = GherkinKeywordTable.getFeatureLanguage(featureFile);
final GherkinKeywordTable keywordsTable = GherkinKeywordTable.getKeywordsTable(featureFile, project);
final StringBuilder buff = new StringBuilder();
buff.append(keywordsTable.getScenarioOutlineKeyword()).append(": boo\n");
buff.append(keywordsTable.getExampleSectionKeyword()).append(":\n|");
final List<String> params = new ArrayList<String>();
final PsiElement[] elements = outline.getChildren();
for (PsiElement element : elements) {
if (!(element instanceof GherkinStep)) {
continue;
}
final GherkinStep step = (GherkinStep)element;
final List<String> substitutions = step.getParamsSubstitutions();
for (String substitution : substitutions) {
if (!params.contains(substitution)) {
params.add(substitution);
}
}
}
if (params.isEmpty()) {
buff.append(" |");
} else {
for (String substitution : params) {
buff.append(' ').append(substitution).append(" |");
}
}
final String text = buff.toString();
GherkinScenarioOutline fakeScenario = (GherkinScenarioOutline)GherkinElementFactory.createScenarioFromText(project, language, text);
final GherkinExamplesBlock fakeExampleSection = fakeScenario.getExamplesBlocks().get(0);
assert fakeExampleSection != null;
GherkinExamplesBlockImpl addedSection = (GherkinExamplesBlockImpl)outline.add(fakeExampleSection);
addedSection = CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(addedSection);
final GherkinTable table = addedSection.getTable();
assert table != null;
final GherkinTableRow headerRow = table.getHeaderRow();
assert headerRow != null;