package hudson.plugins.jira.versionparameter;
import com.atlassian.jira.rest.client.api.domain.Version;
import java.util.Comparator;
import org.apache.maven.artifact.versioning.ComparableVersion;
/**
* This comparator can ordering the following formats versions:
* 9.9.9.9.9
* V-5.2.3
* PDFREPORT-2.3.4
* PDFREPORT-2.3
* 1.12.2.3.4
* 1.3.4
* 1.1.1.2
* 1.1.1.1
*/
public class VersionComparator implements Comparator<Version> {
public int compare(Version rev1, Version rev2) {
ComparableVersion comparableVersion1 = new ComparableVersion(getNumberVersion(rev1.getName()));
ComparableVersion comparableVersion2 = new ComparableVersion(getNumberVersion(rev2.getName()));
int comparisonResult = comparableVersion2.compareTo(comparableVersion1);
if (comparisonResult == 0) {
comparableVersion1 = new ComparableVersion(rev1.getName());
comparableVersion2 = new ComparableVersion(rev2.getName());
comparisonResult = comparableVersion1.compareTo(comparableVersion2);
}
return comparisonResult;
}
/**
* For the cases like this:
* PDFREPORT-2.3.4
* return this
* 2.3.4
*/
private String getNumberVersion(String firstV) {
String res = firstV;
if (!firstV.matches("[0-9.]+") && firstV.contains("-")) {
res = firstV.split("-")[1];
}
return res;
}
}