package hudson.plugins.analysis.core; import java.io.Serializable; import org.apache.commons.lang.StringUtils; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import static hudson.plugins.analysis.util.ThresholdValidator.*; /** * Data object that simply stores the thresholds. * * @author Ulli Hafner */ // CHECKSTYLE:OFF @SuppressFBWarnings("") @SuppressWarnings("all") @ExportedBean public class Thresholds implements Serializable { @Exported public String unstableTotalAll = StringUtils.EMPTY; @Exported public String unstableTotalHigh = StringUtils.EMPTY; @Exported public String unstableTotalNormal = StringUtils.EMPTY; @Exported public String unstableTotalLow = StringUtils.EMPTY; @Exported public String unstableNewAll = StringUtils.EMPTY; @Exported public String unstableNewHigh = StringUtils.EMPTY; @Exported public String unstableNewNormal = StringUtils.EMPTY; @Exported public String unstableNewLow = StringUtils.EMPTY; @Exported public String failedTotalAll = StringUtils.EMPTY; @Exported public String failedTotalHigh = StringUtils.EMPTY; @Exported public String failedTotalNormal = StringUtils.EMPTY; @Exported public String failedTotalLow = StringUtils.EMPTY; @Exported public String failedNewAll = StringUtils.EMPTY; @Exported public String failedNewHigh = StringUtils.EMPTY; @Exported public String failedNewNormal = StringUtils.EMPTY; @Exported public String failedNewLow = StringUtils.EMPTY; /** * Returns whether at least one of the thresholds is set. * * @return <code>true</code> if at least one of the thresholds is set, * <code>false</code> if no threshold is set */ public boolean isValid() { return isValid(unstableTotalAll) || isValid(unstableTotalHigh) || isValid(unstableTotalNormal) || isValid(unstableTotalLow) || isValid(unstableNewAll) || isValid(unstableNewHigh) || isValid(unstableNewNormal) || isValid(unstableNewLow) || isValid(failedTotalAll) || isValid(failedTotalHigh) || isValid(failedTotalNormal) || isValid(failedTotalLow) || isValid(failedNewAll) || isValid(failedNewHigh) || isValid(failedNewNormal) || isValid(failedNewLow); } /** * Returns whether the provided threshold string parameter is a valid * threshold number, i.e. an integer value greater or equal zero. * * @param threshold * string representation of the threshold value * @return <code>true</code> if the provided threshold string parameter is a * valid number >= 0 */ public static boolean isValid(final String threshold) { if (StringUtils.isNotBlank(threshold)) { try { return Integer.valueOf(threshold) >= 0; } catch (NumberFormatException exception) { // not valid } } return false; } /** * Returns a lower bound of warnings that will guarantee that a build * neither is unstable or failed. * * @return the number of warnings */ public int getLowerBound() { if (isValid(unstableTotalAll)) { return convert(unstableTotalAll); } if (isValid(failedTotalAll)) { return convert(failedTotalAll); } return 0; } }