Hello Yair Zaslavsky, I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/7989 to review the following change. Change subject: core: VmDevice implements comparable(#852451) ...................................................................... core: VmDevice implements comparable(#852451) Changed VmDevice to implement Comprable interface. The comparison is based on Id comparing. Id is composed from deviceId and vmId, so the Id comparison algorithm checks: a. compareTo on vmId fields. b. (if result is not 0) compareTo on deviceId fields Change-Id: Ic82521368a4f3c3c518c8cf4e5dc460b9e54f379 Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java A backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/businessentities/VmDeviceTest.java 3 files changed, 74 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/89/7989/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java index 12bcbd2..caa3740 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java @@ -12,7 +12,7 @@ * This BE holds both managed (disk, network interface etc.) and unmanaged (sound, video etc.) devices. */ -public class VmDevice extends IVdcQueryable implements BusinessEntity<VmDeviceId> { +public class VmDevice extends IVdcQueryable implements BusinessEntity<VmDeviceId>, Comparable<VmDevice> { /** * Needed for java serialization/deserialization mechanism. @@ -301,4 +301,9 @@ sb.append("}"); return sb.toString(); } + + @Override + public int compareTo(VmDevice rhs) { + return getId().compareTo(rhs.getId()); + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java index 9366938..ccc0467 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java @@ -11,7 +11,7 @@ @Embeddable @TypeDef(name = "guid", typeClass = GuidType.class) -public class VmDeviceId implements Serializable { +public class VmDeviceId implements Serializable,Comparable<VmDeviceId> { /** * @@ -86,4 +86,14 @@ public void setVmId(Guid vmId) { this.vmId = vmId; } + + @Override + public int compareTo(VmDeviceId rhs) { + int vmComparsion = getVmId().compareTo(rhs.getVmId()); + if (vmComparsion == 0) { + return getDeviceId().compareTo(rhs.getDeviceId()); + } else { + return vmComparsion; + } + } } diff --git a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/businessentities/VmDeviceTest.java b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/businessentities/VmDeviceTest.java new file mode 100644 index 0000000..b8b3840 --- /dev/null +++ b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/businessentities/VmDeviceTest.java @@ -0,0 +1,57 @@ +package org.ovirt.engine.core.common.businessentities; + +import org.junit.Test; +import org.ovirt.engine.core.compat.Guid; +import static org.junit.Assert.*; + +public class VmDeviceTest { + + + public void testSelfAndIdentifyEquality() { + Guid vmId = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2463"); + Guid deviceId = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2464"); + VmDevice device1 = createVmDevice(deviceId, vmId); + assertTrue(device1.compareTo(device1) == 0); + VmDevice device2 = createVmDevice(deviceId, vmId); + assertTrue(device1.compareTo(device2) == 0); + + } + @Test + public void testCompareToVmIdsAreEqual() { + //b23ad6d7-0df8-4d69-b4e5-d5b5e90c2463 + Guid vmId = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2463"); + Guid deviceId1 = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2464"); + Guid deviceId2 = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2465"); + VmDevice device1 = createVmDevice(deviceId1, vmId); + VmDevice device2 = createVmDevice(deviceId2, vmId); + assertCompareTo(device1, device2); + + } + + @Test + public void testCompareToVmIdsAreNotEqual() { + Guid vmId1 = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2463"); + Guid vmId2 = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2464"); + Guid deviceId1 = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2465"); + Guid deviceId2 = Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2466"); + VmDevice device1 = createVmDevice(deviceId1, vmId1); + VmDevice device2 = createVmDevice(deviceId2, vmId2); + assertCompareTo(device1, device2); + //Test in case the device IDs are equal + device1 = createVmDevice(deviceId1, vmId1); + device2 = createVmDevice(deviceId1, vmId2); + assertCompareTo(device1, device2); + } + + private void assertCompareTo(VmDevice device1, VmDevice device2) { + assertTrue(device2.compareTo(device1) > 0); + assertTrue(device1.compareTo(device2) < 0); + } + + private VmDevice createVmDevice(Guid deviceId, Guid vmId) { + VmDevice device = new VmDevice(); + device.setId(new VmDeviceId(deviceId, vmId)); + return device; + + } +} -- To view, visit http://gerrit.ovirt.org/7989 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic82521368a4f3c3c518c8cf4e5dc460b9e54f379 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Eli Mesika <emes...@redhat.com> Gerrit-Reviewer: Yair Zaslavsky <yzasl...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches