package hudson.plugins.analysis.views;
import hudson.model.AbstractBuild;
import hudson.plugins.analysis.util.model.AnnotationContainer;
import hudson.plugins.analysis.util.model.Priority;
/**
* Creates priority detail objects.
*
* @author Ulli Hafner
*/
public class PriorityDetailFactory {
/** The detail factory to use. */
private final DetailFactory detailFactory;
/**
* Creates a new instance of {@link PriorityDetailFactory}.
*
* @param detailFactory
* the detail factory to use
*/
public PriorityDetailFactory(final DetailFactory detailFactory) {
this.detailFactory = detailFactory;
}
/**
* Returns whether the provided value is a valid priority.
*
* @param value the value to check
* @return <code>true</code> if the provided value is a valid priority, <code>false</code> otherwise
*/
public boolean isPriority(final String value) {
for (Priority priority : Priority.values()) {
if (priority.toString().equalsIgnoreCase(value)) {
return true;
}
}
return false;
}
/**
* Creates a new priorities detail object.
*
* @param priority
* the priority to show
* @param owner
* owner of the build
* @param container
* annotation container
* @param header
* header to show
* @param defaultEncoding
* the default encoding to be used when reading and parsing files
* @return the priority detail
*/
public PrioritiesDetail create(final String priority, final AbstractBuild<?, ?> owner, final AnnotationContainer container, final String defaultEncoding, final String header) {
if (Priority.HIGH.toString().equalsIgnoreCase(priority)) {
return createPrioritiesDetail(Priority.HIGH, owner, container, defaultEncoding, header);
}
else if (Priority.NORMAL.toString().equalsIgnoreCase(priority)) {
return createPrioritiesDetail(Priority.NORMAL, owner, container, defaultEncoding, header);
}
else if (Priority.LOW.toString().equalsIgnoreCase(priority)) {
return createPrioritiesDetail(Priority.LOW, owner, container, defaultEncoding, header);
}
throw new IllegalArgumentException("Wrong priority provided: " + priority);
}
/**
* Creates a new priorities detail.
*
* @param priority
* the priority to show
* @param owner
* owner of the build
* @param container
* annotation container
* @param defaultEncoding
* the default encoding to be used when reading and parsing files
* @param header
* header to show
* @return the priority detail
*/
protected PrioritiesDetail createPrioritiesDetail(final Priority priority, final AbstractBuild<?, ?> owner, final AnnotationContainer container,
final String defaultEncoding, final String header) {
return new PrioritiesDetail(owner, detailFactory, container.getAnnotations(priority), priority, defaultEncoding, header);
}
}