Yair Zaslavsky has uploaded a new change for review. Change subject: core: Adding Version utils ......................................................................
core: Adding Version utils Adding a utility class to serve Version issues both at backend and frontend Change-Id: Ia82d09e755b767f254224c84abd16516592715ac Signed-off-by: Yair Zaslavsky <[email protected]> --- A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VersionUtils.java A backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VersionUtilsTest.java M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml 3 files changed, 58 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/70/18370/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VersionUtils.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VersionUtils.java new file mode 100644 index 0000000..f74d98d --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VersionUtils.java @@ -0,0 +1,41 @@ +package org.ovirt.engine.core.common.utils; + +public class VersionUtils { + + /** + * Compares two Rpm releases The format of Rpm is - Prefix-Version-Release. + * + * @param release1 + * release part of first RPM + * @param release2 + * release part of second RPM + * @return same convention as {@link Comparable.compareTo} + */ + public static int compareRpmRelease(String release1, String release2) { + String[] comps1 = release1.split("\\."); + String[] comps2 = release2.split("\\."); + int i = 0; + while (i < comps1.length && i < comps2.length && comps1[i].equals(comps2[i])) { + i++; + } + if (i == comps1.length && i == comps2.length) { + return 0; + } + else if (i == comps1.length) { + return -1; + } + else if (i == comps2.length) { + return 1; + } + else { + try + { + Long result1 = Long.parseLong(comps1[i]); + Long result2 = Long.parseLong(comps2[i]); + return result1.compareTo(result2); + } catch (NumberFormatException ex) { + return comps1[i].compareTo(comps2[i]); + } + } + } +} diff --git a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VersionUtilsTest.java b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VersionUtilsTest.java new file mode 100644 index 0000000..159b859 --- /dev/null +++ b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VersionUtilsTest.java @@ -0,0 +1,16 @@ +package org.ovirt.engine.core.common.utils; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class VersionUtilsTest { + + @Test + public void testCompareRpmRelease() { + assertEquals(-1, VersionUtils.compareRpmRelease("2.3.10.4.fc18.x86_64", "2.3.10.4.fc19.x86_64")); + assertEquals(1, VersionUtils.compareRpmRelease("20130821.fc18.x86_64", "20130820.fc18.x86_64")); + assertEquals(1, VersionUtils.compareRpmRelease("20130821.0.fc18.x86_64", "20130820.1.fc18.x86_64")); + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index ade328e..74c530d 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -178,6 +178,7 @@ <include name="common/AuditLogSeverity.java" /> <include name="common/users/VdcUser.java" /> <include name="common/utils/EnumUtils.java" /> + <include name="common/utils/VersionUtils.java" /> <include name="common/utils/ListUtils.java" /> <include name="common/utils/ObjectUtils.java" /> <include name="common/utils/VmDeviceType.java" /> -- To view, visit http://gerrit.ovirt.org/18370 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia82d09e755b767f254224c84abd16516592715ac Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yair Zaslavsky <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
