@Override public int compareTo(Item item) { if (item == null) { // 1-rc < 1, 1-ga > 1 return comparableQualifier(value).compareTo(RELEASE_VERSION_INDEX); } switch (item.getType()) { case INTEGER_ITEM: return -1; // 1.any < 1.1 ? case STRING_ITEM: return comparableQualifier(value).compareTo(comparableQualifier(((StringItem) item).value)); case LIST_ITEM: return -1; // 1.any < 1-1 default: throw new RuntimeException("invalid item: " + item.getClass()); } }
list.add(new StringItem(version.substring(startIndex, i), true)); startIndex = i;
private static Item parseItem(boolean isDigit, String buf) { return isDigit ? new IntegerItem(buf) : new StringItem(buf, false); }
@Override public boolean isNull() { return (comparableQualifier(value).compareTo(RELEASE_VERSION_INDEX) == 0); }