package org.zstack.utils;
import java.util.ArrayList;
import java.util.List;
/**
* Created by xing5 on 2016/5/18.
*/
public class VersionComparator {
private String version;
private List<Integer> elements = new ArrayList<Integer>();
public VersionComparator(String version) {
this.version = version;
try {
String[] els = version.split("\\.");
for (String e : els) {
elements.add(Integer.valueOf(e));
}
} catch (NumberFormatException e) {
throw new RuntimeException(String.format("%s is not a valid version", version), e);
}
}
public int compare(String ver) {
VersionComparator c = new VersionComparator(ver);
return compare(c);
}
public int compare(VersionComparator v) {
List<Integer> him = new ArrayList<Integer>();
him.addAll(v.elements);
List<Integer> me = new ArrayList<Integer>();
me.addAll(elements);
if (me.size() > him.size()) {
int diff = me.size() - him.size();
for (int i=0; i<diff; i++) {
him.add(0);
}
} else if (him.size() > me.size()) {
int diff = him.size() - me.size();
for (int i=0; i<diff; i++) {
me.add(0);
}
}
for (int i=0; i<me.size(); i++) {
Integer m = me.get(i);
Integer h = him.get(i);
if (m.equals(h)) {
continue;
}
return m > h ? 1 : -1;
}
return 0;
}
}