r1678 - in trunk: . src/main/java/org/nuiton/util src/test/java/org/nuiton/util
Author: tchemit Date: 2009-09-03 19:08:12 +0200 (Thu, 03 Sep 2009) New Revision: 1678 Modified: trunk/changelog.txt trunk/pom.xml trunk/src/main/java/org/nuiton/util/VersionUtil.java trunk/src/test/java/org/nuiton/util/VersionUtilTest.java Log: Evolution #39: add a Filter method in VersionUtil bump versions Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2009-08-25 22:39:54 UTC (rev 1677) +++ trunk/changelog.txt 2009-09-03 17:08:12 UTC (rev 1678) @@ -1,4 +1,11 @@ -ver 1.1.0 ? +1.1.1 chemit 20090903 + + * [FEATURE] #39 add a filterVersions method in VersionUtil + +-- chemit -- Thu, 03 Sep 2009 18:51:54 +0200 + + +ver 1.1.0 20090830 * can auto-load converters at runtime via a ServiceLoader mecanism (see org.nuiton.util.ConverterUtil#initConverters() ) * migrate to org.nuiton groupId Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2009-08-25 22:39:54 UTC (rev 1677) +++ trunk/pom.xml 2009-09-03 17:08:12 UTC (rev 1678) @@ -10,7 +10,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>mavenpom</artifactId> - <version>1.0.1</version> + <version>1.0.2</version> </parent> <artifactId>nuiton-utils</artifactId> Modified: trunk/src/main/java/org/nuiton/util/VersionUtil.java =================================================================== --- trunk/src/main/java/org/nuiton/util/VersionUtil.java 2009-08-25 22:39:54 UTC (rev 1677) +++ trunk/src/main/java/org/nuiton/util/VersionUtil.java 2009-09-03 17:08:12 UTC (rev 1678) @@ -23,6 +23,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Set; import java.util.regex.Pattern; /** @@ -194,6 +195,41 @@ } /** + * Filter versions. + * + * @param versions versions to filter + * @param min min version to accept + * @param max max version to accept + * @param includeMin flag to include min version + * @param includeMax flag to include max version + * @return versions between min and max + */ + public static List<Version> filterVersions(Set<Version> versions, Version min, Version max, boolean includeMin, boolean includeMax) { + List<Version> toApply = new ArrayList<Version>(); + for (Version v : versions) { + int t; + if (min != null) { + t = v.compareTo(min); +// if (v.compareTo(min) <= 0) { + if (t < 0 || (t == 0 && !includeMin)) { + // version trop ancienne + continue; + } + } + if (max != null) { + t = v.compareTo(max); +// if (v.compareTo(max) > 0) { + if (t > 0 || (t == 0 && !includeMax)) { + // version trop recente + continue; + } + } + toApply.add(v); + } + return toApply; + } + + /** * Le contrat d'un comparateur de versions permettant de controler * l'ordre du numero de version, classifier et numero de classifer. * Modified: trunk/src/test/java/org/nuiton/util/VersionUtilTest.java =================================================================== --- trunk/src/test/java/org/nuiton/util/VersionUtilTest.java 2009-08-25 22:39:54 UTC (rev 1677) +++ trunk/src/test/java/org/nuiton/util/VersionUtilTest.java 2009-09-03 17:08:12 UTC (rev 1678) @@ -23,6 +23,8 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import java.util.regex.Matcher; import org.junit.Test; import static org.junit.Assert.*; @@ -229,6 +231,92 @@ } } + /** + * Test of filterVersions method, of class VersionUtil. + */ + @Test + public void testFilterVersions() { + + Set<Version> versions = new TreeSet<Version>(); + Version v1 = new Version(1); + Version v2 = new Version(2); + Version v3 = new Version(3); + Version v4 = new Version(4); + Version v5 = new Version(5); + versions.add(v1); + versions.add(v2); + versions.add(v3); + versions.add(v4); + versions.add(v5); + + List<Version> actual; + + // filter [0,0] = [] + actual = VersionUtil.filterVersions(versions, Version.VZERO, Version.VZERO, true, true); + assertVersionsEquals(actual); + + // filter [0,1[ = [] + actual = VersionUtil.filterVersions(versions, Version.VZERO, v1, true, false); + assertVersionsEquals(actual); + + // filter [0,1] = [1] + actual = VersionUtil.filterVersions(versions, Version.VZERO, v1, true, true); + assertVersionsEquals(actual, v1); + + // filter [0,2[ = [1] + actual = VersionUtil.filterVersions(versions, Version.VZERO, v2, true, false); + assertVersionsEquals(actual, v1); + + // filter [0,2] = [1,2] + actual = VersionUtil.filterVersions(versions, Version.VZERO, v2, true, true); + assertVersionsEquals(actual, v1, v2); + + // filter [1,2] = [1,2] + actual = VersionUtil.filterVersions(versions, v1, v2, true, true); + assertVersionsEquals(actual, v1, v2); + + // filter ]1,2] = [2] + actual = VersionUtil.filterVersions(versions, v1, v2, false, true); + assertVersionsEquals(actual, v2); + + // filter [2,2] = [2] + actual = VersionUtil.filterVersions(versions, v2, v2, true, true); + assertVersionsEquals(actual, v2); + + // filter ]2,2] = [2] + actual = VersionUtil.filterVersions(versions, v2, v2, false, true); + assertVersionsEquals(actual); + + // filter ]2,2[ = [] + actual = VersionUtil.filterVersions(versions, v2, v2, false, false); + assertVersionsEquals(actual); + + // filter ]Null,2[ = [1] + actual = VersionUtil.filterVersions(versions, null, v2, false, false); + assertVersionsEquals(actual, v1); + + // filter [Null,2[ = [1] + actual = VersionUtil.filterVersions(versions, null, v2, true, false); + assertVersionsEquals(actual, v1); + + // filter ]Null,2] = [1,2] + actual = VersionUtil.filterVersions(versions, null, v2, false, true); + assertVersionsEquals(actual, v1, v2); + + // filter ]Null,Null[ = [1,2,3,4,5] + actual = VersionUtil.filterVersions(versions, null, null, false, false); + assertVersionsEquals(actual, v1, v2, v3, v4, v5); + + // filter ]2,Null[ = [3,4,5] + actual = VersionUtil.filterVersions(versions, v2, null, false, false); + assertVersionsEquals(actual, v3, v4, v5); + + // filter [2,Null[ = [2,3,4,5] + actual = VersionUtil.filterVersions(versions, v2, null, true, false); + assertVersionsEquals(actual, v2, v3, v4, v5); + + } + protected static void compareVersions(int order, Iterable<Version> versions) { Iterator<Version> iterator = versions.iterator(); @@ -274,4 +362,13 @@ } } } + + private void assertVersionsEquals(List<Version> actual, Version... expected) { + assertEquals(expected.length, actual.size()); + int i = 0; + for (Version a : actual) { + Version e = expected[i++]; + assertEquals(a, e); + } + } }
participants (1)
-
tchemit@users.nuiton.org