package org.batfish.common;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public final class Version {
private static final String UNKNOWN_VERSION = "0.0.0";
private static final String VERSION = "0.19.0";
public static void checkCompatibleVersion(String myName, String otherName,
String otherVersion) {
if (otherVersion == null) {
otherVersion = UNKNOWN_VERSION;
}
if (!isCompatibleVersion(myName, otherName, otherVersion)) {
throw new IllegalArgumentException(otherName + " version: '"
+ otherVersion + "' is not compatible with " + myName
+ " version: '" + VERSION + "'");
}
}
public static String getVersion() {
return VERSION;
}
public static List<Integer> getVersionBreakdown(String name,
String version) {
List<Integer> result;
try {
List<String> parts = Arrays.asList(version.split("\\."));
result = parts.stream().map(str -> Integer.parseInt(str))
.collect(Collectors.toList());
}
catch (Exception e) {
throw new BatfishException(
name + " version has bad format: " + version);
}
if (result.size() != 3) {
throw new BatfishException(
name + " version does not have 3 subparts: " + version);
}
return result;
}
public static boolean isCompatibleVersion(String myName, String otherName,
String otherVersion) {
if (otherVersion == null) {
otherVersion = UNKNOWN_VERSION;
}
List<Integer> myBits = getVersionBreakdown(myName, VERSION);
List<Integer> otherBits = getVersionBreakdown(otherName, otherVersion);
boolean compatible = myBits.get(0).equals(otherBits.get(0))
&& myBits.get(1).equals(otherBits.get(1));
return compatible;
}
private Version() {
}
}