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.ACharactersStaticFacade; import de.invesdwin.util.math.internal.CheckedCastCharacters; import de.invesdwin.util.math.internal.CheckedCastCharactersObj; @StaticFacadeDefinition(name = "de.invesdwin.util.math.internal.ACharactersStaticFacade", targets = { CheckedCastCharacters.class, CheckedCastCharactersObj.class, com.google.common.primitives.Chars.class }) @Immutable public final class Characters extends ACharactersStaticFacade { public static final ADelegateComparator<Character> COMPARATOR = new ADelegateComparator<Character>() { @Override protected Comparable<?> getCompareCriteria(final Character e) { return e; } }; private Characters() {} public static Character min(final Character... times) { Character minTime = null; for (final Character time : times) { minTime = min(minTime, time); } return minTime; } public static Character min(final Character time1, final Character time2) { if (time1 == null) { return time2; } else if (time2 == null) { return time1; } if (time1 < time2) { return time1; } else { return time2; } } public static Character max(final Character... times) { Character maxTime = null; for (final Character time : times) { maxTime = max(maxTime, time); } return maxTime; } public static Character max(final Character time1, final Character time2) { if (time1 == null) { return time2; } else if (time2 == null) { return time1; } if (time1 > time2) { return time1; } else { return time2; } } public static Character between(final Character value, final Character min, final Character max) { return max(min(value, max), min); } }