/*
* Copyright 2016 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.project.build.validation.keywords;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.rf.ide.core.testdata.model.table.ARobotSectionTable;
import org.rf.ide.core.testdata.model.table.KeywordTable;
import org.rf.ide.core.testdata.model.table.TableHeader;
import org.rf.ide.core.testdata.text.read.recognizer.RobotToken;
import org.robotframework.ide.eclipse.main.plugin.model.RobotKeywordsSection;
import org.robotframework.ide.eclipse.main.plugin.project.build.ProblemsReportingStrategy;
import org.robotframework.ide.eclipse.main.plugin.project.build.RobotArtifactsValidator.ModelUnitValidator;
import org.robotframework.ide.eclipse.main.plugin.project.build.RobotProblem;
import org.robotframework.ide.eclipse.main.plugin.project.build.causes.KeywordsProblem;
public class DeprecatedKeywordHeaderAlias implements ModelUnitValidator {
private final IFile file;
private final ProblemsReportingStrategy reporter;
private final RobotKeywordsSection section;
public DeprecatedKeywordHeaderAlias(final IFile file, final ProblemsReportingStrategy reporter,
final RobotKeywordsSection section) {
this.file = file;
this.reporter = reporter;
this.section = section;
}
@Override
public void validate(final IProgressMonitor monitor) throws CoreException {
final KeywordTable keywords = section.getLinkedElement();
if (keywords.isPresent()) {
for (final TableHeader<? extends ARobotSectionTable> th : keywords.getHeaders()) {
final RobotToken declaration = th.getDeclaration();
final String raw = declaration.getRaw();
final String rawWithoutWhiteSpaces = raw.toLowerCase().replaceAll("\\s", "");
if (rawWithoutWhiteSpaces.toLowerCase().contains("userkeyword")) {
reporter.handleProblem(RobotProblem.causedBy(KeywordsProblem.USER_KEYWORD_TABLE_HEADER_SYNONYM)
.formatMessageWith(raw), file, declaration);
}
}
}
}
}