/* * 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.setting; 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.AImported; import org.rf.ide.core.testdata.model.table.setting.AImported.Type; import org.rf.ide.core.testdata.model.table.setting.LibraryAlias; import org.rf.ide.core.testdata.model.table.setting.LibraryImport; 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.RobotArtifactsValidator.ModelUnitValidator; import org.robotframework.ide.eclipse.main.plugin.project.build.RobotProblem; import org.robotframework.ide.eclipse.main.plugin.project.build.causes.GeneralSettingsProblem; public class LibraryAliasesDeclarationUpperCaseValidator implements ModelUnitValidator { private final IFile file; private final ProblemsReportingStrategy reporter; private final RobotSettingsSection section; public LibraryAliasesDeclarationUpperCaseValidator(final IFile file, final ProblemsReportingStrategy reporter, final RobotSettingsSection section) { this.file = file; this.reporter = reporter; this.section = section; } @Override public void validate(final IProgressMonitor monitor) throws CoreException { final SettingTable settingTable = section.getLinkedElement(); if (settingTable.isPresent()) { for (final AImported imported : settingTable.getImports()) { if (imported.getType() == Type.LIBRARY) { final LibraryImport libImport = (LibraryImport) imported; final LibraryAlias alias = libImport.getAlias(); if (alias.isPresent()) { final RobotToken declaration = alias.getDeclaration(); final String raw = declaration.getRaw(); if (!isUpperCaseAliasesWITH_NAME(raw)) { reporter.handleProblem(RobotProblem .causedBy(GeneralSettingsProblem.LIBRARY_WITH_NAME_NOT_UPPER_CASE_COMBINATION) .formatMessageWith(raw), file, declaration); } } } } } } private final boolean isUpperCaseAliasesWITH_NAME(final String aliasesText) { boolean result = true; final char[] aliasTextCA = aliasesText.toCharArray(); for (final char c : aliasTextCA) { if (Character.isLetter(c)) { if (Character.isLowerCase(c)) { result = false; break; } } } return result; } }