blob: 38f7700f663cb5ebc82bc42e94a7f62662360216 [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.util;
public class Version {
private final String version;
private final int majorVersion;
private final int minorVersion;
private final int patchVersion;
private final String qualifier;
public Version(String versionString) {
this.version = versionString;
int major = 0;
int minor = 0;
int patch = 0;
String qualif = "";
int length = version.length();
char car;
int offset = 0;
int type = 0;
int val = 0;
for (; offset < length; offset++) {
car = version.charAt(offset);
if (car < '0' || car > '9') {
switch (type) {
case 0:
major = val;
break;
case 1:
minor = val;
break;
case 2:
patch = val;
qualif = version.substring(offset);
offset = length;
break;
default:
break;
}
type++;
val = 0;
} else {
val = val * 10 + car - 48;
}
}
if (type == 2) {
patch = val;
}
this.majorVersion = major;
this.minorVersion = minor;
this.patchVersion = patch;
this.qualifier = qualif;
}
public String getVersion() {
return version;
}
public int getMajorVersion() {
return majorVersion;
}
public int getMinorVersion() {
return minorVersion;
}
public int getPatchVersion() {
return patchVersion;
}
public String getQualifier() {
return qualifier;
}
/**
* Utility method to check if database version is greater than parameters.
*
* @param major major version
* @param minor minor version
* @param patch patch version
* @return true if version is greater than parameters
*/
public boolean versionGreaterOrEqual(int major, int minor, int patch) {
if (this.majorVersion > major) {
return true;
}
if (this.majorVersion < major) {
return false;
}
/*
* Major versions are equal, compare minor versions
*/
if (this.minorVersion > minor) {
return true;
}
if (this.minorVersion < minor) {
return false;
}
// Minor versions are equal, compare patch version.
return this.patchVersion >= patch;
}
}