package de.invesdwin.util.math; import javax.annotation.concurrent.Immutable; import de.invesdwin.norva.apt.staticfacade.StaticFacadeDefinition; import de.invesdwin.util.lang.ADelegateComparator; import de.invesdwin.util.math.internal.AShortsStaticFacade; import de.invesdwin.util.math.internal.CheckedCastShorts; import de.invesdwin.util.math.internal.CheckedCastShortsObj; @StaticFacadeDefinition(name = "de.invesdwin.util.math.internal.AShortsStaticFacade", targets = { CheckedCastShorts.class, CheckedCastShortsObj.class, com.google.common.primitives.Shorts.class }) @Immutable public final class Shorts extends AShortsStaticFacade { public static final ADelegateComparator<Short> COMPARATOR = new ADelegateComparator<Short>() { @Override protected Comparable<?> getCompareCriteria(final Short e) { return e; } }; private Shorts() {} public static Short min(final Short... values) { Short minValue = null; for (final Short value : values) { minValue = min(minValue, value); } return minValue; } public static Short min(final Short value1, final Short value2) { if (value1 == null) { return value2; } else if (value2 == null) { return value1; } if (value1 < value2) { return value1; } else { return value2; } } public static Short max(final Short... values) { Short maxValue = null; for (final Short value : values) { maxValue = max(maxValue, value); } return maxValue; } public static Short max(final Short value1, final Short value2) { if (value1 == null) { return value2; } else if (value2 == null) { return value1; } if (value1 > value2) { return value1; } else { return value2; } } public static Short between(final Short value, final Short min, final Short max) { return max(min(value, max), min); } }