package io.vivarium.util; import com.google.common.base.Preconditions; import lombok.EqualsAndHashCode; @EqualsAndHashCode public class Version { private static final int CURRENT_MAJOR = 0; private static final int CURRENT_MINOR = 3; private static final int CURRENT_PATCH = 2; public static final int FILE_FORMAT_VERSION = 1; public static final int NETWORK_PROTOCOL_VERSION = 1; public static final Version CURRENT_VERSION = new Version(); private final int major; private final int minor; private final int patch; private Version() { major = CURRENT_MAJOR; minor = CURRENT_MINOR; patch = CURRENT_PATCH; } public Version(int major, int minor, int patch) { this.major = major; this.minor = minor; this.patch = patch; } @Override public String toString() { return major + "." + minor + "." + patch; } public int[] toArray() { return new int[] { major, minor, patch }; } public Version(String string) { String[] chunks = string.split("\\."); if (chunks.length == 3) { this.major = Integer.parseInt(chunks[0]); this.minor = Integer.parseInt(chunks[1]); this.patch = Integer.parseInt(chunks[2]); } else { throw new IllegalArgumentException("Unable to parse version not in format X.Y.Z: " + string); } } public Version(int[] versionNumbers) { Preconditions.checkArgument(versionNumbers.length == 3, "Input array for a version must be three elements"); this.major = versionNumbers[0]; this.minor = versionNumbers[1]; this.patch = versionNumbers[2]; } }