53 lines
1.5 KiB
Java
53 lines
1.5 KiB
Java
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;
|
|
}
|
|
}
|