Craig Raw
4 years ago
6 changed files with 95 additions and 65 deletions
@ -0,0 +1,54 @@ |
|||||
|
package com.sparrowwallet.sparrow.net; |
||||
|
|
||||
|
public class Version implements Comparable<Version> { |
||||
|
private final String version; |
||||
|
|
||||
|
public final String get() { |
||||
|
return this.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 int compareTo(Version that) { |
||||
|
if(that == null) { |
||||
|
return 1; |
||||
|
} |
||||
|
String[] thisParts = this.get().split("\\."); |
||||
|
String[] thatParts = that.get().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; |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue