aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/update/Version.java
blob: a60086facdb5390dcdce3b502f998f487a742c60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package me.shedaniel.rei.update;

public class Version implements Comparable<Version> {
    
    private String version;
    
    public Version(String version) {
        if (version == null)
            throw new IllegalArgumentException("Version can not be null");
        if (!version.matches("[0-9]+(\\.[0-9]+)*"))
            throw new IllegalArgumentException("Invalid version format");
        this.version = version;
    }
    
    @Override
    public final String toString() {
        return this.version;
    }
    
    @Override
    public int compareTo(Version other) {
        if (other == null)
            return 1;
        String[] thisParts = this.toString().split("\\.");
        String[] thatParts = other.toString().split("\\.");
        int length = Math.max(thisParts.length, thatParts.length);
        for(int i = 0; i < length; i++) {
            int thisPart = i < thisParts.length ? Integer.parseInt(thisParts[i]) : 0;
            int thatPart = i < thatParts.length ? Integer.parseInt(thatParts[i]) : 0;
            if (thisPart < thatPart)
                return -1;
            if (thisPart > thatPart)
                return 1;
        }
        return 0;
    }
    
    @Override
    public boolean equals(Object that) {
        if (this == that)
            return true;
        if (that == null)
            return false;
        if (this.getClass() != that.getClass())
            return false;
        return this.compareTo((Version) that) == 0;
    }
    
}