package ddth.dasp.common.utils;
import java.util.regex.Pattern;
public class VersionUtils {
/**
* Compares two version strings.
*
* @param v1
* String
* @param v2
* String
* @return int
*/
public static int compareVersions(String v1, String v2) {
String s1 = normalisedVersion(v1);
String s2 = normalisedVersion(v2);
return s1 != null ? (s2 != null ? s1.compareTo(s2) : 1) : (s2 != null ? -1 : 0);
}
/**
* Normalizes a version string with default separator and max width.
*
* @param version
* String
* @return String
*/
public static String normalisedVersion(String version) {
return normalisedVersion(version, ".", 4);
}
/**
* Normalizes a version string.
*
* @param version
* String
* @param sep
* String separator
* @param maxWidth
* int
* @return String
*/
public static String normalisedVersion(String version, String sep, int maxWidth) {
if (version == null) {
return null;
}
String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version);
StringBuilder sb = new StringBuilder();
for (String s : split) {
sb.append(String.format("%" + maxWidth + 's', s));
}
return sb.toString();
}
}