package ru.gravit.utils; import java.util.Objects; import ru.gravit.launcher.LauncherAPI; public class Version { @LauncherAPI public final int major; @LauncherAPI public final int minor; @LauncherAPI public final int patch; @LauncherAPI public final int build; @LauncherAPI public final Type release; @LauncherAPI public Version(int major, int minor, int patch) { this.major = major; this.minor = minor; this.patch = patch; build = 0; release = Type.UNKNOWN; } @LauncherAPI public Version(int major, int minor, int patch, int build) { this.major = major; this.minor = minor; this.patch = patch; this.build = build; release = Type.UNKNOWN; } @LauncherAPI public Version(int major, int minor, int patch, int build, Type release) { this.major = major; this.minor = minor; this.patch = patch; this.build = build; this.release = release; } @Override @LauncherAPI public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Version that = (Version) o; return major == that.major && minor == that.minor && patch == that.patch && build == that.build; } @LauncherAPI public String getVersionString() { return String.format("%d.%d.%d", major, minor, patch); } @Override @LauncherAPI public int hashCode() { return Objects.hash(major, minor, patch, build); } @LauncherAPI public String getReleaseStatus() { String result; switch (release) { case LTS: result = "lts"; break; case STABLE: result = "stable"; break; case BETA: result = "beta"; break; case ALPHA: result = "alpha"; break; case DEV: result = "dev"; break; case EXPERIMENTAL: result = "experimental"; break; case UNKNOWN: result = ""; break; default: result = ""; break; } return result; } @Override @LauncherAPI public String toString() { return String.format("%d.%d.%d-%d %s", major, minor, patch, build, getReleaseStatus()); } @LauncherAPI public enum Type { LTS, STABLE, BETA, ALPHA, DEV, EXPERIMENTAL, UNKNOWN } }