Search in sources :

Example 1 with VersionNumberRelation

use of org.eclipse.n4js.semver.SemverMatcher.VersionNumberRelation in project n4js by eclipse.

the class SemverUtils method findClosestMatching.

/**
 * Finds the version in the collection 'versions' that is closest to the given 'toFind'
 */
public static VersionNumber findClosestMatching(Collection<VersionNumber> versions, VersionNumber toFind) {
    if (versions == null || versions.isEmpty()) {
        return null;
    }
    if (null == toFind) {
        return null;
    }
    List<VersionNumber> sortedVersions = new ArrayList<>(versions);
    Collections.sort(sortedVersions, SemverMatcher::compareLoose);
    int index = Collections.binarySearch(sortedVersions, toFind, SemverMatcher::compareLoose);
    if (index > 0) {
        return sortedVersions.get(index);
    }
    VersionNumber current = null;
    for (VersionNumber v : sortedVersions) {
        VersionNumberRelation relation = SemverMatcher.relation(toFind, v);
        if (relation.isGreaterOrEqual()) {
            current = v;
        }
    }
    return current;
}
Also used : VersionNumberRelation(org.eclipse.n4js.semver.SemverMatcher.VersionNumberRelation) ArrayList(java.util.ArrayList) VersionNumber(org.eclipse.n4js.semver.Semver.VersionNumber) VersionRangeConstraint(org.eclipse.n4js.semver.Semver.VersionRangeConstraint)

Aggregations

ArrayList (java.util.ArrayList)1 VersionNumber (org.eclipse.n4js.semver.Semver.VersionNumber)1 VersionRangeConstraint (org.eclipse.n4js.semver.Semver.VersionRangeConstraint)1 VersionNumberRelation (org.eclipse.n4js.semver.SemverMatcher.VersionNumberRelation)1