/* * 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.versiondependent.setting; import java.util.List; 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.SettingTable; import org.rf.ide.core.testdata.model.table.setting.Metadata; import org.rf.ide.core.testdata.text.read.recognizer.RobotToken; import org.robotframework.ide.eclipse.main.plugin.model.RobotSettingsSection; import org.robotframework.ide.eclipse.main.plugin.project.build.ProblemsReportingStrategy; import org.robotframework.ide.eclipse.main.plugin.project.build.RobotProblem; import org.robotframework.ide.eclipse.main.plugin.project.build.causes.IProblemCause; import org.robotframework.ide.eclipse.main.plugin.project.build.validation.setting.OldMetaSynataxHelper; import org.robotframework.ide.eclipse.main.plugin.project.build.validation.versiondependent.VersionDependentModelUnitValidator; public abstract class AMetadataKeyInColumnOfSettingValidator extends VersionDependentModelUnitValidator { private final IFile file; private final RobotSettingsSection section; private final ProblemsReportingStrategy reporter; private final OldMetaSynataxHelper oldMetaHelper; public AMetadataKeyInColumnOfSettingValidator(final IFile file, final RobotSettingsSection section, final ProblemsReportingStrategy reporter) { this.file = file; this.section = section; this.reporter = reporter; this.oldMetaHelper = new OldMetaSynataxHelper(); } @Override public void validate(final IProgressMonitor monitor) throws CoreException { final SettingTable table = section.getLinkedElement(); final List<Metadata> metadatas = table.getMetadatas(); for (final Metadata metadata : metadatas) { if (oldMetaHelper.isOldSyntax(metadata, table)) { final RobotToken settingDeclaration = metadata.getDeclaration(); reporter.handleProblem( RobotProblem.causedBy(getSettingProblemId()).formatMessageWith(settingDeclaration.getText()), file, settingDeclaration); } } } public abstract IProblemCause getSettingProblemId(); }