package hudson.plugins.analysis.util.model; import java.util.ArrayList; import java.util.Collection; import org.apache.commons.lang.StringUtils; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter; import hudson.plugins.analysis.Messages; /** * Defines the priority of an annotation. * * @author Ulli Hafner */ public enum Priority { /** High priority. */ HIGH, /** Normal priority. */ NORMAL, /** Low priority. */ LOW; /** * Converts a String priority to an actual enumeration value. * * @param priority * priority as a String * @return enumeration value. */ public static Priority fromString(final String priority) { return Priority.valueOf(StringUtils.upperCase(priority)); } /** * Converts priorities for {@link XStream} deserialization. */ public static final class PriorityConverter extends AbstractSingleValueConverter { /** {@inheritDoc} */ @SuppressWarnings("rawtypes") @Override public boolean canConvert(final Class type) { return type.equals(Priority.class); } /** {@inheritDoc} */ @Override public Object fromString(final String str) { return Priority.valueOf(str); } } /** * Returns a localized description of this priority. * * @return localized description of this priority */ public String getLocalizedString() { if (this == HIGH) { return Messages.Priority_High(); } if (this == LOW) { return Messages.Priority_Low(); } return Messages.Priority_Normal(); } /** * Returns a long localized description of this priority. * * @return long localized description of this priority */ public String getLongLocalizedString() { if (this == Priority.HIGH) { return Messages.HighPriority(); } if (this == Priority.LOW) { return Messages.LowPriority(); } return Messages.NormalPriority(); } /** * Gets the priorities starting from the specified priority to * {@link Priority#HIGH}. * * @param minimumPriority * the minimum priority * @return the priorities starting from the specified priority */ public static Collection<Priority> collectPrioritiesFrom(final Priority minimumPriority) { ArrayList<Priority> priorities = new ArrayList<Priority>(); priorities.add(Priority.HIGH); if (minimumPriority == Priority.NORMAL) { priorities.add(Priority.NORMAL); } if (minimumPriority == Priority.LOW) { priorities.add(Priority.NORMAL); priorities.add(Priority.LOW); } return priorities; } }