package org.jetbrains.plugins.cucumber.java.steps;
import org.jetbrains.plugins.cucumber.java.config.CucumberConfigUtil;
import org.jetbrains.plugins.cucumber.psi.GherkinFile;
import org.jetbrains.plugins.cucumber.psi.GherkinStep;
import static java.lang.String.format;
public class AnnotationPackageProvider {
private static final String CUCUMBER_1_1_ANNOTATION_BASE_PACKAGE = "cucumber.api.java";
private static final String CUCUMBER_1_0_ANNOTATION_BASE_PACKAGE = "cucumber.annotation";
public AnnotationPackageProvider() {
this(new CucumberVersionProvider());
}
public AnnotationPackageProvider(CucumberVersionProvider cucumberVersionProvider) {
myVersionProvider = cucumberVersionProvider;
}
public String getAnnotationPackageFor(GherkinStep step) {
return format("%s.%s", annotationBasePackage(step), locale(step));
}
private static String locale(GherkinStep step) {
GherkinFile file = (GherkinFile)step.getContainingFile();
return file.getLocaleLanguage().replaceAll("-", "_");
}
private final CucumberVersionProvider myVersionProvider;
private String annotationBasePackage(GherkinStep step) {
final String version = myVersionProvider.getVersion(step);
if (version != null && version.compareTo(CucumberConfigUtil.CUCUMBER_VERSION_1_1) < 0) {
return CUCUMBER_1_0_ANNOTATION_BASE_PACKAGE;
}
return CUCUMBER_1_1_ANNOTATION_BASE_PACKAGE;
}
}