All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.dennisit.vplus.data.utils.VersionUtils Maven / Gradle / Ivy

There is a newer version: 2.0.8
Show newest version
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"));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy