package com.thebrokenrail.freshcoffee.util; import com.thebrokenrail.freshcoffee.util.limit.LimitUtil; public final class JavaVersionUtil { private static boolean isNewer(int[] one, int[] two) { int length = Math.min(one.length, two.length); for (int i = 0; i < length; i++) { if (one[i] > two[i]) { return true; } } return false; } private static int[] toIntArray(String versionStr) { String[] versionArr = versionStr.split("[.+]"); boolean invalid = false; int[] version = new int[versionArr.length]; for (int i = 0; i < versionArr.length; i++) { try { version[i] = Integer.parseInt(versionArr[i]); } catch (NumberFormatException e) { invalid = true; break; } } return invalid ? null : version; } public static String getNewest(String[] list) { String newest = null; for (String jdk : list) { int[] version = toIntArray(jdk); if (version != null) { boolean newer = true; if (version[0] < LimitUtil.getMinimumJavaVersion().getValue() || version[0] > LimitUtil.getMaximumJavaVersion().getValue() || (newest != null && !isNewer(toIntArray(newest), version))) { newer = false; } if (newer) { newest = jdk; } } } return newest; } }