com.github.dennisit.vplus.data.utils.VersionUtils Maven / Gradle / Ivy
package com.github.dennisit.vplus.data.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@Slf4j
public final class VersionUtils {
private VersionUtils() {
}
/**
* 比较版本大小
*
* @param current 当前版本
* @param target 目标版本
* @param clientType 设备类型
* @return 如果当前版本大于目标版本 结果值大于0
*/
public static int compareVersion(String current, String target, String clientType) {
try {
if (StringUtils.isEmpty(current)) {
return -1;
}
if (StringUtils.isEmpty(target)) {
return 1;
}
if (current.equals(target)) {
return 0;
}
String[] arrA = current.trim().split(" ")[0].split("\\.");
String[] arrB = target.trim().split(" ")[0].split("\\.");
for (int i = 0; i < Math.max(arrA.length, arrB.length); i++) {
if (i == arrA.length && arrA.length != arrB.length) {
return -1;
}
if (i == arrB.length && arrA.length != arrB.length) {
return 1;
}
if (Integer.parseInt(arrA[i]) > Integer.parseInt(arrB[i])) {
return 1;
} else if (Integer.parseInt(arrA[i]) < Integer.parseInt(arrB[i])) {
return -1;
}
}
} catch (Exception e) {
log.error("MobileApp.compareVersion error, return -1. clientType:{}, param version:{}, base version:{}", clientType, current, target, e);
return -1;
}
return 0;
}
/**
* 判断当前版本是否大于目标版本
*
* @param current 当前版本
* @param target 目标版本
* @param clientType 设备类型
* @return 是否高版本
*/
public static boolean isVersionHigher(String current, String target, String clientType) {
return compareVersion(current, target, clientType) > 0;
}
/**
* 判断当前版本是否等于目标版本
*
* @param current 当前版本
* @param target 目标版本
* @param clientType 设备类型
* @return 是否版本相等
*/
public static boolean isVersionEquals(String current, String target, String clientType) {
return compareVersion(current, target, clientType) == 0;
}
public static void main(String[] args) {
System.out.println(isVersionEquals("3.0.0.1", "3.0.0.1", "Android"));
System.out.println(isVersionHigher("3.0.0.01", "3.0.0.1", "Android"));
}
}