package com.technophobia.substeps.document.content.view.hover.model.javadoc;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMethod;
import com.technophobia.eclipse.javadoc.ProjectJavaDocLocator;
import com.technophobia.substeps.glossary.StepDescriptor;
import com.technophobia.substeps.model.SubSteps.Step;
import com.technophobia.substeps.supplier.Transformer;
public class JavaDocForSourceStepLocator implements ProjectJavaDocLocator<StepImplTypeContext> {
private final Transformer<StepImplTypeContext, IMethod> methodForStepLocator;
private final Transformer<IMethod, String> javaDocForSourceMethodTransformer;
public JavaDocForSourceStepLocator(final Transformer<StepDescriptor, String> stepDescriptorToStringTransformer) {
// When looking at annotations for IMethods in source types, the
// annotations use just the simple name
this(new DefaultMethodForStepLocator(Step.class.getSimpleName()), new ASTParsedMethodUnitJavadocCollector(
stepDescriptorToStringTransformer));
}
public JavaDocForSourceStepLocator(final Transformer<StepImplTypeContext, IMethod> methodForStepLocator,
final Transformer<IMethod, String> javaDocForSourceMethodTransformer) {
this.methodForStepLocator = methodForStepLocator;
this.javaDocForSourceMethodTransformer = javaDocForSourceMethodTransformer;
}
@Override
public String formattedJavaDocFor(final StepImplTypeContext stepImplTypeContext, final IJavaProject project) {
final IMethod method = methodFor(stepImplTypeContext);
if (method != null) {
return javaDocForSourceMethodTransformer.from(method);
}
return null;
}
private IMethod methodFor(final StepImplTypeContext stepImplTypeContext) {
return methodForStepLocator.from(stepImplTypeContext);
}
}